tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
19
ZUGRIFFE
1396
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Grunge
    Grunge Grunge ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Braunschweig
    Beiträge
    398
    Hey Leute...total simples beispiel doch dieses bißchen PHP bringt meine ganze Seite durcheinander.

    ALSO. . .

    Es ist wie folgt: In einer Liste sollen alle User angezeigt werden, die momentan "online" sind. Funktioniert im übrigen einwandfrei. Danach soll jedes gefundene Datenbankeintrag verwendet werden, um das entsprechende Foto dieses Users zu laden. Doch das macht mein Script eben nicht. Ich hab die Seite schritt für schritt auskommentiert um den Fehler zu finden. Und ich habe ihn, weiß nur nicht wieso das falsch ist.

    Schaut selbst:
    PHP-Code:
    <select onchange="document.getElementById('imgID').src=this.options[this.selectedIndex].value;" style="height:190px; font:Verdana, Arial, Helvetica, sans-serif; font-size:12px; color:#FFFFFF; width:100%; background-color:#a3915a; border:none;  " name="select" size="10" id="select">
          
          <?
          
          
    //Einträge bearbeiten
          
    $query "
        SELECT
                 `online_user`
          FROM
                `g2g_online`
          WHERE
                UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`online_time`) <= 180 ORDER BY online_user ASC "

                
                
                
                
    $onr=mysql_query($query) or die(mysql_error());
                while(
    $row=mysql_fetch_assoc($onr)){
                
    $user=$row['online_user'];                    
                    echo 
    " <option value=\"".imageGet($user)."\">".$user."</option>";
                }
          
    ?>
          
          </select>
    Die Funktion, die ich nur formuliert habe, weil ich dachte es bringe was sieht so aus:

    PHP-Code:
    function imageGet($nick)
    {
                            
    $img="SELECT * FROM g2g_user_images WHERE nick='".$nick."' AND standard='1'";
                            
    $result=mysql_query($sql) or die(mysql_error());            
    if(
    mysql_num_rows($result)==0){
          return 
    $img="user_images/no_img.jpg";
          }else{
          
    $img=mysql_fetch_assoc($result);
          return 
    $img=$img['img'];
          }

    die Zeile die Probleme macht, ist folgende:
    PHP-Code:
    $result=mysql_query($sql) or die(mysql_error()); 
    Denn dann funktioniert alles. Zwar gibts kein Foto, aber immerhin wird die Seite richtig zu Ende aufgebaut und die Liste wird mit Werten gefüllt. Ich denke mal dass es nicht ausschließlich an dieser einen Zeile liegt, denn die scheint ja richtig zu sein, aber hoffe das ihr nen Grund kennt. Jedenfalls wenn ich die Zeile auskommentiere/lösche, gibt es keine Probleme. . . Fehlermeldungen kommen nicht. . .

    BESTEN DANK IM VORRAUS

    Ben
     
    <font color="#FF0000"><i>Besucht auch die <a href="http://www.dbcrew.board********" target="new">dbcrew</a> und verpasst nicht das beste:</i></font>

  2. #2
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    eine DB-Abfrage innerhalb einer while-Schleife ist aber schon übel...
    Warum liest Du die Bilder nicht über einen JOIN gleich mit aus?

    LG
     

  3. #3
    Avatar von Grunge
    Grunge Grunge ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Braunschweig
    Beiträge
    398
    wie meinst du das? kannst du mir ien beispiel geben!?
     
    <font color="#FF0000"><i>Besucht auch die <a href="http://www.dbcrew.board********" target="new">dbcrew</a> und verpasst nicht das beste:</i></font>

  4. #4
    SimonErich SimonErich ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    303
    Hallo @Grunge

    Er meint das hier:
    Mysql Join

    Mit einem Join kannst du Tabellen mit einem query verbinden.
    Der Vorteil liegt darin, dass du nicht 1000 Queries machen musst, sondern einer.

    Und eines der performancelastigsten Dinge sind Mysql Queries.

    Villeicht am anfang etwas verwirrend, aber du wirst sie schnell lieben lernen

    Grüße SimonErich
     

  5. #5
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Auf der Seite, die ich Dir verlinkt habe, sind doch Beispiele vorhanden. Aber bei einer Reaktionszeit von 3 Minuten hast Du vermutlich gar nicht draufgeklickt?
    Du bräuchtest einen INNER JOIN.

    LG
     

  6. #6
    SimonErich SimonErich ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    303
    @kuddeldaddeldu

    ich kannte diese gar nicht bzw. wusste nicht, dass selfhtml auch mysql beiträge hat.
    Aber danke. Die ist wirklich sehr viel einfacher zu verstehen als das Mysql Manual
     

  7. #7
    Avatar von Grunge
    Grunge Grunge ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Braunschweig
    Beiträge
    398
    nene habe es nur zu spät gesehen =)

    also ich habe mich mal dran versucht. . . Aber irgendwie fehlt mir noch das praktische verständnis, um das zu verstehen und richtig auszuführen . . .Schaut mal:

    PHP-Code:
                $sql="SELECT
        online_user,
        g2g_user_images.img,
    FROM g2g_online
    INNER JOIN g2g_user_images ON g2g_online.online_user = g2g_user_images.nick"

    Ausgabe ist leer. . .Kann mir jemand helfen?
     
    <font color="#FF0000"><i>Besucht auch die <a href="http://www.dbcrew.board********" target="new">dbcrew</a> und verpasst nicht das beste:</i></font>

  8. #8
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    das Prinzip hast Du doch schon verstanden. Genauso müsstest Du jetzt eigentlich alle Benutzer samt der Bilder bekommen. Hast Du das Statement mal in phpMyAdmin ausprobiert?

    @Simon: Die beiden Self-Artikel sind wirklich nett für Leute, die noch nie etwas von Joins gehört haben. Das Manual ist da doch etwas... äh ... sperrig.

    LG
     

  9. #9
    Avatar von Grunge
    Grunge Grunge ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Braunschweig
    Beiträge
    398
    kommt nichts, ich krieg den gleichen "Fehler" wie vorher . ..
     
    <font color="#FF0000"><i>Besucht auch die <a href="http://www.dbcrew.board********" target="new">dbcrew</a> und verpasst nicht das beste:</i></font>

  10. #10
    SimonErich SimonErich ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    303
    @Grunge

    Bitte schau dir mal dein Statement genau an.
    Du hast im Bereich zwischen SELECT und FROM einen Beistrich zu viel.
    Bild mal bitte ein or mysql_error(); an dein Mysql Query dran, dann würdest du das sehen.

    @kuddeldaddeldu
    Ja stimmt.

    Grüße Simon
     

  11. #11
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    da ist ein Syntax-Fehler drin, den sowohl phpMyAdmin als auch die Funktion mysql_error() melden müssten. Das Komma hinter dem letzten selektierten Feld muss weg.

    LG
     

  12. #12
    Avatar von Grunge
    Grunge Grunge ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Braunschweig
    Beiträge
    398
    stimmt. . . das problem ist, dass er nun alle, die irgendwann mal online waren und ein bild beseitzen ausgibt. Das ist ne menge =) wie kann ich
    a) mit einbringen das es sich in der Tabelle von den bilder um standard=1 handeln muss
    b) meine Bedingung das der benutzer momentan online sein muss?
     
    <font color="#FF0000"><i>Besucht auch die <a href="http://www.dbcrew.board********" target="new">dbcrew</a> und verpasst nicht das beste:</i></font>

  13. #13
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    na, mit Deinen WHERE-Klauseln halt, die Du dann einfach mit AND verknüpfst.

    LG
     

  14. #14
    Avatar von Grunge
    Grunge Grunge ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Braunschweig
    Beiträge
    398
    Okay wusste nicht, dass es so einfach ist. . . mhh nun gibts noch ein problem. er zeigt mir nur einen eintrag an...

    PHP-Code:
                $sql="SELECT
        online_user,
        g2g_user_images.img
    FROM g2g_online
    INNER JOIN g2g_user_images ON g2g_online.online_user = g2g_user_images.nick WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`online_time`) <= 180 AND g2g_user_images.standard='1' ORDER BY online_user ASC"
    ;

                
                
    $onr=mysql_query($sql) or die(mysql_error()); 
    das ist meine abfrage
     
    <font color="#FF0000"><i>Besucht auch die <a href="http://www.dbcrew.board********" target="new">dbcrew</a> und verpasst nicht das beste:</i></font>

  15. #15
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    sieht aber richtig aus, die Abfrage. Bist Du sicher, dass mit den Daten alles stimmt?

    LG
     

Ähnliche Themen

  1. Abfrage SQL bringt falsches Ergebnis?
    Von vms01 im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 24.03.10, 14:40
  2. Antworten: 8
    Letzter Beitrag: 22.08.09, 03:31
  3. Antworten: 2
    Letzter Beitrag: 24.03.05, 21:05
  4. MYSQL Abfrage in while - Schleife
    Von gisi im Forum PHP
    Antworten: 3
    Letzter Beitrag: 05.01.05, 23:13
  5. Probleme mit Abfrage in Schleife
    Von encom im Forum PHP
    Antworten: 3
    Letzter Beitrag: 10.09.04, 18:48