Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP SQL Fehler - aber wo?

Einklappen

Neue Werbung 2019

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

  • PHP SQL 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;
                }
    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 ausgebe dann erhalte ich alle Werte. Wo liegt der Fehler?

  • #2
    1. Leerzeichen in Spaltennamen sind ne schlechte Idee (Verstehe gar nicht, daß das überhaupt funktioniert)!
    2. Wäre es nicht unbedingt ein Nachteil, wenn Du relavante Teile auch posten würdest und nicht nur erzählen woher die scheinbar kommen.
    Er sagt mir immer das dass array $daten_update leer ist.
    Genaue Fehlermeldungen kann man auch posten.
    aber wenn ich das array mit print_r ausgebe dann erhalte ich alle Werte.
    Wo hast Du's ausgegeben? Wie greifst Du auf $daten_update zu? Wie sieht $daten_update genau aus?

    Wo liegt der Fehler?
    Siehe Punkt 2!
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      die daten die der benutzer ändert und per button weiter schickt werden in das array $daten_update gefüllt.

      das print_r hat ich mal testweise über die while schleife geschrieben, im der der sql code ist.
      einfach nur um zu sehen ob das array wirklich leer ist.

      eine fehlermeldung im dem sinn erhalte ich nicht. doch werde anschließend in der tabelle nur leere werte eingetragen



      so wird das array gefüllt:

      PHP-Code:
      $counter_db 0;
                                      while(
      $counter_db $hidden_counter)
                                                  {    
                                                      
      $daten_be[$counter_db] = $_POST['stammdaten'.$counter_db];
                                                      
      $counter_db ++;
                                                  } 

      Kommentar


      • #4
        In deinem Code-Schnipsel steht was von $daten_be und nicht von $daten_update.

        Davon abgesehen beschäftige dich dringend mit dem Thema SQL-Injection
        [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
        Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

        Kommentar


        • #5
          oh sry falscher code ^^

          hier der richtige:
          PHP-Code:
          $counter_db 0;
          $x 1;
          while(
          $counter_db $hidden_counter)
                      {
                          
          $daten_update[$counter_db] = $_POST['daten'.$x];
                          
          $counter_db ++;
                          
          $x ++;
                      } 

          Kommentar


          • #6
            Was is bloß mit mir los?!

            Ich kann immer noch nicht sehen, wo $daten_update wirklich herkommt...
            Ob ich mal meine Augen untersuchen lasse...

            Poste den kompletten Code vom Formular und der Datei, die als nächstes aufgerufen wird und die Daten in der DB ändern soll!
            Wenn der Code zu groß sein sollte pack's in 'ne ZIP/RAR und mach'n Anhang an den Post.

            Ich bezweifle, daß Dir bei den Schnipseln hier einer - ohne zu raten - helfen kann...

            [EDIT]
            Mir ist grad' mal aufgefallen, daß Deiner UPDATE-Anweisung eine WHERE-Klausel geklaut wurde!
            So schreibst Du in jedem Schlefendurchgang ja ALLE Spalten neu!

            Und um nochmal auf das Raten zurückzukommen: Kann es sein, daß im letzten Schleifendurchgang die entsprechenden Felder leer sind?!
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Zitat von SpecialFighter Beitrag anzeigen
              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.
              Das klingt danach, dass du nicht verstanden hast, wie PHP arbeitet.
              Du kannst Variablen nicht an andere Dateien einfach so im Luftleeren Raum weiterleiten. Davon abgesehen, dass ich nirgendwo in deinen Code-Schnipseln sehe, woher $hidden_counter kommt.

              Wir diese ominöse andere Datei includiert? Wenn ja wo? Zu früh/ zu spät?
              [url]www.php-maven.org[/url] PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
              Twitter @ [url]https://twitter.com/#!/mepeisen[/url] und Facebook @ [url]http://t.co/DZnKSUih[/url]

              Kommentar

              Lädt...
              X