Répétition d'une requête insert INTO avec php

mayourch Messages postés 12 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 30 avril 2010 - 28 avril 2010 à 21:39
mayourch Messages postés 12 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 30 avril 2010 - 30 avril 2010 à 02:17
Salut,
Dans mon code php je besoin de répéter une requête SQL Insert INTO plusieurs fois mais l'insertion se fait une seul fois.
Voilà mon code:

include("connexion.php");
$id=login();
$req_nblicence="select*from nblicence";


if($resnb=mysql_query($req_nblicence))
{
while($numnbl=mysql_fetch_array($resnb))
{
for($i=0;$i<5;$i++)
{
$tab[$i]=rand(1,9);
}
$c= implode( $tab);




for($j=0;$j<$nblicence;$j++){

mysql_query("INSERT INTO code VALUES($NumVersion,$c)",$id);
}
}
}

7 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
28 avril 2010 à 21:54
Salut,

Et en étant plus explicite ça donne quoi ?

De rien,

Kohntark -
0
mayourch Messages postés 12 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 30 avril 2010
28 avril 2010 à 22:14
salut,
Lorsque j'ai fait ce code l' insertion ce faire une seul fois mais je besoin par exemple de répéter l'insertion 10 fois
dans mon table"code" affiche cette ligne
NumVersion clepriv
87654 4556
mois je besoin de répéter cette ligne 10 fois.
je m'excuse pour le français je suis faible en français
merci pour l'aide.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
28 avril 2010 à 23:19
je m'excuse pour le français je suis faible en français

Pas de problème là dessus dès l'instant où ça ne rentre pas dans la catégorie "je m'en fous d'écrire n'importe comment", et ton propos le prouve.

Bref, je ne suis pas sur de bien te suivre, mais :
Où est définie $NumVersion ? Cette variable n'apparait pas dans ton code.
A quoi correspond ta fonction login() ?

Commence dans un premier temps par remplacer ton code par :
ini_set('display_errors', 1);
error_reporting(-1);

include("connexion.php");
$id = login();
$req_nblicence = "SELECT * FROM nblicence";

$tab = array();

if (false !$resnb mysql_query($req_nblicence)) {
    while($numnbl = mysql_fetch_array($resnb)) {
        for ($i=0; $i<5; $i++) {
            $tab[$i] = rand(1,9);
        }
        $c = implode( $tab);
        
        for($j=0; $j<$nblicence; $j++) {
            $req = "INSERT INTO code VALUES($NumVersion,$c)";
            if (false === mysql_query($req, $id)) die('erreur de la requête "'.$req.'" : 
'.mysql_error());
        }
    }
}  else die('erreur de la requête $req_nblicence "'.$req_nblicence.'" : 
'.mysql_error());


Et dis nous ce que cela t'affiche.

Cordialement,


Kohntark -
0
mayourch Messages postés 12 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 30 avril 2010
29 avril 2010 à 00:02
pour la fonction login() c'est une fonction de la connexion à la base de donnée et j'oublie de mettre le variable NumVersion dans code précedent.
Merci pour votre répnse mais le problème n'est pas résolue,je remplace mon code par votre code mais rien que se passe le même problème, il affiche un seul ligne dans le table code et affiche un message d'erreur:
erreur de la requête "INSERT INTO code VALUES(4556,87757)" :
Duplicata du champ '87757' pour la clef 'PRIMARY'
voila mon code complet avec le variable NumVersion:
include("connexion.php");
$id=login();
$req_nblicence="select*from nblicence";


if($resnb=mysql_query($req_nblicence))
{
while($numnbl=mysql_fetch_array($resnb))
{
for($i=0;$i<5;$i++){
$tab[$i]=rand(1,9);}
$c= implode( $tab);


$NumVersion=$numnbl["NumVersion"];
$nblicence=$numnbl["nb_licence"];



for($j=0;$j<$nblicence;$j++){

mysql_query("INSERT INTO code VALUES($NumVersion,$c)",$id);}}}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
29 avril 2010 à 00:39
je remplace mon code par votre code mais rien que se passe

Au contraire, il affiche un message d'erreur, ce qui est très important pour déboguer.

Le début de la réponse est là :
erreur de la requête "INSERT INTO code VALUES(4556,87757)" :
Duplicata du champ '87757' pour la clef 'PRIMARY'

La valeur '87757' est déjà présent dans ta base alors que ce champ est une clé primaire, elle n'accepte donc pas de doublons.

Ne sachant pas quel est le but exact de ton script il n'est pas possible de t'aider plus.



Kohntark -
0
mayourch Messages postés 12 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 30 avril 2010
29 avril 2010 à 04:01
salut,
j'ai essayé de changer mon code pour que le clé n'est pas répéter mais je n'arriva à faire ça exactement.toujours la même erreur.
Je explique un peu le but de mon script:
Le but de mon script est d'inserrer dans la table code des clés privée (le clé doit être chosit au hasard je faire ça avec la fonction rand()).Le nombre de clé privée dépend de la nombre de licence pour chaque numéro de version(par exemple lorsque dans la table nblicence il y a 10 nbre de licence pour le NumVersion il faut que dans la table code j'inserre 10 clés privées pour cette numéro version).le clepriv est un clé primaire dans la table code et NumVersion est la clé primaire dans la table nblicence.La table nblicence est déja remplir j'ai pas besoiun de le remplir.
Voilà le 2 tables:
table nblicence:
NumVersion varchar(10);
nb_licence char(3),
PRIMARY KEY (NumVersion);

table code:
NumVersion varchar(10);
Clepriv varchar(5);
PRIMARY KEY (ClePriv);
0
mayourch Messages postés 12 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 30 avril 2010
30 avril 2010 à 02:17
enfin je trouve la solution.
0
Rejoignez-nous