Ich habe ein Problem beim Versuch, Informationen aus einem Formular, das dynamisch in PHP generiert wird einzufügen. Das Formular besteht aus einer variablen Anzahl von Eingaben, die alle aus vier Eingabeelementen bestehen. Im folgenden sehen Sie, wie meine Form generiert:PHP Array aus mehreren Kontrollkästchen und Texteingabe in mySQL einfügen
<?php $result = mysql_query("SELECT id,name,description FROM todo_q WHERE todo_id = $todo_id AND active = 'y'");
while($todo_q=mysql_fetch_array($result)){
echo '<label>';
echo $todo_q['name'];
echo '</label><br>';
echo '<input type="checkbox" name="value[]" value="y" />';
//echo '<input type="hidden" name="value[]" value="n" />';
echo '<label>';
echo $todo_q['description'];
echo '</label><br>';
echo '<input type="text" id="comment" name="comment[]">';
echo '<input type="hidden" name="user_id[]" value="';
echo $user_id;
echo '" />';
echo '<input type="hidden" name="todo_id[]" value="';
echo $todo_q['id'];
echo '" />';
echo '<HR>';
}?>
Und das ist, wie ich versuche, die Informationen in mySQL einzufügen:
$query = "INSERT INTO todo_a (value, comment, user_id, todo_id) VALUES ";
$query_parts = array();
for($x=0; $x<count($_POST["value"]); $x++){
$query_parts[] = "('" . $_POST['value'][$x] . "','" . $_POST['comment'][$x] . "'," . $_POST['user_id'][$x] . "," . $_POST['todo_id'][$x] . ")";
}
$q_parts = $query_parts;
foreach ($q_parts as $q_p){
$insert = ($query .= implode(',', $query_parts));
$result = mysql_query($insert);
}
Das Problem, das ich habe, ist, dass, wenn Check alle Kontrollkästchen und Kommentare alles eingeführt wird in der rechten Reihe in der DB, aber wenn ich ein Kontrollkästchen check, dann wird es vermasselt ...
Ich möchte es die eine neue Zeile einfügen, wenn es das Kontrollkästchen aktiviert ist und/oder ein Kommentar eingegeben wird . Kann mir jemand in die richtige Richtung zeigen?
Ich habe versucht, eine versteckte Eingabe zu setzen, um den Wert der nicht markierten Kontrollkästchen zu bekommen, aber ich scheint nicht zu arbeiten .. Das, warum ich die ausgeblendete Checkbox auskommentiert habe.
PS. Ich weiß, ich sollte mysqli verwenden, aber dies ist eine ältere Website, die ich noch nicht ..
** Obligatorische Warnung: Bitte verwenden Sie diesen Code bitte nicht in der Produktion. **. Bereinigen Sie Ihre Abfragen, um einige XSS zu verhindern. Haben Sie dieses Problem ebenfalls überprüft? http://stackoverflow.com/questions/5640298/php-insert-data-from-checkbox-array-into-mysql?rq=1 – Pogrindis
FYI, [Sie sollten nicht mysql_ * 'Funktionen in neuen Code verwenden] (http://stackoverflow.com/questions/12859942/). Sie werden nicht mehr gepflegt [und sind offiziell veraltet] (https://wiki.php.net/rfc/mysql_deprecation). Siehe die [rote Box] (http://php.net/manual/en/function.mysql-connect.php)? Erfahren Sie mehr über [* prepared statements *] (https://en.wikipedia.org/wiki/Prepared_statement) und verwenden Sie [PDO] (http://php.net/pdo) oder [MySQLi] (http: // php.net/mysqli) - [dieser Artikel] (http://php.net/manual/en/mysqlinfo.api.choosing.php) wird Ihnen helfen zu entscheiden, welches für Sie am besten ist. –
Ihr Skript ist in Gefahr von [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Schauen Sie sich an, was mit [Little Bobby Tables] (http://bobby-tables.com/) Sogar [wenn Sie Eingaben entgehen, ist es nicht sicher!] (Http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around -mysql-real-escape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php). –