Probleme d'insertion SQL

Eléphanteau du PHP | 21 Messages

06 févr. 2012, 14:26

Bonjour cher internaute,

J'ai creer un formulaire avec un foreach ainsi (example raccourci) :
<?php
	$nb=10;
	for( $i = 0 ; $i < $nb ; $i++) 
	{
	echo '<input type="text" name="jour[]" value="" />';
	}
?>
J'ai essayer de récupérer les valeurs afin de les ajouters sur une base de données mais la requête reste nul

ma table : test
mon champs 1 : jour1
mon champs 2 : jour2
mon champs 3 : jour3
ainsi de suite .... ( Je sais qu'il est possible de créer plusieurs lignes dans un seule champs mais j'ignore comment on fait ;) )

mon code :
<?php
	$cxn=mysql_connect('localhost','########', '#########') or die("echec 1.");
	mysql_select_db('###########',$cxn) or die('Erreur de selection '.mysql_error());
	
$sql='INSERT INTO test(id, jour1, jour2, jour3, jour4, jour5, jour6, jour7, jour8, jour9, jour10) VALUES (';

foreach($_GET['jour'] as $key=>$value)
{
   $sql.= $value.',';
}
$sql.= substr($sql,0,strlen($sql)-1);
$sql.=');'

$result=mysql_query($sql) or die("Requête INSERT en échec.");

?>
Si quelqu'un connais le probleme, ou s'il y a une solution alternative je vous en serait reconnaissant, merci d'avance ;)
Pourquoi faire simple quand on peut faire compliquer ?

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2012, 14:43

Affiches $sql et utilises aussi mysql_error() pour avoir le message d'erreur.

ViPHP
ViPHP | 2577 Messages

06 févr. 2012, 14:44

Le problème, c'est que tu n'indiques pas l'erreur.
Il faudrait ajouter à ton die() le code sql de l'insert pour un contrôle visuel rapide et le message d'erreur SQL (fonction mysql_error) pour savoir de quoi il retourne exactement.

Edit : tu mets 11 colonnes et 10 valeurs (voir colonne id)

Eléphanteau du PHP | 21 Messages

06 févr. 2012, 16:28

J'ai inserer la fonction // or die('.mysql_error()); // un peu partout pour essayer ;) Aucune réponse,
je doit avoir un problème de syntaxe sur la requête : // $result=mysql_query($sql) or die(.mysql_error($sql)); //
Pourquoi faire simple quand on peut faire compliquer ?

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2012, 16:40

Sans le point.
$result=mysql_query($sql) or die(mysql_error($sql));
Mais avant, avais-tu l'affichage de "Requête INSERT en échec" ?
Car si jamais tu ne l'as eu c'est sans doute que tu as une erreur de syntaxe quelque part mais que ton serveur est configuré pour ne pas afficher les erreurs.

Eléphanteau du PHP | 21 Messages

06 févr. 2012, 16:56

Oui, mais lorsque j'utilise la syntaxe
$result=mysql_query($sql) or die("Requête INSERT en échec.");
il m'affiche l'erreur suivante :

Parse error: syntax error, unexpected T_VARIABLE in /home/#####/public_html/#########.php on line 52

ps: j'ai cacher les identifiants et le nom de page par des #
Pourquoi faire simple quand on peut faire compliquer ?

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2012, 16:58

Ouep, faut regarder la ligne au dessus, tu as oublié un point virgule à la fin :
$sql.=');'

Eléphanteau du PHP | 21 Messages

06 févr. 2012, 17:08

Ah oui, effectivement ;)

maintenant il m'affiche l'erreur :

Warning: mysql_error() expects parameter 1 to be resource, string given in /home/#####/public_html/##############.php on line 52

On progresse xD

Merci en tout cas pour l'intérêt que vous portez a ma requête ;)
Pourquoi faire simple quand on peut faire compliquer ?

Eléphanteau du PHP | 21 Messages

06 févr. 2012, 17:10

j'ai enlever le $sql a coter du mysql_error et du coup il a un problème avec la ligne // INSERT INTO test(id, jour1, jour2, jour3, jour4, jour5, jour6, jour7, jour8, jour9, jour10) //

Ca doit venir de la configuration de ma table :(
Pourquoi faire simple quand on peut faire compliquer ?

Eléphanteau du PHP | 21 Messages

06 févr. 2012, 18:39

CA MARCHE, ENFIN !!!!!!!!! YOUPI ;)

Merci de l'intérêt que vous avez porter a ma requête.

Pour ceux qui ont besoin de la réponse voila le code que j'ai utiliser :

Pour l'affichage des inputs :
<?php
$nb=10;
for( $i = 0 ; $i < $nb ; $i++) 
{
echo '<td><input type="text" name="jour[]" value="" /></td>';
}
?>
Pour l'insertion des données dans la base de données :
<?php

$cxn=mysql_connect('localhost','mon_user', 'mon_mot_de_passe') or die("echec 1.");
mysql_select_db('ma_base_de_donnees',$cxn) or die('Erreur de selection '.mysql_error());
	
$sql='INSERT INTO test(jour1, jour2, jour3, jour4, jour5, jour6, jour7, jour8, jour9, jour10) VALUES (';

foreach($_GET['jour'] as $key=>$value)
{
   $sql.= $value.',';
}
$sql= substr($sql,0,strlen($sql)-1);
$sql.=');';

$result=mysql_query($sql) or die(mysql_error())


?>
Voilou, enjoy the programation !!!!!!
Pourquoi faire simple quand on peut faire compliquer ?