while-Schleife; jQuery Problem

  • N'abend..

    Ich stehe momentan vor einem kleinen Problem.

    Ich habe eine Datenbankabfrage mittles einer While-Schleife, die mir Benutzer aus einer Tabelle ausliest.

    Jetzt möchte ich per jQuery nähere Informationen des Benutzers in einer anderen Tabellenspalte aufzeigen, wenn auf einen Pfeil gedrückt wurde.

    Jetzt werden ja mehrere Benutzer ausgelesen und so habe ich die jQuery "Abfrage" so gestaltet, dass sie sich an der ID des jeweiligen Benutzers orientiert:

    Hier erstmal die Source-Codes:

    team.php

    jquery.js

    PHP
    $(".t_but").click(function() {
    			var team = $("#hid_id").serialize(); 
    			$("#team_r").load("lib/team_m.php?"+team);
    		});

    Jetzt habe ich das Problem, dass ich immer nur die ID des ersten Benutzers in der Variable "team" vorfinde.

    Weiss jemand von euch was zu tun ist ?

    Wäre sehr glücklich wenn jmd. helfen könnte.

    MfG XantypiaxD

    Einmal editiert, zuletzt von XantypiaxD (11. November 2010 um 22:12)

  • nur mal so am rande... wieso machst du das überhaupt so?
    so wie ich das grad sehe machst du nochmal einen zusätzlichen request und schiesst damit ne weitere query auf die db ab, richtig?
    ich an deiner stelle würde die benötigten infos in andere nicht sichtbare container laden und nur eine abfrage starten, so kannst du dann ganz normal das anzeigen, was du anzeigen willst und brauchst keine weiteren requests.

    aber nun zu deinem problem :)
    du vergibst dort eine ID mehrfach

    Code
    [COLOR=#000000][COLOR=#007700] <[/COLOR][COLOR=#0000BB]input type[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"hidden" [/COLOR][COLOR=#0000BB]name[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"mit_id" [/COLOR][COLOR=#0000BB]value[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"'.$st8->id.'" [/COLOR][COLOR=#0000BB]id[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"hid_id"[/COLOR][COLOR=#007700]> [/COLOR][/COLOR]

    bei jedem durchlauf hat das ding die gleiche id, das heisst bei 8 durchläufen der schleife haste das element mit der id 8 mal drin..
    ich denke mal, dass dort der kanckpunkt liegt, was aber (meiner meinung nach) ohne link oder dump schlecht zu sagen is

  • aber nun zu deinem problem :)
    du vergibst dort eine ID mehrfach

    Code
    [COLOR=#000000][COLOR=#007700] <[/COLOR][COLOR=#0000BB]input type[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"hidden" [/COLOR][COLOR=#0000BB]name[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"mit_id" [/COLOR][COLOR=#0000BB]value[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"'.$st8->id.'" [/COLOR][COLOR=#0000BB]id[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"hid_id"[/COLOR][COLOR=#007700]> [/COLOR][/COLOR]

    bei jedem durchlauf hat das ding die gleiche id, das heisst bei 8 durchläufen der schleife haste das element mit der id 8 mal drin..
    ich denke mal, dass dort der kanckpunkt liegt, was aber (meiner meinung nach) ohne link oder dump schlecht zu sagen is



    Dass habe ich jetzt auch schon heraus gefunden. Wenn ich dem input-Element eine "class" anstatt "id" zuweise alle ID's ausgegeben:

    Bei 2 Ausgaben also so : mit_id=1&mit_id=2

    Aber dass bringt mir auch nicht viel, denn wenn ich nun den ersten User anklicke bekomme ich (mit_id=1&mit_id=2) und beim zweiten User auch.

  • Naja, wenn bei jedem Team das hidden-field die gleiche ID hat, woher soll jquery dann wissen aus welchem hidden-Feld es die ID nehmen soll?
    Du kannst das hiddenfeld entfernen.
    Dann vergibst du in .t_but noch als ID eben die aktuelle id:

    HTML
    <td class="t_but" rowspan="2" id="'.$st8->id.'"></td>

    Deine jquery.js änderst du dann folgendermaßen:

    PHP
    $(".t_but").click(function() { 
                var team = $(this).attr("id");  
                $("#team_r").load("lib/team_m.php?"+team); 
            });


    $(this) ist genau das td-Element, welches das click-Event auslöst. Damit bekommst du dann über das Attribut "id" die passende ID zurückgeliefert.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • nur mal so am rande... wieso machst du das überhaupt so?
    so wie ich das grad sehe machst du nochmal einen zusätzlichen request und schiesst damit ne weitere query auf die db ab, richtig?
    ich an deiner stelle würde die benötigten infos in andere nicht sichtbare container laden und nur eine abfrage starten, so kannst du dann ganz normal das anzeigen, was du anzeigen willst und brauchst keine weiteren requests.


    Also ich muss sagen, ich würde es genauso machen wie er. Der eine Request sollte nicht viel Leistung kosten. Alle Infos für jeden User vorzuladen erzeugt da doch deutlich mehr Last. Ich lade lieber die Übersichtsseite schnell, und dann die Infos zu den paar Teams die mich vermutlich nur interessieren kurz nachzuladen, als auf die Übersicht länger zu warten, weil möglicherweise jede Menge Infos mitgeladen werden, die mich gar nicht interessieren.

    @Xantypia mal noch:
    http://www.php-faq.de/q-sql-select.html

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • naja ich denke da is die qual der wahl jedem entwickler überlassen und an sich müsste man ausrechnen was da sinnvoller ist..
    aber stell dir mal vor das sdie seite 1000 besucher hat die nahezu gleichzeitig die infos ansehen wollen, da haste bei meiner variante 1000 zugriffe in kurzer zeit auf die db (ok sollte jede db verpacken) und was wenn diese 1000 user sich jetzt nach und nach alle ansehen? also da haste nen vielfaches an queries. und pro query holste ja nich nur die daten ab, sondern hast ja auch immer nen overhead an infos im request.

    ich glaub das is reine rechnerei und theorie an der stelle oder irre ich da? und die zeit die du vorher fürs laden sparst brauchste später auch als vielfaches.
    wäre eigentlich echt ma nen testscript wert.. :)

  • Also ich muss sagen, ich würde es genauso machen wie er. Der eine Request sollte nicht viel Leistung kosten. Alle Infos für jeden User vorzuladen erzeugt da doch deutlich mehr Last. Ich lade lieber die Übersichtsseite schnell, und dann die Infos zu den paar Teams die mich vermutlich nur interessieren kurz nachzuladen, als auf die Übersicht länger zu warten, weil möglicherweise jede Menge Infos mitgeladen werden, die mich gar nicht interessieren.

    @Xantypia mal noch:
    http://www.php-faq.de/q-sql-select.html


    ups.. ty ;) hab ich ganz vergessen.

  • Naja, ich würde sagen es ist abhängig von der Situation.
    Wenn es eine recht kurze Liste ist, bei der zu jedem Punkt nicht allzuviele Infos kommen, und es sich aber um eine hochfrequentierte Seite handelt, dann sollte man lieber im ersten Request gleich die paar Infos mitladen.
    Wenn es sich aber um lange Listen handelt, wo zu jedem Punkt sehr viele Infos angezeigt werden, und es sich um eine interne Seite mit wenigen Besuchern handelt, dann sollte man die Ajax-Variante wählen.

    Also je nach Anforderung abwägen was sinnvoller ist. :)

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • joa mein reden :)



    Ja richtig :D
    War nur auf die Idee mit dem Testscript bezogen. Das müsste schon recht komplex aufgebaut sein um die verschiedenen Anforderungen adäquat zu messen. Wobei es in den meisten Fällen auch mit etwas gesundem Menschenverstand und eventuell ein paar Auswertungsstatistiken recht passend erkennbar sein sollte, welche Variante zu bevorzugen ist.
    Ich programmiere halt seit 2 Jahren hauptsächlich an einer rein internen Auftragsverwaltung mit Kunden-Backend, wo nichtmal 3-stellige Besucherzahlen zustande kommen, dafür aber recht komplexe Berechnungen und Datenbankabfragen auf teilweise sehr umfangreiche Datenmengen stattfinden. Und da ist die Ajax-Variante eigentlich immer zu bevorzugen, da für einen normalen Seitenaufruf schon teilweise 300-400 Queries und mehrere Tausend Zeilen HTML/JS-Quellcode zusammen kommen. :D
    Daher denke ich meistens als erstes an Optimierungen für solche Anforderungen. Mag nicht immer passend sein. ^^

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

    Einmal editiert, zuletzt von SinnlosS (11. November 2010 um 22:39)

  • Nicht nur an unnötige Datenbankrequests denken , in dem Fall auch unnötige HTTP/TCP Requests

    mfg

  • Nicht nur an unnötige Datenbankrequests denken , in dem Fall auch unnötige HTTP/TCP Requests

    mfg



    Yoa, ich für meinen Teil meinte auch die HTTP-Requests.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook