Comment insérer plusieurs lignes dans une table mysql avec php array?
J'ai besoin d'insérer des entrées de la table mysql à partir du formulaire ci-dessous.
1-formulaire contient le nombre de lignes.
2-inscription ne sera pas toujours consécutifs dans les lignes (ce qui signifie que la ligne 1 peut être vide et la ligne suivante en a pas)
3-toutes les lignes contenant les inscriptions doivent être enregistrées dans la table db.
je veux INSÉRER DANS oz2ts_custompc_details (part_id, quantité, prix)
Voici mon formulaire d'inscription (custompc_form2.php)
<!DOCTYPE html>
<html>
<body>
<form action="../subs/custompcorder2.php/" method="post" id="form">
<p><input id="name" name="part_id[]"/>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<p><input id="name" name="part_id[]"/>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<p><input id="name" name="part_id[]"/>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<p><input id="name" name="part_id[]"/>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<input id="submit" type="submit" value="Submit Order" name="submission"/>
</form>
</body>
</html>
est ici Que je suis venu avec, mais toujours pas de travail.
voici le résumé de la façon dont il fonctionne: ||Lignes 1 à 4 a données > tous les 4 sont enregistrées || ligne 1 est vide et les lignes 2 à 3 contient des données > seules les lignes 2 et 3 sont sauvés, non ligne 4|| Ligne 2 ne dispose de données que tous les autres sont vides > Données non enregistrées || les Lignes 2 et 3 a données > Ligne 2 n'est enregistré
<?php
include '../db/connect.php';
foreach (array('part_id', 'quantity', 'price') as $pos) {
foreach ($_POST[$pos] as $id => $row) {
$_POST[$pos][$id] = mysqli_real_escape_string($con, $row);
}
}
$ids = $_POST['part_id'];
$quantities = $_POST['quantity'];
$prices = $_POST['price'];
$items = array();
$size = count($ids);
for($i = 0 ; $i < $size ; $i++){
//Check for part id
if (empty($ids[$i]) || empty($quantities[$i]) || empty($prices[$i])) {
continue;
}
$items[]=array(
"part_id" => $ids[$i],
"quantity" => $quantities[$i],
"price" => $prices[$i]
);
}
if (!empty($items)) {
$values = array();
foreach($items as $item){
$values[] = "('{$item['part_id']}', '{$item['quantity']}', '{$item['price']}')";
}
$values = implode(", ", $values);
$sql = "INSERT INTO oz2ts_custompc_details (part_id, quantity, price) VALUES {$values} ;
" ;
$result = mysqli_query($con, $sql );
if ($result) {
echo 'Successful inserts: ' . mysqli_affected_rows($con);
} else {
echo 'query failed: ' . mysqli_error($con);
}
}
?>
La première est simplifié formulaire d'inscription. La bobine d'entrée de forme ressemble à ceci:
<!DOCTYPE html>
<html>
<head></head>
<body>
<form action="../subs/custompcorder2.php/" method="post" id="form">
<div id="orderwrap">
<div id="orderheather">
<select id="platform" name="platform">
<option selected="selected" disabled="disabled">Select the
platform</option>
<option value="Intel">Intel</option>
<option value="AMD">AMD</option>
</select>
</div>
<div id="orderbody">
<p><select id="part_id" name="part_id[]">
<option selected="selected" disabled="disabled">Choose part1 </option>
<?php query() ?>
< /select>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<p><select id="part_id" name="part_id[]">
<option selected="selected" disabled="disabled">Choose part2 </option>
<?php query2() ?>
< /select>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<p><select id="part_id" name="part_id[]">
<option selected="selected" disabled="disabled">Choose part3 </option>
<?php query3() ?>
< /select>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<p><select id="part_id" name="part_id[]">
<option selected="selected" disabled="disabled">Choose part4 </option>
<?php query4() ?>
< /select>
<input type="text" id="quantity" name="quantity[]"/>
<input id="name-data" type="text" name="price[]"/></p>
<input id="submit" type="submit" value="Submit Order"name="submission"/>
</div>
</div>
</form>
</body>
</html>
Ici est la page php contenant la fonction query(),requête1(),..
<?php
include '../db/connect.php';
function query(){
global $con;
$myData=mysqli_query($con,"SELECT * FROM oz2ts_mijoshop_product");
while($record=mysqli_fetch_array($myData)){
echo'<option value="'.$record['product_id'].'">'.$record['model'].'</option>';
}
}
function query2(){
global $con;
$myData=mysqli_query($con,"SELECT * FROM oz2ts_mijoshop_product");
while($record=mysqli_fetch_array($myData)){
echo'<option value="'.$record['product_id'].'">'.$record['model'].'</option>';
}
}
function query3(){
global $con;
$myData=mysqli_query($con,"SELECT * FROM oz2ts_mijoshop_product");
while($record=mysqli_fetch_array($myData)){
echo'<option value="'.$record['product_id'].'">'.$record['model'].'</option>';
}
}
function query4(){
global $con;
$myData=mysqli_query($con,"SELECT * FROM oz2ts_mijoshop_product");
while($record=mysqli_fetch_array($myData)){
echo'<option value="'.$record['product_id'].'">'.$record['model'].'</option>';
}
}
function close(){
mysqli_close($con);
}
?>
- De L'Aide Svp!!!!
- Je veux que ma requête d'insertion de vérifier toutes les lignes et choisir de recueillir des données lorsque la ligne est rempli. Si pas de passer à la ligne suivante. Merci pour tout conseil
- Je me suis perdu à la lecture de votre post, mais je suggère de regarder en haut pour les boucles 🙂
- en outre, j'obtiens cette erreur php journal: PHP notice: Undefined index: part_id sur la ligne 4 (ligne 4: $id = mysqli_real_escape_string($con,($_POST['part_id']));) PHP Warning: mysqli_real_escape_string() s'attend à ce paramètre 2, chaîne, tableau donné dans la ligne 5 (ligne 5: est de $quantités = mysqli_real_escape_string($con,($_POST['quantite']));) 'code'PHP Avis: Uninitialized string offset: 0 dans la ligne 14 (ligne 14 est: "part_id" => $id[$i], ) '/'code
Vous devez vous connecter pour publier un commentaire.
Utiliser le code suivant:
$items[$i] = array
à :$items[] = array
$POST
à$_POST
var_dump($_POST)
sur le cas lorsque la première est vide et les trois autres ne sont pas sur le dessus.Ici est une ébauche de code, modifier indices par vos propres besoins.
Voici un exemple de base, une question de manipulation lors de l'insertion de données. Inclus dans les contrôles d'erreur sont
Code qui reçoit POST
Please ensure...have the same number of fields
confirme simplement que si vous avez un part_id[] terrain dans la ligne, vous devez disposer de la quantité de[] et de prix[] champs également. De même, votre véritable forme devrait avoir tous les champs de chaque ligne. Le HTML est très probablement le problème.Choose part
devient la sélection par défaut qui va à PHP. En PHP, nous ignorons siChoose part
vient à travers comme part_id. Code en conséquence changé. Démo changé aussi: goo.gl/T5z5Zg