insertion en boucle

Répondre
Taly
le 08/11/2004 à 16:08
Taly
Hello !

Je voudrais savoir comment on fait une insertion en boucle. Par exemple, il faudrait insérer 10 fois les valeurs A et B dans ma table Test. J'ai essayé comme ca mais ca marce pas... Des suggestions ??


$A = '100';
$B = '200';

$i = 1;
$commandeSQL = "INSERT INTO test (A, B) VALUES ('$A', '$B')";

do {
$requeteSQL = mysql_query($commandeSQL, $cnx) or die ("ERREUR de connexion au serveur") ;
$i++ ;
}
while ($i != 10) ;
moogli
le 08/11/2004 à 16:12
moogli
Salut,

qu'est ce que sa fait ?
sinon essai un while
$i=0;
while ($i<10) {
//requete
$i++;
}

te pis c'est paqs une erreur de connection c'est une erreur de query ... :)

@+
Il en faut peu pour être heureux !!!!!
LA GLOBULE
le 08/11/2004 à 16:12
LA GLOBULE
Essaye comme ceci :

<?php
$A = '100';
$B = '200';

$commandeSQL = "INSERT INTO test VALUES ($A, $B)";

for ($i=0; $i<10; $i++) {
$requeteSQL = mysql_query($commandeSQL) or die ("ERREUR de connexion au serveur") ;
}
?>


LA GLOBULE pas fan du while smiley
Taly
le 08/11/2004 à 16:40
Taly
Avec la soluce de la globule (for) j'ai ce message d'erreur :

ERREUR de connexion au serveur

et je n'ai qu'un enregistrement qui s'est mis dans la table.

Avec la soluce de Moogli (while) c'est la même chose.

De plus je suis obligée de supprimer le dernier enregistrement dans la base si je veux en réinscrire un, comme si je pouvais pas insérer plusieurs fois les memes données...
moogli
le 08/11/2004 à 16:54
moogli
re,

En fait a la place de l'erreur de connection server tu devrait mettre un message d'erreur explicite

$request = mysql_query($sql) or die ('Erreur sql<br>'.$sql.'<br>'.mysql_error());


quand a ton erreur je pense que c'est parce que tu essais d'insérer un tuple qui existe déja ,sa sert a rien puisqu'il existe et que cela en combrerais la base pour quedal :) donc mysql est po d'accord (c'est mon avis).
Pour remedier a cela il va te falloir ajouter une clef primaire sur ta table (id quoi) de type auto increment. Ensuite avec une requete du genre
=>insert into table VALUES("","'.$a.'","'.$b.'") tu va pouvoir tes tuples ....

si tu veut te convaincre de ce que je te dis met mon message d'erreur dans ta requete et tu vea avoir une erreur ..

@+
Il en faut peu pour être heureux !!!!!
Taly
le 08/11/2004 à 17:08
Taly
ok avec mysql_error() j'obtient le message :

Parse error: parse error, unexpected T_STRING in c:\program files\easyphp\www\nouveau dossier\tests\essai\001.php on line 20

la ligne 20 étant :

$commandeSQL = "INSERT INTO test (A, B) VALUES ('$A', '$B')";
LA GLOBULE
le 08/11/2004 à 17:13
LA GLOBULE
CHOKING ! smiley

Je pense plutot que c'est la connexion à la base de données qui foire.

Alors sinon, tout à fait d'accord avec Moogli pour le mesage d'erreur explicite.

Par contre, le coup de la clé primaire, je tousse un peu :)

Explication : toute table n'est pas obligée d'avoir une clé primaire, et une clé primaire peut etre différente qu'un id, et une clé primaire n'est pas forcemment AUTO_INCREMENT.

Alors je l'avoue, pour du WEB, on utilise enormement les id en clés primaires (imaginez une table forum où la clé primaire serait le titre du sujet de discussion : consequence, on ne peut pas avoir deux sujets ayant le meme titre), et par abus, souvent, meme pour des tables qui n'auraient pas forcemment besoin d'id, ben on en utilise (une table membre par exemple : vu que tous les pseudos sont differents, le pseudo peut tres bien faire office de clé primaire).

Et en fait, quand il n'y a pas de clé primaire, ben MySQL autorise parfaitement les doublons ;)

[Message modifié le 08/11/2004 à 17:14 par LA GLOBULE]
Taly
le 08/11/2004 à 17:17
Taly
je n'ai pas de clé primaire sur cette table.

par contre je ne pense pas que ca vienne de la table parce j'ai fait des insert à la main puis j'ai remplacé ma ligne 20 (insert) par un select * suivi par un echo, et la j'ai un affichage. Je pense que si c'était ma connexion ça serait impossible ...

alors comprend plus ;-(
Répondre
LoadingChargement en cours