Ich dreh am Rad

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

  • Ich dreh am Rad

    Sorry, aber mir is keine bessere Überschrift eingefallen

    Ich bin jetzt schon eine Weile an folgendem Stück Code :

    PHP-Code:
    $query "UPDATE userdaten SET telefon='$telefon',
     mobiltelefon='
    $mobiltelefon', 
     fax='
    $fax
     WHERE id=
    $benutzerid";
      echo(
    "<p>$query</p>");
      
    $ergebnis mysql_query($query$db_handle);
      echo(
    "<p>$ergebnis$db_handle"); 
    bei echo $query wird mir
    Code:
    UPDATE userdaten SET telefon='1', mobiltelefon='2', fax='3' WHERE id=1
    ausgegeben, und das funktioniert auch im im PMA, als $ergebnis 1 und als $db_handle Resource id #3

    So, das problem ist, das dies zu meiner Datei user_profil.php gehört, und der Query beim ersten mal nicht funktioniert, obowhl er korrekt ist, die Spalten sind nach dem Query alle leer, obowhl das nicht sein kann.

    Wenn man zum ersten Mal auf Profil bearbeiten geht, kommen die Daten, die gespeichert werden, und wenn man was verändert oder direkt auf Speichern drückt, werden die Daten nicht gespeichert, sondern jede Spalte ist leer, obwohl ich mir mit echo den Query ausgeben lasse, und die Spalten nicht leer sind, und ergebnis true ist !
    Beim 2. Mal speichert er anstandslos, und danach immer.
    Logge ich mich aus und wieder neu ein, speichert er beim ersten mal wieder nicht !

    Der Code oben ist so original im Skript, und obwohl ich mir direkt vor dem Ausführen den Query ausgeben lasse, sind die Spalten in der DB leer danach, und wenn ich den Query in den PMA kopiere führt er es anstandslos durch und die Spalten sind dann entsprechend gefüllt.

    Hat einer eine Ahnung woran das liegen könnte ?

    thx & cya max


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

  • #2
    und wo ist dein or die(mysql_error()); ? gerade du musst es doch wissen, dass man das immer einbauen soll.
    EDIT:
    es riecht nach SQL-Problem **verschieb**

    Kommentar


    • #3
      Weil ich danach mit if($ergebnis) { } und else { } weitermache.


      cya max


      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

      Kommentar


      • #4
        trotzdem! sollte die Abfrage korrekt sein und die DBMS es nicht schafft, sie auszuführen, bekommst du IMHO eine Meldung per mysql_error.

        Kommentar


        • #5
          Habe jetzt zusätzlich noch ein or die(mysql_error()); drangehängt, aber es wird ja true zurückgeliefert, und es kommt keine Fehlermeldung.

          Das kuriose ist, dass es ab dem 2. versuch immer klappt, und ich weiss, als ich das Ding vor einem halben jahr gecoded habe, dass alels funktioniert hat, weil etwa 5 leute aus meiner Firma das getestet haben, und das Profil wurde 100% getestet und da wir auch Support leisten, rufen die Kunden bei uns an wenn es Probleme gibt, und das Phänomen haben wir vor einer Woche bemerkt, als der erste Kunde angerufen hat wegen diesem Problem.

          Das prohekt ist eine art Anzeigenmarkt..

          cya max


          An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

          Kommentar


          • #6
            Hat keiner von den Experten hier eine Idee, woran es liegen könnte ?


            An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

            Kommentar


            • #7
              was bekommst du bei:
              PHP-Code:
              $ergebnis mysql_query($query$db_handle);
              die(
              mysql_error()); 

              Kommentar


              • #8
                mach nach mysql_query() einfach echo mysql_error(); wenn ein Fehler vorliegt wird der dann ausgegeben.

                und ist $benutzerid auch immer vorhanden? mal ein echo gemacht?
                mfg
                marc75

                <Platz für anderes>

                Kommentar


                • #9
                  Er gibt immer True zurück, mysql_affected_rows ist 1, trotzdem sind die Spalten danach leer...

                  Ich mache jetzt 2 DB-Anfragen, einmal setze ich die Spalten auf '' und erst beim 2. mal lasse ich sie speichern, trotzdem sind sie danach leer, obowhl der mit echo ausgegebene Query richtig ist und alle Daten angekommen sind...

                  Bin echt am verzweifeln hier, eigentlich eine Sache, die ich schon hunderte Male gemacht habe...


                  Es ist einfach kurios, dass das ein und das selbe Codestück beim ersten mal nicht funktioniert und beim 2. Mal schon, obwohl beide male Alle Daten ankommen, der Query stimmt und alle Funktionen true liefern...


                  An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                  Kommentar


                  • #10
                    Mäxchen, was heisst denn hier true

                    mit die(mysql_error()); bekommst du entweder die Fehlermeldung, falls es welche gibt, oder einen Leerstring.

                    Gib zu, dass du das nicht gemacht hast, da es dir sinnlos erscheint, weil du dir der Sache zu sicher bist, dass deine Abfrage absolut korrekt ist.

                    die einzelnen PHP-Variablen, wo kommen sie denn her, bzw. wie sind sie definiert?

                    Schonmal mit statischen Werten probiert? etwa:

                    $query = "update tbl set a='a', b='b' wehre id=1";

                    Kommentar


                    • #11
                      Nein asp, ich habe nach deinem POST direkt ein or die(mysql-error()) drangehängt, aber der or die wird nie ausgeführt, die funktion mysql_query liefert true zurück...

                      Ok, das mit den Statischen Variablen ist eine gute Idee, werde das probieren, allerdings lasse ich direkt vor mysql_query($query) den query ausgeben, und der query stimmt (funzt in PMA) und die Daten sind auch da (kommen per POST)

                      cya max


                      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                      Kommentar


                      • #12
                        So, wenn ich jetzt statische Namen nehe, dann speichert er es auch schon beim ersten mal...

                        Aber ich lasse mir ja den Query ausgeben, und der query wurde mit den richtigen POST Daten gefüttert (die natrich escaped wurden usw)

                        muss wohl was an den daten liegen...


                        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                        Kommentar


                        • #13
                          Toll, kaum mache ich wieder die Variablen rein, gehts nicht...

                          PHP-Code:
                          $telefon mysql_escape_string($_POST['telefon']);
                            
                          $mobiltelefon mysql_escape_string($_POST['mobiltelefon']);
                            
                          $fax mysql_escape_string($_POST['fax']);
                            
                          $query "UPDATE userdaten SET telefon='', 
                           mobiltelefon='', 
                           fax='' WHERE id=
                          $benutzerid";
                            
                          $ergebnis mysql_query($query$db_handle) or die(mysql_error());
                            

                            
                          $query "UPDATE userdaten SET telefon='".$telefon."',
                           mobiltelefon='"
                          .$mobiltelefon."', 
                          fax='"
                          .$fax."' WHERE id=$benutzerid LIMIT 1";
                            echo(
                          "<p>$query</p>");
                            
                          $ergebnis mysql_query($query$db_handle) or die(mysql_error());
                            
                            echo(
                          "<p>$ergebnis$db_handle");
                            if(
                          $ergebnis && mysql_affected_rows($db_handle) == 1) { 
                          Der befhel echo("<p>$query</p>"); gibt mir aber den richtigen query (syntax richtig und mit den vars gefüllt) aus.

                          Die 3 zu ändernden Spalten sind VARCHAR

                          es steht dann

                          UPDATE userdaten SET telefon='1', mobiltelefon='2', fax='3' WHERE id=1 LIMIT 1
                          aber es wird mit '' gefüllt 0_o


                          An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                          Kommentar


                          • #14
                            ROFL, ich dreh gleich ab, aber wirklich...

                            Wenn ich jetzt statischen Inhalt mit den Var mixe, dann wird nur der statische inhalt gespeichert...



                            PHP-Code:
                            $query "UPDATE userdaten SET 
                            telefon='pre"
                            .$telefon."',
                             mobiltelefon='pre"
                            .$mobiltelefon."', 
                            fax='pre"
                            .$fax."' WHERE id=$benutzerid LIMIT 1"
                            Die AUsgabe mit Echo bringt mir

                            UPDATE userdaten SET
                            telefon='pre1',
                            mobiltelefon='pre2',
                            fax='pre3' WHERE id=1 LIMIT 1
                            Es wird aber nur das pre gespeichert.

                            argh


                            An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                            Kommentar


                            • #15
                              AAAAAAAAAAHH

                              So langsam reichts, was mache ich nur falsch ??

                              Ich mache folgendem Code DIREKT vor dem query zusammenbau:

                              echo("<p>Telefon : $telefon<br>
                              Mobiltelefon: $mobiltelefon<br>
                              fax: $fax</p>");

                              und ergibt mir das aus :


                              Telefon : 22
                              Mobiltelefon: 33
                              fax: 44

                              UPDATE userdaten SET telefon='pre22', mobiltelefon='pre33', fax='pre44' WHERE id=1 LIMIT 1


                              er speichert aber nur das pre.

                              Kann es sein, dass meine Datenbank mich hasst ?


                              Und das beste ist, wenn ich das 1. mal auf speichern gehe, wird nur pre gespeichert, beim 2. mal wird alles gespeichert.

                              Logge ich mich aus und wieder ein, selbes spiel von vorne :
                              selber code, aber es wird nur das pre gespeichert, dann nochmal ausfüllen, alles wird anstandslos gespeichert...


                              Kann das am Server liegen oder an der DB ?


                              An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                              Kommentar

                              Lädt...
                              X