nouvelle question sur array()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : nouvelle question sur array()

par Cyrano » 03 oct. 2005, 12:59

Bon, la solution, un peu dingue, mais ça a réglé le problème:

Il faut protéger les noms de la table et celui des champs avec des `

La requête de base devient donc:
$sql = "INSERT INTO `sommaire` ( `id_journ` , `page` , `desc` ) VALUES ";
Problème résolu :)

par Cyrano » 03 oct. 2005, 12:11

Envoie toujours, mais je ne promets rien :?

par azram » 03 oct. 2005, 12:08

oui zeus, absolument, c est bien la 1ere chose que j ai verifié et re re re re verifié :)

je suis pantois

@ cyrano : si tu veux te pencher sur le bleme en peu plus en profondeur, je t envoie les accés par mp .. je t en serai trés reconnaissant .. car j ai beau chercher une autre maniere de faire , j en trouve pas ...

suis dépité la ...

par zeus » 03 oct. 2005, 12:00

Je viens d'arriver et je n'ai pas suivi tout le post mais selon le message d'erreur, le problème se situe au niveau de

Code : Tout sélectionner

(id_journ,page,desc)
est-ce que tu es sûr de la syntaxe des champs ???

par Cyrano » 03 oct. 2005, 11:57

:shock: C'est quand même pas normal et ça ne règle pas le problème si tu ne peux pas insérer de texte.... Il doit sûrement y avoir une boulette ailleurs, j'en suis convaincu, mais quoi, mystère :-k

par azram » 03 oct. 2005, 11:56

N'allons pas plus loin, le problème est là: si le champ est en VARCHAR, il faut encadrerla valeur d'apostrophes, sinon, il sera lu comme un entier et ne sera pas inséré.

Donc le code de génération doit être modifié comme suit:
$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;
}
je viens d'essayer et ..

Code : Tout sélectionner

Requete generee:INSERT INTO sommaire (id_journ,page,desc) VALUES ('65','page 1','aaa'), ('65','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 ('65','page 1','aaa'), ('65','page 2','bbb')' at line 1
sa m angoisse la :(

par azram » 03 oct. 2005, 11:53

apparement sa viendrait de la variable $desc
car si je l enleve et que je m en occupe pas
sa marche ..
/* On initialise la requête SQL */
$sql = "INSERT INTO sommaire (id_journ,page) VALUES ";
/* On ajoute les valeurs */
for($i = 0; $i<$nb_lignes; $i++)
{
    $sql .= "($id_new,'".$tableau_1[$i]."')";
    $sql .= ($i < ($nb_lignes - 1)) ? ", " : null;
}
là il m insere bien

Code : Tout sélectionner

Requete generee:INSERT INTO sommaire (id_journ,page) VALUES (64,'page 1'), (64,'page 2')

par Cyrano » 03 oct. 2005, 11:41

N'allons pas plus loin, le problème est là: si le champ est en VARCHAR, il faut encadrerla valeur d'apostrophes, sinon, il sera lu comme un entier et ne sera pas inséré.

Donc le code de génération doit être modifié comme suit:
$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;
}

par azram » 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

par Cyrano » 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.

par azram » 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 => ;)

par Cyrano » 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

par azram » 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 ?

par Cyrano » 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.

par azram » 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 :)