nouvelle question sur array()

Mammouth du PHP | 19672 Messages

02 oct. 2005, 14:11

Pas possible: soit ça passe bien et les lignes sont ajoutées, soit les lignes ne sont pas ajoutées et ça ne pas alors pas bien du tout.

Pour débugguer, commence par tester cette requête générée directement avec phpMyAdmin pour vérifier si ça s'insère correctement ou si tu as un message d'erreur : reviens ensuite avec le résultat.

Si ça marche, alors rajoute un détail après le mysql_query() :
mysql_query($sql) or die("<p style=\"color: #c00\">Erreur d'insertion : ". mysql_error ."</p>");
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 18 Messages

02 oct. 2005, 17:22

ok j ai sa maintenant :

Code : Tout sélectionner

Requete generee:INSERT INTO sommaire (id_journ,page,desc) VALUES (53,'page 1','aaa rtrt ryyy'), (53,'page 2','bbbt trtry yryr') Erreur d'insertion : mysql_error
apparement sa passe mais sa passe pas :shock:
bref la boucle marche bien mais n insere pas les lignes !!!

Mammouth du PHP | 19672 Messages

02 oct. 2005, 17:25

Petit oubli de ma part :
mysql_query($sql) or die("<p style=\"color: #c00\">Erreur d'insertion : ". mysql_error() ."</p>");
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 18 Messages

02 oct. 2005, 18:35

ben non ps d oubli cyrano, c est bien ce que ai mis :)
    $fichier=$_POST["fichier"];
    $numero=$_POST["numero"];

$insJourn = mysql_query("INSERT INTO journal (numero) VALUES ('$numero')");
    $id_new = mysql_insert_id();

/* D'abord on récupère les données du formulaire */
$tableau_1 = $_POST['page'];
$tableau_2 = $_POST['desc'];
/* On compte le nombre de lignes des tableaux */
$nb_lignes = count($tableau_1);
/* On initialise la requête SQL */
$sql = "INSERT INTO sommaire (id_journ,page,desc) VALUES ";
/* On ajoute les valeurs */
for($i = 0; $i<$nb_lignes; $i++)
{
    $sql .= "($id_new,'".$tableau_1[$i]."','".$tableau_2[$i]."')";
    $sql .= ($i < ($nb_lignes - 1)) ? ", " : null;
}
echo 'Requete generee:'.$sql;
$insSom = mysql_query($sql) or die("<p style=\"color: #c00\">Erreur d'insertion : ". mysql_error ."</p>");
et sa ma ressorti sa , dans le html

Code : Tout sélectionner

Requete generee:INSERT INTO sommaire (id_journ,page,desc) VALUES (54,'page 1','aaa'), (54,'page 2','bbb') Erreur d'insertion : mysql_error

Mammouth du PHP | 19672 Messages

02 oct. 2005, 18:51

Si, j'ai oublié les parenthères, c'est mysql_error()
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 18 Messages

02 oct. 2005, 19:01

ah vi sa change tout .. il parle plus :)

voila ce qui dit :


Code : Tout sélectionner

Erreur d'insertion : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc) VALUES (55,'page 1','aaa'), (55,'page 2','bbb')' at line 1
apparement probleme de version mysql.. mon hebergeur est free..

Mammouth du PHP | 19672 Messages

02 oct. 2005, 19:05

Ça ne devrait pas poser de problème, l'insertion multiple devrait fonctionner très bien, MySQl sur free.fr est dans la version 4.1.13, donc très à jour

Fais donc voir la requête générée, il dois y avoir une erreur de virgule quelque part.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 18 Messages

02 oct. 2005, 19:30

case "insert" :

    $fichier=$_POST["fichier"];
    $numero=$_POST["numero"];

$insJourn = mysql_query("INSERT INTO journal (numero) VALUES ('$numero')");
    $id_new = mysql_insert_id();

/* D'abord on récupère les données du formulaire */
$tableau_1 = $_POST['page'];
$tableau_2 = $_POST['desc'];
/* On compte le nombre de lignes des tableaux */
$nb_lignes = count($tableau_1);
/* On initialise la requête SQL */
$sql = "INSERT INTO sommaire (id_journ,page,desc) VALUES ";
/* On ajoute les valeurs */
for($i = 0; $i<$nb_lignes; $i++)
{
    $sql .= "($id_new,'".$tableau_1[$i]."','".$tableau_2[$i]."')";
    $sql .= ($i < ($nb_lignes - 1)) ? ", " : null;
}
echo 'Requete generee:'.$sql;
$insSom = mysql_query($sql) or die("<p style=\"color: #c00\">Erreur d'insertion : ". mysql_error() ."</p>");

break;

Eléphanteau du PHP | 18 Messages

02 oct. 2005, 22:24

bon je crois que je vais essayer de trouver une autre méthode pour faire ce que je veux faire ...

si tu as une idée, suis preneur :)

Mammouth du PHP | 19672 Messages

02 oct. 2005, 23:24

Fais donc voir la requête générée....
J'ai marqué "générée", pas le code PHP. Fais un echo($sql) pour faire afficher la requête à l'écran, copie et colle ici.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 18 Messages

03 oct. 2005, 08:08

ah vi sa change tout .. il parle plus :)

voila ce qui dit :


Code : Tout sélectionner

Erreur d'insertion : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc) VALUES (55,'page 1','aaa'), (55,'page 2','bbb')' at line 1
apparement probleme de version mysql.. mon hebergeur est free..
ben je te l ai mis ??
2 posts au dessus ?
c pas sa ?

Mammouth du PHP | 19672 Messages

03 oct. 2005, 08:22

Ça, c'est le message d'erreur en retour : mais ça ne montre qu'une partie de la requête...

Tu comprends vite, mais qu'est-ce qu'il faut comme temps pour t'expliquer :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 18 Messages

03 oct. 2005, 09:46

ok ok vas y chambre :)

Code : Tout sélectionner

Requete generee:INSERT INTO sommaire (id_journ,page,desc) VALUES (60,'page 1','aaa'), (60,'page 2','bbb') Erreur d'insertion : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc) VALUES (60,'page 1','aaa'), (60,'page 2','bbb')' at line 1
mais je te le redis la requete generee etais 3 ou 4 poste au dessus .. ok je sort => ;)

Mammouth du PHP | 19672 Messages

03 oct. 2005, 10:02

Je crois que le problème vient de la première valeur de chaque ligne insérée: si c'est une clé primaire, il te jette parce que dans les deux cas, tu as la même valeur "60" or une clé primaire doit être unique.

Il doit manquer une incrémentation quelque part.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 18 Messages

03 oct. 2005, 11:37

60, c est un id qui provient d une autre table (dernier id inserer dans la table journal) sa me sert a faire une liaison de la table sommaire <=> journal)
mais ce champs dans la table sommaire est un varchar !

par contre le fais de vouloir tout inserer en une seule fois dans la boucle for, pause peut etre probleme au niveau de auto incremant de l id_som de la table sommaire :
en faite ici => "Requete generee:INSERT INTO sommaire (id_journ,page,desc) VALUES (60,'page 1','aaa'), (60,'page 2','bbb') "

il cherche à insérer ces deux lignes de valeurs dans un meme id ?

ma table ressemble a sa :
table => sommaire

id_som :id,4,clé primaire, auto-increment

id_journ : varchar,100

page : varchar,100

desc : text