Problem SQL-Query

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem SQL-Query

    Hi Leutz,

    hab mir folgende Function geschrieben, die dazu dient neue User in meine community hinzuzufügen. Dabei wird unterschieden ob ein User nur Daten angibt oder zusätzlich ein Bild zum Upload angibt.
    Mein Problem: das ausgewählte Bild wird auf den Server kopiert, aber seltsamer weise nicht in die DB eingetragen. SQL-Fehlercode erscheint auch keiner.

    Hier der Code:

    PHP-Code:
    function add_data() {
                
                global 
    $db,$func;

                    


                        
    $this->fetch_sessiondata();

                        
    $this->generate_password();
                        
                        if(
    $_FILES[file][tmp_name] == ""// if there is no file selected
                        
    {
                            
    //
                            // Insert Data into Database
                            //

                            
    $add_query $db->query("INSERT INTO 
                                                        
    {$GLOBALS["config"]["tables"]["user"]} 
                                                    SET
                                                        username    = '
    $this->username',
                                                        password    = '
    $this->md5_password',
                                                        type        = '
    $this->type',
                                                        school        = '
    $this->school',
                                            
                                                        firstname    = '
    $this->firstname',
                                                        name         = '
    $this->name',
                                                        tag         = '
    $this->tag',
                                                        monat        = '
    $this->monat',
                                                        jahr        = '
    $this->jahr',
                                            
                                                        street      = '
    $this->street',
                                                        city        = '
    $this->city',
                                                        plz            = '
    $this->plz',
                                            
                                                        handy        = '
    $this->handy',
                                                        email        = '
    $this->email',
                                                        icq            = '
    $this->icq',
                                                        url         = '
    $this->url',
                                                        userpic        = 'nopic.jpg'
                                                        "
    );


                            
    $this->remove_sessiondata();

                            
    $last_id $db->insert_id();

                            
    $this->userid $last_id;

                            
    $add_query2 $db->query(    "INSERT INTO 
                                                            
    {$GLOBALS["config"]["tables"]["usersettings"]} 
                                                        SET
                                                            userid         = '
    $last_id'
                                                        "
    );
                            
    $add_query3 $db->query(    "UPDATE 
                                                            
    {$GLOBALS["config"]["tables"]["user"]} 
                                                        SET
                                                            ugbid         = '
    $last_id'
                                                        WHERE
                                                            userid         = '
    $last_id'
                                                        "
    );




                            if(    
    $add_query    == AND
                                
    $add_query2   == AND
                                
    $add_query3      == 1                                
                            

                            {

                                
    $func->confirmation("Der User <b> $this->username </b> wurde erfolgreich eingetragen. Sein Passwort lautet <b>".$this->password."</b>","");

                            } 
    // if query was succesfully
                        
    }
                        else
                        {
                            
    //
                            // Insert Data into Database
                            //
                            
    $add_query $db->query("INSERT INTO 
                                                        
    {$GLOBALS["config"]["tables"]["user"]} 
                                                    SET
                                                        username    = '
    $this->username',
                                                        password    = '
    $this->md5_password',
                                                        type        = '
    $this->type',
                                                        school        = '
    $this->school',
                                            
                                                        firstname    = '
    $this->firstname',
                                                        name         = '
    $this->name',
                                                        tag         = '
    $this->tag',
                                                        monat        = '
    $this->monat',
                                                        jahr        = '
    $this->jahr',
                                            
                                                        street      = '
    $this->street',
                                                        city        = '
    $this->city',
                                                        plz            = '
    $this->plz',
                                            
                                                        handy        = '
    $this->handy',
                                                        email        = '
    $this->email',
                                                        icq            = '
    $this->icq',
                                                        url         = '
    $this->url'
                                                        "
    );


                            
    $this->remove_sessiondata();

                            
    $last_id $db->insert_id();

                            
    $this->userid $last_id;

                            
    $add_query2 $db->query(    "INSERT INTO 
                                                            
    {$GLOBALS["config"]["tables"]["usersettings"]} 
                                                        SET
                                                            userid         = '
    $last_id'
                                                        "
    );
                                                    
                            
    $add_query3 $db->query(    "UPDATE 
                                                            
    {$GLOBALS["config"]["tables"]["user"]} 
                                                        SET
                                                            ugbid         = '
    $last_id'
                                                        WHERE
                                                            userid         = '
    $last_id'
                                                        "
    );

                            
    $pic_info = @GetImageSize($_FILES[file][tmp_name]);
                            if(
    $pic_info["2"] == "1" OR $pic_info["2"] == "2" OR $pic_info["2"] == "3")
                            {
                                
    $isimage "1";
                                
    //
                                // Generate image-name
                                //
                                
    $time        time();
                                
    $random        rand("10000","99999");
                    
                                if(
    $pic_info['2'] == "1")
                                
    $datatype    "gif";
                                elseif(
    $pic_info['2'] == "2")
                                
    $datatype    "jpg";
                                elseif(
    $pic_info['2'] == "3")
                                
    $datatype    "png";
                    
                                
    $dataname    $time $random "." $datatype;
                        
                                
    //
                                // Copy pic on harddisk
                                //
                                
    move_uploaded_file($_FILES[file][tmp_name], "ext_inc/userpics/$dataname");
                    
                                
    //
                                // Insert pic into database
                                //
                                
    $db->query("
                                UPDATE 
                                    
    {$GLOBALS["config"]["tables"]["user"]} 
                                SET 
                                    userpic ='
    $dataname'
                                WHERE 
                                    userid     = '
    $this->userid'
                                "
    );
                                    
                                
                            } 
    // if
                            
                            
    if(    $add_query    == AND
                                
    $add_query2   == 1                    
                            

                            {
                                
    $func->confirmation("Der User <b> $this->username </b> wurde erfolgreich eingetragen. Sein Passwort lautet <b>".$this->password."</b>","");

                            } 
    // if query was succesfully
                        
                        
    // else
            
    // function - add_data 
    Hoffe es kann mir jemand helfen. Danke schonmal im Vorraus
    Geht net gibts net...

  • #2
    kennst du den Unterschied zwischen " und ' z.B. in Verbindung mit echo ?
    Schau mal im Manual nach. Das ist der Fehler.

    Kommentar


    • #3
      PHP-Code:

      //
      // Insert pic into database
      //
       
      $db->query("
                  UPDATE 
                      
      {$GLOBALS["config"]["tables"]["user"]} 
                  SET 
                       userpic ='
      $dataname'
                  WHERE 
                       userid     = '
      $this->userid'
                  "
      ); 
      Wenn ich hier '$dataname' und '$this->userid'
      durch "$dataname" und "$this->userid"
      ersetze, bekomme ich folgende Fehlermeldung:
      Parse error: parse error, unexpected T_VARIABLE in ...

      Kann also nicht die Lösung sein.
      Außerdem hab ich fast die Selbe Funktion wenn es darum geht einen bestehenden User zu ändern. Da geht die Query seltsamer weise auch...
      nur hier nicht

      Hab im Manual geschaut weiß aber nicht so ganz wie du das gemeint hast...

      MFG
      Zuletzt geändert von deschmiddi; 23.03.2004, 19:52.
      Geht net gibts net...

      Kommentar


      • #4
        Nein, überlege es dir noch mal. Was mach z.B.
        PHP-Code:
        echo "blabla bla $GLOBALS["blabla"]"//oder
        echo "blabla bla '$var' blabla"
        nicht ein tippen und durch den Parser jagen, einfach anhand Manual sagen.

        Kommentar


        • #5
          Hab mal die Query so verunstaltet dass auf jeden fall ein sql_eror kommen müsste, und festgestellt dass diese erst garnicht gelesen wird... die Zeile davor wird aber ausgefüht, da das Bild ja hochgeladen wird... grieg echt noch die krise..

          sei $GLOBALS["blabla"] And $var = "test";

          im ersten fall gibt echo nen error aus,
          im zweiten test.

          lass ich die ' weg und setze " bekomm ich nen error... das sagt mir das manual...

          hilft mir aber nicht weiter. Hab es versucht zu ändern aber es passiert nix...

          Such ich den Fehler überhaupt an der richtigen stelle?
          Vielleicht sagst du mir einfach mal wo du meinst dass ich es falsch gemacht habe... vielleicht fällts mir dann ja wie schuppen von den augen...
          will dieLösung nicht präsentiert haben... lerne gern aber ich peils net...
          Zuletzt geändert von deschmiddi; 23.03.2004, 20:35.
          Geht net gibts net...

          Kommentar


          • #6
            $db->query("UPDATE {$GLOBALS["config"]["tables"]["user"]} SET userpic ='$dataname' WHERE userid = '$this->userid'");
            schau dir mal die " " in der variable $globals an...

            Blessings !
            [font=dauphin]Die Seite für Spychos[/font]

            Kommentar


            • #7
              daran liegts nicht, hab ich auch schon versucht.
              Hab festgestellt, dass wenn die Query innerhalb der if schleife ganz on der mitte steht, diese einfach nicht geparst wird... hab das gestestet indem ich einfach mal userpic durch blabla ersetzt habe (der wert existiert in der db net).
              Schreibe ich die query unter die if schleife, so wird sie geparst, aber jetzt ist der wert $dataname leer... der innerhalb der if-schleife definiert wird.

              was tun?
              Geht net gibts net...

              Kommentar


              • #8
                mysql_query("SELECT * FROM ".$table." WHERE ID='".$id."'");

                hilft dir das weiter?
                Mit freundlichem Gruß,
                Deathrow

                Kommentar


                • #9
                  nicht wirklich... ihr sucht alle nur den Fehler in der Syntax des Codes oder in der Query selbst. nEs ist jedoch kein Syntax Fehler sondern eher ein logischer FEhler so wie ich das sehe. Jetzt müsste man diesen nur noch finden... und genau hier liegt das Problem.

                  Alle Querys die sich hier befinden:

                  PHP-Code:

                  function blabla() {

                  if(...) {
                    
                  irgent ein code...
                  }
                  else{
                    if(...){
                    
                  $dataname "test.jpg";
                    
                  Kopiere datei auf Server
                    Query Pic in DB
                    Query BlaBla
                    
                  }

                  werden in meinem Code siehe Beitrag einfach übergangen.
                  Die Datei wird aber auf den Server kopiert, was heißt das er in die innerste if-Schleife gelangt.

                  Stehen Die Querys dagegen hier:

                  PHP-Code:

                  function blabla() {

                  if(...) {
                    
                  irgent ein code...
                  }
                  else{
                    if(...){
                    
                  $dataname "test.jpg";
                    
                  Kopiere datei auf Server
                    
                  }

                  Query Pic in DB
                  Query BlaBla

                  werden sie ausgeführt. Ist mir aber nicht ganz verständlich warum ???
                  Da dann aber irgentwie der Wert $dataname meiner Query fehlt wenn diese nicht ganz innen steht... Meldet die Query nen Fehler...

                  Steigt da einer durch?
                  Hoffe ich habe das Problem jetzt entsprechend detailiert genug erläutert.
                  Wäre schon froh wenn mir einer sagen könnte weshalb die Querys wenn sie ganz in der mitte stehn einfach nicht geparst werden. Scheint jedenfalls kein Fehler in der Syntax sondern eher ein sog. logischer Fehler vorzuliegen.
                  Geht net gibts net...

                  Kommentar


                  • #10
                    PHP-Code:
                    //
                    // Insert pic into database
                    //
                    $db->query('
                    UPDATE 
                      '
                    .$GLOBALS['config']['tables']['user'].
                    SET 
                      userpic = "'
                    .$dataname.'"
                    WHERE 
                      userid = '
                    .$this->userid
                    ); 
                    10% der männlichen bevölkerung sind farbenblind.
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Original geschrieben von deschmiddi
                      Hab mal die Query so verunstaltet dass auf jeden fall ein sql_eror kommen müsste, und festgestellt dass diese erst garnicht gelesen wird... die Zeile davor wird aber ausgefüht, da das Bild ja hochgeladen wird... grieg echt noch die krise..

                      sei $GLOBALS["blabla"] And $var = "test";

                      im ersten fall gibt echo nen error aus,
                      im zweiten test.

                      lass ich die ' weg und setze " bekomm ich nen error... das sagt mir das manual...

                      hilft mir aber nicht weiter. Hab es versucht zu ändern aber es passiert nix...

                      Such ich den Fehler überhaupt an der richtigen stelle?
                      Vielleicht sagst du mir einfach mal wo du meinst dass ich es falsch gemacht habe... vielleicht fällts mir dann ja wie schuppen von den augen...
                      will dieLösung nicht präsentiert haben... lerne gern aber ich peils net...
                      du hast also gemerkt, dass bei $GLOBALS... so nicht gehts, also tu was dagegen. Ausserdem userid ist höchst wahrscheinlich eine Zahl, also weg mit dem umschliessenden '

                      Kommentar


                      • #12
                        @ asp2php: lies dir nochmal meinen letzten Post genau durch und dann antwortest du nochmal... Da steht dass es kein Syntax-Fehler ist.
                        Wenn ich das anwende was du hier vorschlägst dann hagelt es nur so error-meldungen.

                        Aber daran liegt es net... Ich wiederhole:
                        der ignoriert die Query einfach und das ist was anderes als wenn er sie nicht ausführt... würde er die Query ausführen, so müsste ein SQL-error erscheinen sobald ich mit Absicht einen Fehler in die Query einbaue... kommt aber keiner was defakto heißt dass die Query überlesen wird...

                        Also lies nochmal den letzten Post von mir please

                        bzw ich kann dir auch gleich wenn du willst meine komplette klasse class_usrmgr.php hier als zip.datei beilegen wenn mir jemand sagt wie das geht. Dann siehst du dass es net an der Syntax hängt weil alle anderen Querys auch so geschrieben sind und seltsamerweise alle funktionieren.
                        Zuletzt geändert von deschmiddi; 24.03.2004, 13:30.
                        Geht net gibts net...

                        Kommentar


                        • #13
                          haste dir mal $dataname mit echo ausgeben lassen?
                          mfg
                          marc75

                          <Platz für anderes>

                          Kommentar


                          • #14
                            Hiermit wird meine Bilddatei auf den Server kopiert.

                            PHP-Code:

                            //
                            // Copy pic on harddisk
                            //
                            $move move_uploaded_file($_FILES[file][tmp_name], "ext_inc/userpics/$dataname"); 
                            Wäre $dataname leer, würde dieser Befehl nicht ausgeführt
                            Geht net gibts net...

                            Kommentar


                            • #15
                              Original geschrieben von deschmiddi
                              Wäre $dataname leer, würde dieser Befehl nicht ausgeführt
                              OffTopic:
                              ist es so schwer, einfach mal das ergebnis einer kontrollausgabe per echo zu posten, um wirklich absolut 100%ig sicher zu wissen, was in einem feld drinsteht?

                              irgendwelche halbgaren argumentationen, "weil wegen hassenichgesehen muss da was sinnvolles drinstehen", die sich dann nachher womöglich auf grund eines denkfehlers doch als falsch erweisen, sind bei der fehlersuche für aussenstehende wirklich nicht hilfreich ...
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X