Dies ist meine erste Website, die serverseitige Technologie verwendet. Und es ist auch mein erstes Eintauchen in PHP
Arbeiten entlang Seite MYSQL
. Ich habe gearbeitet und gelernt, wie ich gehe.PHP - Einfügen von Daten aus Checkbox-Formularen in MYSQL
Ich habe eine grundlegende Verwaltungsseite für eine Datenbank von Produkteinträgen für eine kleine Abendkleid Geschäft erstellt.
Ich habe an der Funktionalität eines Formulars gearbeitet, das der Administrator verwenden kann, um neue Einträge in die Datenbank hochzuladen.
Einige dieser Einträge sind:
Kleid Bezeichnung [Texteingabe]
Farbe Verfügbarkeit [Kontrollkästchen]
Ich habe von mehreren Check in Schwierigkeiten Daten laufen Felder aus einem HTML-Formular in die Datenbank.
Die Entscheidungen in dem Kontrollkästchen sollten einen Booleschen Wert darstellen (ja/nein - 1/0)
Hier ist die Form Struktur:
<form action="inventory_list.php" enctype="multipart/form-data" name="myForm" id="myform" method="post">
<table width="90%" border="0" cellspacing="0" cellpadding="6">
<tr>
<td width="20%" align="right">Dress Name</td>
<td width="80%"><label>
<input name="Dress_name" type="text" id="Dress_name" size="64" />
</label>
</td>
</tr>
<tr>
<td align="right">Collections</td>
<td>
<label>
<select name="collections" id="collections">
<option value="other">Other</option>
<option value="hermione">Hermione</option>
<option value="jora">Jora</option>
<option value="manon">Manon</option>
</select>
</label></td>
</tr>
<tr>
<td align="right">Available Sizes</td>
<td>
<input type="checkbox" name="sizes[]" value="1" /> Sizes 2-6<br />
<input type="checkbox" name="sizes[]" value="1" /> Sizes 6-10 <br />
<input type="checkbox" name="sizes[]" value="1" /> Sizes 10-14<br />
<input type="checkbox" name="sizes[]" value="1" /> Sizes 14-18 <br />
<input type="checkbox" name="sizes[]" value="1" /> Sizes 18-22<br />
<input type="checkbox" name="sizes[]" value="1" /> Sizes 22-26 <br />
</td>
</tr>
<tr>
<td align="right">Dress Colours</td>
<td>
<input type="checkbox" name="colours[]" value="1" /> Pinks/Reds <br />
<input type="checkbox" name="colours[]" value="1" /> Blues/Greens <br />
<input type="checkbox" name="colours[]" value="1" /> Violet/Purple<br />
<input type="checkbox" name="colours[]" value="1" /> Yellow/Orange/Brown/Gold <br />
<input type="checkbox" name="colours[]" value="1" /> Black/White<br />
</td>
</tr>
<tr>
<td align="right">Product Image</td>
<td><label>
<input type="file" name="fileField" id="fileField" />
</label></td>
</tr>
<tr>
<td> </td>
<td><label>
<input type="submit" name="button" id="button" value="Add This Item Now" />
</label></td>
</tr>
</table>
</form>
Und hier ist die PHP, das ich gebaut habe Umgang mit dem Formular, das Daten an die Datenbank übermittelt.
<?php
if (isset($_POST['Dress_name'])) {
$dress_name = mysql_real_escape_string($_POST['Dress_name']);
$collections = mysql_real_escape_string($_POST['collections']);
$sizesArray = $_POST['sizes'];
$coloursArray = $_POST['colours'];
foreach ($sizesArray as $key => $value)
{
echo "Key = $key || Value = $value<br />";
}
foreach ($coloursArray as $ckey => $cvalue)
{
echo "Key = $ckey || Value = $cvalue<br />";
}
//See if that product name is an identical match to another product in the system
$sql = mysql_query("SELECT ID FROM names WHERE Dress='$dress_name' LIMIT 1");
$productMatch = mysql_num_rows($sql); // count the output amount
if ($productMatch > 0) {
echo 'Sorry you tried to place a duplicate "Product Name" into the system, <a href="inventory_list.php">click here</a>';
exit();
}
//Add this product into the database now
$sql = mysql_query("INSERT INTO names (Dress)
VALUES('$dress_name')") or die (mysql_error());
$pid = mysql_insert_id();
//Place image in the folder
$newname = "$pid.jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$newname");
header("location: inventory_list.php");
exit();
}
?>
Wie Sie sehen können, habe ich soweit, die Daten in ein Array zu setzen. Und jetzt habe ich eine kleine Mauer getroffen, ich kann keine Antwort finden, die irgendwo Sinn macht.
Wie bekomme ich die booleschen Werte in korrekte Spalten in der Datenbanktabelle?
Schätzen Sie Ihre Zeit!
Ihre Checkboxen auf dem HTML-Formular haben alle den gleichen Wert - ich denke, dass Sie ihre Werte gleich zu haben geeignete Größe? – andrewsi
MySQL [boolean type] (http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html) sieht aus wie Nullen und eins. Wenn der Wert wahr ist, speichern Sie eine 1 in der Spalte. Wenn der Wert falsch ist (oder einfacher nicht wahr ist), speichern Sie eine Null. – buley
Aufgrund der Art und Weise, wie MySQL Booleans behandelt, ist es viel besser, TINYINT zu verwenden. Der boolesche Typ kann seltsame Fehler verursachen: Wenn Sie nur ein Auf- oder Ab-Flag haben möchten, verwenden Sie eine Ganzzahl mit der Länge 1. –