PHP mit MySQL und Textarea

savvo

Mitglied
Hallo zusammen

Komme bei meinem Projekt nicht mehr weiter. Ich möchte mittels PHP Daten aus einer MySQL DB rauslesen. Dies ist auch kein Problem, doch nun gebe ich meine Daten in eine Textarea aus, in dieser Textarea möchte ich gerne die Daten manipulieren. Ich erstelle für jede Zeile ein Button, sobald eines dieser Buttons angewählt wird sollten die Änderungen in der Textarea in die DB geschrieben werden. Doch leider werden jedesmal nur die Daten der letzten Zeile geändert. :confused:

Ich paste mal mein Code.

PHP:
<?php

include( "include/my_functions.php" );

$id = gpvar('id');
$param = gpvar('param');
$value = gpvar('value');
$description = gpvar('description');
$update = gpvar('change');
?>

<link href="stylesheet.css" rel="stylesheet" type="text/css">

<span class="fett">Konfiguration:</span><hr width="100%" size="1"><br>

<form action="<?echo $PHP_SELF;?>" method="post">
<table>

<?php
// Connecting, selecting database
$link = mysql_connect('localhost','root','') or die( 'Could not connect: ' . mysql_error() );
$db = mysql_select_db('conf') or die( 'Could not select database: ' . mysql_error() );

// Performing SQL query
$query = "SELECT * FROM settings";

$res = mysql_query( $query ); 
$num = mysql_num_rows( $res );
$updateDB = "UPDATE settings SET param = '$param', value = '$value', description = '$description' WHERE id = '$id'";

// Printing results in HTML
for( $i=0; $i<$num; $i++ )
{
	$db_id = mysql_result( $res, $i, "id" );
	$db_param = mysql_result( $res, $i, "param" );
	$db_value = mysql_result( $res, $i, "value" );
	$db_description = mysql_result( $res, $i, "description" );

	echo "<tr class='normal'>
			<td class='td-field'><input name='id' type='text' size='10%' value='".$db_id."' readonly></td>
			<td class='td-field'><input name='param' type='text' value='".$db_param."'></td>
			<td class='td-field'><input name='value' type='text' value='".$db_value."'></td>
			<td class='td-field'><input name='description' type='text' size='60%' value='".$db_description."'></td>
			<td><input class='button70' type='submit' name='change' value='Update'></td>
		</tr>";
}
echo $updateDB;
if( $update == "Update" )
{
	mysql_query( $updateDB ) or die( 'Could not update: ' . mysql_error() );
}

// Closing connection
mysql_close($link);
?>

</table>
</form>

Hab leider keine grosse Ahnung von PHP und nach mehreren Stunden Problemsuche weiss ich nicht mehr weiter.

Gruss
Savvo
:suspekt:
 
Deine Formularfelder befinden sich alle im selben Formular und haben einen identischen Namen... da wird nur das letzte übertragen.

Wenn du an die Namen der Formularfelder eckige Klammern anhängst, wird aus diesen ein Array erzeugt... und alle übertragen

<input name="param[]">
 
Hallo

Besten Dank für deine rasche Antwort, leider hat dies nicht geholfen. habe allen <input> die [ ] zugewiesen

PHP:
<input name='id[$i]' type='text' size='10%' value='".$db_id."' readonly>
<input name='param[$i]' type='text' value='".$db_param."'>
<input name='value[$i]' type='text' value='".$db_value."'>
<input name='description[$i]' type='text' size='60%' value='".$db_description."'>
<input class='button70' type='submit' name='change[$i]' value='Update'>

Bei einem Update bleiben die Variabeln aber leer.

Gruss
SAvvo
 
Hallo

Besten Dank für deine Antwort. Konnte das Problem lösen indem ich die <form></form> in die for Schleife genommen habe. Nun wird jedesmal ein neues Formular generiert.

Gruss
Savvo
 
Zurück