24-12-2007, 01:57 AM
Cool que tu aies trouvé le coup de l'insert multiples. Pour ton truc, c'est encore une histoire d'array. En réalité, c'est ce qu'il y a de mieux pour manipuler des données tabulaires dans un script. Donc le principe est le suivant : au lieu d'insérer direct dans ta boucle, tu crées un tableau contenant les données à insérer dans ta boucle et tu l'utilises à la sortie dans une seule insertion.
Ex, en reprenant ton truc :
Ex, en reprenant ton truc :
Code PHP :
<?php
//Déclaration du tableau de données
$aTableauDonnees = array();
//On boucle pour le remplir
// (ici, $i correspondra aux valeurs successives de "y" et "z" en code ASCII)
for($i = 121; $i < 123; $i++) {
$sLettre = chr($i);
$sLigne = "'', '$sLettre', '$sLettre','$sLettre'";
$aTableauDonnees[] = $sLigne;
}
//A la sortie de la boucle, on a un tableau qui contient :
// 0 => '', 'y', 'y','y'
// 1 => '', 'z', 'z','z'
//On compte le nombre d'entrées dans le tableau (pour la syntaxe de la requête)
$iNbEntrees = count($aTableauDonnees);
$i = 1;
// Il reste à construire la requête multiple
$sRequete = "INSERT INTO table VALUES ";
foreach($aTableauDonnees as $sEntree) { //On parcoure chaque ligne du tableau
$sRequete .= "($sEntree)"; //On l'ajoute à la requete
if ($i != $iNbEntrees) { //Si ce n'est pas la dernière entrée"
$sRequete .= ", ";
}
$i++;
}
//Notre requête ressemble maintenant à
// INSERT INTO table VALUES ('', 'y', 'y','y'), ('', 'z', 'z','z')
mysql_query($sRequete);
Voilà. Poses des questions si tu ne comprends pas. Evidemment, là, c'est un peu lourd puisque je passe par un tableau mais c'est pour l'exemple car ici, il y avait la possibilité de créer directement la requête dans la première boucle for. L'intérêt est évidemment de n'avoir plus qu'une seule requête au lieu de $nombreDeLignes
@+