To jest moja pierwsza strona internetowa, która korzysta z technologii po stronie serwera. To także moje pierwsze zagłębienie w PHP
pracujące wzdłuż strony MYSQL
. Pracuję i uczę się jak idę.PHP - Aby wstawić dane z formularzy checkbox do MySQL
Stworzyłem podstawową stronę zarządzania dla bazy danych produktów dla małej firmy balowej.
Pracuję nad funkcjonalnością formularza, za pomocą którego administrator może przesłać nowe wpisy do bazy danych.
Niektóre z tych pozycji należą:
Sukienka Nazwa [wprowadzania tekstu]
Dostępność kolorów [sprawdź skrzynki]
jakie napotkasz problemy z uzyskaniem danych z wielu czeku pola z formularza HTML do bazy danych.
Wybory w polach wyboru powinna stanowić wartość logiczną (tak/nie - 1/0)
Oto struktura forma:
<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>
I tu jest PHP, który ja zbudowałem do obsługi formularza przesyłania danych do bazy danych.
<?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();
}
?>
Jak widać, udało mi się wprowadzić dane do tablicy. A teraz uderzyłem kawałek ceglanego muru, nie mogę znaleźć odpowiedzi, która ma sens wszędzie.
Jak uzyskać wartości boolowskie w odpowiednich kolumnach w tabeli bazy danych?
Doceń swój czas!
Twoje pola wyboru w formularzu HTML mają tę samą wartość - myślę, że chciałeś, aby ich wartości były równe odpowiedni rozmiar? – andrewsi
MySQL [typ boolean] (http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html) wygląda jak zera i jeden. Jeśli wartość jest prawdą, przechowuj 1 w kolumnie. Jeśli wartość jest fałszywa (lub po prostu nie jest prawdą), przechowuj zero. – buley
Właściwie ze względu na sposób, w jaki MySQL obsługuje wartości logiczne, lepiej jest używać TINYINT. Typ boolowski może powodować dziwne błędy: jeśli chcesz tylko flagi w górę lub w dół, użyj liczby całkowitej o długości 1. –