Php - Formular übernimmt nicht alle Daten



  • Hallo,

    ich habe mir ein Formular mit Php und Html erstellt. Das Ganze ist eine Tabelle die Zeilenweise mit den Datensätzen befüllt wird. Die Änderungen sollen dann in die Datenbank zurückgeschrieben werden und erneut herusgelesen werden, damit im Formular erneut Berechnungen ablaufen können.

    Jetzt hab ich das alles per POST an eine weitere PHP Datei übergeben, welche das SQL-Update durchführen soll.

    Das Problem ist, das immer nur die letze Zeile des Formulars übergeben wird und alles darüber scheinbar ignoriert wird.

    Beispiel:

    <?php
    $db = @new mysqli('localhost', '', '', '');
    if (mysqli_connect_errno()) {
        die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
    	}
    	$sql = 'SELECT    *
    	FROM    tabelle';
    
    	$result = $db->query($sql);
    	if (!$result) {
        die ('Etwas stimmte mit dem Query nicht: '.$db->error);
    	}
    
    	$s4= 0;
    
    	echo '<form action="schreiben.php" method="post">
    		  <table border="1">
    		  <tr>
    		  Tabellenköpfe...
    		  </tr>';
    
    	while ($row = $result->fetch_assoc()) { 	
    
    	echo '<tr>
    		  <td width="100">'.$row['s1'].'</td>
    		  <td width="100">'.$row['s2'].'</td>
    		  <td width="100"><input name="s3" type="text" size="6" maxsize="6" value="'.$row['s3'].'"></td>
    		  <td whidth="100">'.$s4= $row['s1'] * $row['s2'] * $row['s3'].'</td>
    		  <td width="100"><input type="checkbox" name="s5" value="" '.$row['s5'].'></td>
    		   </tr>';
    	}
    
    	$result->close();
    ?>
      	</table>
    	<input type="submit" name="Button" value="berechnen">
    	</form>
    

    die Tabelle besteht dann aus 8 Zeilen.
    Schau ich nun in die "schreiben.php" und lass mit per print_r ($_POST) mal anzeigen was da ankommt sehe ich nur die ergebnise der letzen Zeile.

    Grüße


  • Mod

    Ist ja auch logisch. Du hast für jedes input Element den selben Namen gewählt.



  • Ok, ich hab den Feldern mal einen Zähler mitgegeben und sie werden übertragen.

    Jetzt hab ich versucht das Update-Argument zu formulieren:

    Update tabelle Set
    s1 = '_post['s1'.i.'']'
    ... ;

    Sowas führt aber zu einem Fehler, nur wie müsste ich es denn Formatieren, damit ein Zähler mitgezählt wird?



  • Ich hab mal weiter rumprobiert:

    <?php
    	//print_r ($_POST);
     $db = @new mysqli('', '', '', '');
     for($i = 0; $i < 11; $i++){ 
    	$sql = 'UPDATE tabelle SET
    				s1 = '$_POST['pro_stunde'.$i.'']',
    				s2 = '$_POST['stk_preis'.$i.'']',
                                        ...
    
    			WHERE ID = '.$i.'
    	';
    	$result = $db->query($sql);
    	}
    
    include 'index.php';
    ?>
    

    Leider akzeptiert das System die Abfrage immer noch nicht:
    Parse error: syntax error, unexpected T_VARIABLE ...

    Ich hab aber auch keine Idee mehr wo das eigentliche Problem ist.



  • Ähmm... Strings entwirren?

    $sql = 'UPDATE tabelle SET s1 = ' . $_POST['pro_stunde' . $i] . ', s2 = ' . $_POST['stk_preis'. $i] . ' [...] WHERE ID = ' . $i;
    


  • Ich hab das eingefügt und es hat prima geklappt 🙂

    Das Problem das nun auftritt ist, das das Formular ja nur die Änderungen übergibt. Deshalb klappt das Update dann natürlich nicht, weil immer Werte für die Abfrage fehlen.

    Gibt es eine Methode um trotzdem alles zu übernehmen oder wie würde man das sonst machen?

    Edit:

    ich hab mal folgendes Probiert.

    $sql = 'UPDATE tabelle SET'.
    				if ($_POST['s1'.$i]){.'
    				s1 = '.$_POST['s1'.$i].','.};
    
    				if ($_POST['s2'.$i]){.'
    				s2 = '.$_POST['s2'.$i].','.};
    
    				if ($_POST['s3'.$i]){.'
    				s3 = '.$_POST['s3'.$i]};.'
    			WHERE ID = '.$i;
    

    Wird aber nicht akzeptiert.



  • Fang bitte nochmal bei den gundlegenden Dingen an .. -> Syntax etc.



  • PRIEST schrieb:

    Fang bitte nochmal bei den gundlegenden Dingen an .. -> Syntax etc.

    Bzw. um noch etwas konkreter zu werden:
    Du (00Albert) mischst in deinem letzen Versuch ganz munter PHP mit SQL durcheinander. Schau dir da noch einmal genau an, was dabei was ist, und beschäftige dich am Besten erst einmal etwas ausgiebiger mit den PHP-Grundlagen, bevor du es mit SQL vermengst. Das macht es dir leichter und verhindert, dass jeder dritte zukünftige Problemlösungsansatz ins Leere läuft 😉


Anmelden zum Antworten