2011-11-22 3 views
0

Je construis un site Web où les gens peuvent passer des commandes et c'est la première fois que je dois insérer plusieurs lignes à la fois et je suis perdu. Je sais que j'ai besoin d'une boucle FOR pour effectuer cela, mais je suis perdu quant à la façon de construire la boucle. J'utilise PHP, MySQL (évidemment) avec jQuery. J'utilise le jQuery pour .append() une nouvelle boîte de sélection dans le formulaire pour permettre au client de choisir un autre élément.Insérer plusieurs lignes avec PHP et MySQL

Voici comment je construis habituellement mon code pour permettre aux utilisateurs d'insérer dans la base de données. Ma question est de savoir comment et où j'insérerais une boucle de telle sorte que plusieurs lignes puissent être soumises en une fois sans avoir à les insérer une par une. Tout serait utile, merci.

<?php 

if (isset($_POST['submit'])) { 

    if (!$_POST['col1'] | !$_POST['col2'] | !$_POST['col3']) { die ("error"); } 

    if (!get_magic_quotes_gpc()) { 
     $_POST['col1'] = addslashes ($_POST['col1']); 
     $_POST['col2'] = addslashes ($_POST['col2']); 
     $_POST['col3'] = addslashes ($_POST['col3']); 
    } 

    $insert = "insert into table (col1, col2, col3) values ('".$_POST['col1']."', '".$_POST['col2']."', '".$_POST['col3']."')"; 
    mysql_query ($insert); 

} else { 
    ?> 

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 
<table> 
    <tr> 
    <td><input type="text" name="col1"></td> 
    <td><input type="text" name="col2"></td> 
    <td><input type="text" name="col3"></td> 

//I'm using jQuery .append() to insert more text boxes with names (col1, col2, col3) here 

    </tr> 
</table> 
<input type="submit" name="submit" value="Submit"> 
</form> 

    <?php 
} 
?> 

Ma confusion est l'endroit où placer la boucle ... Je sais que ce doit être une boucle FOR, mais je ne pourrais jamais obtenir un à travailler. Merci encore pour toute aide.

+0

Assurez-vous de vérifier les vulnérabilités d'injection SQL trop .. –

+0

Je me demande, vous remarquez une section «connexes» de cette page, pleine de questions similaires posées par des centaines d'autres personnes plus tôt? –

Répondre

2

Assurez-vous de nommer vos entrées de façon unique. Mais vous pouvez nommer toutes les colonnes comme celui-ci (voir here par exemple):

<input type="text" name="column1[]" /> 
<input type="text" name="column2[]" /> 
<input type="text" name="column3[]" /> 

De cette façon, vous pouvez accéder aux colonnes via PHP en utilisant une boucle.

for($i = 0; $i < $n; $i++) // If you have $n rows 
{ 
    echo($_POST["column1"][$i]); 
    echo($_POST["column2"][$i]); 
    echo($_POST["column3"][$i]); 
} 

Pour insérer plusieurs lignes dans votre base de données mySQL utilisez la syntaxe suivante (aussi: voir here).

INSERT INTO 
    tbl_name (column1, column2, column3) 
VALUES 
    (1,2,3), 
    (4,5,6), 
    (7,8,9); 

Maintenant, vous devriez être configuré pour générer votre requête SQL.

+0

Génial! Merci, c'est exactement ce que j'essayais de faire. – BRHETT

+0

Si cela vous a aidé, s'il vous plaît upvote et l'accepter comme une réponse. –

0

La première chose que vous voulez éviter est d'utiliser le même ensemble de noms. Vous pouvez les nommer rowNcolM, puis les extraire à l'aide des variables de publication.

Questions connexes