 |  | [Problème]PHP/SQL: insert boucle sql Section : Informatique Logiciels et materiel PC | [Problème]PHP/SQL: insert boucle sql : Discussion sur le forum Informatique (Logiciels et materiel PC : Informations et discussions sur les ordinateurs, les logiciels ou le materiel pc, la programmation et le high tech en général.)  | ProblèmePHP/SQL: insert boucle sql Informatique : Logiciels et materiel PC |
|
19/12/2007, 04h04 | #1 | | Ombre
| insert boucle sql | | Bonjour a tous et toutes
J'essaie depuis qq jours d'inserer dans ma base des données en une seule opération, "commande INSERT "
En fait il s'agit d'entrer un bon de commande avec 5 lignes maxi.
Mais avec ce code que j'ai essayé de mettre au point, j'ai des milliers d'entrées dans ma base, ca peut faire beaucoup pour le client....:?
je vous met le code issue de mon petit crane....
Code: <?php
$i = 0;
while ($i <= 5) {
$connexion = mysql_connect("###","###","###")
or exit("Erreur 101") ;
mysql_select_db( "vmfloc123" , $connexion)
or exit("Erreur 102") ;
$nom.$i=$_POST['nom'.$i];
$prenom.$i=$_POST['prenom'.$i];
$adresse.$i=$_POST['adresse'.$i];
$cp.$i=$_POST['cp'.$i];
$ville.$i=$_POST['ville'.$i];
$telephone.$i=$_POST['telephone'.$i];
$mail.$i=$_POST['mail'.$i];
$mod.$i=$_POST['modele'.$i];
$item.$i=$_POST['item'.$i];
$avatar.$i=$_POST['avatar'.$i];
$pren.$i=$_POST['pren'.$i];
$taille.$i=$_POST['taille'.$i];
$cde.$i=$_POST['commande'.$i];
$req.$i="INSERT INTO cheque_tbl (id, nom, prenom, adresse, cp, ville, tel, mail, modele, item, avatar, pren, taille, cde) VALUES ('', '$nom.$i', '$prenom.$i', '$adresse.$i', '$cp.$i', '$ville.$i', '$telephone.$i', '$mail.$i', '$mod.$i', '$item.$i', '$nomFichier.$i', '$pren.$i', '$taille.$i', '$cde.$i')";
mysql_query($req.$i)or exit ('Erreur SQL !'.$req.$i.'<br>'.mysql_error());
$i=$i+1;
mysql_close();
}
?> |
Je me demande si la commande INSERT ne devrait pas etre en dehors de la boucle... mais là je me perd de plus en plus..
peut on egalement limiter au nombre exact de lignes, par exemple si le client a rentré deux commandes au lieu des 5 maxi possibles ?
Merci a vous qui passez jeter un oeil ici
cordialement | | |
19/12/2007, 06h14 | #2 | | Phoenix
| Re : insert boucle sql | | Ton code pourrait être optimisé encore plus que ça.
Code PHP:
$i = 0; $req = "INSERT INTO cheque_tbl (nom, prenom, adresse, cp, ville, tel, mail, modele, item, avatar, pren, taille, cde) VALUES";
// Cette boucle peut être évité en modifiant légèrement ton formulaire HTML while ($i <= 5) { $nom = $_POST['nom'.$i]; $prenom = $_POST['prenom'.$i]; $adresse = $_POST['adresse'.$i]; $cp = $_POST['cp'.$i]; $ville = $_POST['ville'.$i]; $telephone = $_POST['telephone'.$i]; $mail = $_POST['mail'.$i]; $mod = $_POST['modele'.$i]; $item = $_POST['item'.$i]; $avatar = $_POST['avatar'.$i]; $pren = $_POST['pren'.$i]; $taille = $_POST['taille'.$i]; $cde = $_POST['commande'.$i];
// Construction de la requête SQL $req .= " ('$nom', '$prenom', '$adresse', '$cp', '$ville', '$telephone', '$mail', '$mod', '$item', '$nomFichier', '$pren', '$taille', '$cde'),"; $i++; }
// Suppression de la dernière virgule de la requête construite $req = substr($req,0,strlen($req)-1);
// Une seule connexion au serveur SQL au lieu des 5 que tu faisais $connexion = mysql_connect("###","###","###") or exit("Erreur 101"); mysql_select_db( "vmfloc123" , $connexion) or exit("Erreur 102");
mysql_query($req) or exit('Erreur SQL !'.$req.'<br>'.mysql_error());
mysql_close();
|
 | Citation |  |
| | |
| | | | par exemple si le client a rentré deux commandes au lieu des 5 maxi possibles ? | |  | |  |
|
Pour ça, il suffit de vérifier les données que le client a saisie. Si par exemple, tu te trouves à la 3eme commande et que les données n'ont aucune valeurs alors tu arrêtes ta boucle.
Ce serait quelque chose de ce type :
Code PHP:
$i = 0; while($i < 5) { if (ta_condition) { break; } else { tes_instructions; } }
| | | | Emplacement : | Utilisateurs regardant cette discussion : 1 ( membre(s) et 1 invité(s)) | | | | Rechercher dans cette discussion | | |
Fuseau horaire GMT +1. Il est actuellement 12h52. |
| |  |