MYSQL / PHP fehler - aber wo?

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

  • MYSQL / PHP fehler - aber wo?

    Hallo alle zusammen,

    ich habe folgende tabelle (daten nennt sich diese) in meiner datenbank:

    ID
    Bemerkung I
    Bemerkung II
    Bemerkung III
    Bemerkung IV


    der benutzer klickt im Hauptmenü auf "anzeigen" wodurch folgende php datei ausgeführt wird.

    PHP-Code:
    <?php

        $rows 
    = array("Bemerkung I""Bemerkung II""Bemerkung III""Bemerkung IV"); 


            
    $abfrage "SELECT * FROM `daten` ORDER BY ID";
            
    $ergebnis mysql_query($abfrage);  
            while(
    $row mysql_fetch_array($ergebnis))  
            {  
                
    // Werte der SQL-Abfrage an Array   
                
    $be1[]= $row ["Bemerkung I"];   
                
    $be2[]= $row ["Bemerkung II"];   
                
    $be3[]= $row ["Bemerkung III"];   
                
    $be4[]= $row ["Bemerkung IV"];   
            }
    // While Schleife SQL  
            
            
            
            
    echo
    <br /> 
    <div> 
    <form  accept-charset="utf-8" action="update.php" method="post" >
     
     
     
    <!-- ÜBERSCHRIFTEN --> 
    <table cellspacing="4" cellpadding="4"> 
      <tr>
        <td id="content_beschriftung">Bemerkung I</td> 
        <td id="content_beschriftung">Bemerkung II</td> 
        <td id="content_beschriftung">Bemerkung III</td> 
        <td id="content_beschriftung">Bemerkung IV</td> 
      </tr>'
    ;
     
     
    $anzahl_be1 count($be1);
    $anzahl_be2 count($be2);
    $anzahl_be3 count($be3);
    $anzahl_be4 count($be4);
    $anzahl = ($anzahl_be1 $anzahl_be2 $anzahl_be3 $anzahl_be4) / 4;

    $x 0;
    $x1 1;
    $x2 2;
    $x3 3;
    $x4 4;
    while (
    $counter $anzahl)
        {
             echo
    '
                    <tr> 
                    <td><input id="content_input" type="text" name="daten'
    .$x1.'" size="23" maxlength="100" value="'.$be1[$x].'" /></td> 
                    <td><input id="content_input" type="text" name="daten'
    .$x2.'" size="18" maxlength="100" value="'.$be2[$x].'" /></td> 
                    <td><input id="content_input" type="text" name="daten'
    .$x3.'" size="18" maxlength="100" value="'.$be3[$x].'" /></td> 
                    <td><input id="content_input" type="text" name="daten'
    .$x4.'" size="18" maxlength="100" value="'.$be4[$x].'" /></td>
                    </tr>'
    ;
            
    $counter ++;            
            
    $x ++;
            
    $x1 += 4;
            
    $x2 += 4;
            
    $x3 += 4;
            
    $x4 += 4;
            
        }
        
    $counter *=4;
    echo 
    '<input type="hidden" name="hidden_counter" value="'.$counter.'" />';

    echo 
    '</table><input type="submit" name="button_update" value="&Auml;nderung &Uuml;bernehmen" /></form></div>';

     
    ?>
    diese zeigt dann alle daten in form von inputfeldern an die in der tabelle drin stehen.

    der benutzer hat jetzt die möglichkeit diese daten direkt in dem inputfeld zu ändern und durch klicken des buttons "Änderung übernehmen" wird eine weitere Datei aufgerufen:

    PHP-Code:
    <?php

    $bem1 
    0;
    $bem2 1;
    $bem3 2;
    $bem4 3;


    while (
    $counter $hidden_counter)
                {
                    
    $aendern =     "UPDATE `daten` SET     `Bemerkung I` = '$daten_update[$bem1]',     `Bemerkung II` = '$daten_update[$bem2]', 
                                                            `Bemerkung III` = '
    $daten_update[$bem3]',`Bemerkung IV` = '$daten_update[$bem4]'";
                                                            
                    
    $update mysql_query($aendern);
                    
                    
    $counter ++;
                    
    $bem1 += 4;
                    
    $bem2 += 4;
                    
    $bem3 += 4;
                    
    $bem4 += 4;
                }
    die daten die der benutzer ändert und per button weiter schickt werden in das array $daten_update gefüllt.

    (dieses passiert in einer externen datei)

    PHP-Code:
    $counter_db 0;
    $x 1;
    while(
    $counter_db $hidden_counter)
                {
                    
    $daten_update[$counter_db] = $_POST['daten'.$x];
                    
    $counter_db ++;
                    
    $x ++;
                } 
    man muss dazu sagen das variablen wie $hidden_counter oder $daten_update in einer externen datei gesammelt werden und an die entsprechenden dateien weitergeleitet werden.

    Mein problem ist jetzt das der sql befehl nicht klappt. Er sagt mir immer das dass array $daten_update leer ist.

    aber wenn ich das array mit print_r über der while sql schleife ausgebe dann erhalte ich alle Werte. Wo liegt der Fehler?


  • #2
    Hallo,

    ich vermute mal, der Fehler liegt mal wieder an der Benutzung von Variablennamen innerhalb von Strings. Verkette doch deine SQL-Abfrage einfach ordentlich:

    PHP-Code:
    $zeichenkette "teil1 " $var1 " teil2 " $var2 $var3
    und nicht
    PHP-Code:
    $zeichenkette "teil1 $var1 teil2 $var2$var3"
    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 21.03.2010, 17:07.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      sry kann da grad nicht ganz folgen. kannste mir das anhand meines sql befehls mal zeigen, damit ich das lernen kann? wäre sehr nett

      Kommentar


      • #4
        Sieh dir mal deine Variable $aendern an und zwar in beiderlei Hinsicht: Inwiefern trifft das von mir geschriebene dort zu? Und was steht am Ende überhaupt drin (echo/var_dump)?

        Edit: Ich seh grad, dass das zwar nicht der Grund für den Fehler ist, aber es ist trotzdem schlechter Stil, der oft zu Problemen führt. Prüf mal jeweils, ob die Variablen, die aus externen Dateien kommen, überhaupt das enthalten, was sie sollen. Der Code ist wegen dieser Abhängigkeiten schlecht nachzuvollziehen und du solltest erstmal selbst mit z. B. echo überprüfen, ob das überhaupt so klappt wie es soll.
        Zuletzt geändert von AmicaNoctis; 21.03.2010, 17:18.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Bei var_dump werden mir alle Werte ausgegeben die ich brauche

          Kommentar


          • #6
            Lass dir mal den Query per
            PHP-Code:
            echo $aendern 
            ausgeben. Und die Abfrage führst du mal so aus:
            PHP-Code:
            $update mysql_query($aendern) or die(mysql_error()); 
            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              ja bei echo $aendern erhalte ich das hier:
              UPDATE `daten` SET `Bemerkung I` = '', `Bemerkung II` = '', `Bemerkung III` = '',`Bemerkung IV` = ''

              als wenn keine daten im array drin sind. habe aber immer noch nicht verstanden wie mein sql befehl laut AmicaNoctis aussehen soll. muss da iwo punkte setzen. aber ka wo

              Kommentar


              • #8
                Zitat von SpecialFighter Beitrag anzeigen
                muss da iwo punkte setzen. aber ka wo
                Grundlagenwissen kann ich dir nicht beibringen, das musst du selbst tun, indem du dich im Handbuch über die Datentypen informierst. Mein Beispiel war eigentlich schon ausführlich genug.

                Dass die Variablen leer sind, hab ich mir schon gedacht, daher der Hinweis, dass du alle anderen Variablen auch verfolgen sollst, insbesondere wenn sie aus einem externen Script stammen.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  ich finds nur schade das es Leute wie dich gibt, die Hilfe nur über indirekten Weg anbieten, anstatt die Lösung 1x zu verfassen damit der jenige für die Zukunft bescheid weiß...sehr sehr schade

                  Kommentar


                  • #10
                    Das hat nichts mit deinem SQL-Befehl zu tun, sondern mit der Art, wie du die Daten aufbereitest. Das Problem scheint wohl hier zu liegen:
                    PHP-Code:
                    while($counter_db $hidden_counter)
                    {
                      
                    $daten_update[$counter_db] = $_POST['daten'.$x];
                      
                    $counter_db ++;
                      
                    $x ++;

                    Gib mal hinter dieser Schleife die Daten mit
                    PHP-Code:
                    print_r($daten_update); 
                    aus.

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Zitat von SpecialFighter Beitrag anzeigen
                      ich finds nur schade das es Leute wie dich gibt, die Hilfe nur über indirekten Weg anbieten, anstatt die Lösung 1x zu verfassen damit der jenige für die Zukunft bescheid weiß...sehr sehr schade
                      Hier gibt es keine fertigen Lösungen, sondern nur Hilfe zur Selbsthilfe.

                      Peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        also davon halte ich garnix. tut mir leid aber das ist meine Meinung...naja dann werd ich mir leider anders Hilfe verschaffen müssen. Habt mich zwar schon einen schritt weiter gebracht, worüber ich mich sehr freue, doch leider nicht zum Ziel.

                        Wünsche noch einen schönen Sonntag


                        P.S. habe hiner der schleife print_r ausgegeben
                        und erhalte auch die werte die ich eingegeben habe:

                        Array ( [0] => a [1] => b [2] => c [3] => d ) in dem beispiel jetzt a,b,c,d
                        Zuletzt geändert von SpecialFighter; 21.03.2010, 17:41.

                        Kommentar


                        • #13
                          Zitat von SpecialFighter Beitrag anzeigen
                          also davon halte ich garnix. tut mir leid aber das ist meine Meinung...
                          Wir haben hier leider die Erfahrung gemacht, dass wenn man komplette Lösungen anbietet, der TS beim nächsten Problem wieder so etwas erwartet. Und das ist nicht Sinn der Sache. Wenn du das wirklich lernen willst, so schau dir ggf. mal das hier an. Wurde extra für Anfänger gemacht.

                          Peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Zitat von SpecialFighter Beitrag anzeigen
                            P.S. habe hiner der schleife print_r ausgegeben und erhalte auch die werte die ich eingegeben habe
                            Dann ist die Einbindung der externen Datei falsch. Liefer mal dazu den Code.

                            Peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              ja wobei ich es nicht ganz verstehe wo der fehler in meiner sql anweisung sein soll.

                              ich habe 3 andere sql anweisungen die ganau so aussehen und die auch funktionieren

                              Kommentar

                              Lädt...
                              X