Requetes SQL o_O

Eléphanteau du PHP | 21 Messages

15 févr. 2012, 02:01

Bonsoir internautes,

Je recupere des valeurs dans un formulaire comme ça <input type="text" name="jour[]" value="" />

Ensuite je voudrais les ajoutés a une base mais sur plusieurs lignes, si je multiplie les requêtes sql il ne m'ajoute que la dernière valeur a chaque fois Example :

jour[1] -> lundi
jour[2] -> mardi
jour[3] -> merdecredi

Il va ajouter seulement le mercredi, meme si je fait trois " INSERT INTO ....... "

voici mon code :
foreach($_POST['jour'] as $key=>$value)
{
$jour=$key+1;
echo $value;
				 
}

$sql="INSERT INTO planning(jour) VALUES ('$value')";     // Pour trois différents valeur faudrait qu'il créer trois lignes !
Je suis un peu perdu, quelqu'un peut m'aider svp ;)

Merci d'avance
Pourquoi faire simple quand on peut faire compliquer ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 févr. 2012, 06:29

Salut,

Il faut mettre la requête SQL dans le foreach. Lorsqu'elle est en dehors il est normal de n'avoir qu'une requête vue que tu ne la fait qu'une fois et $value ne contient que la dernière valeur qu'elle s'est vue affecter.

Si tu utilise l'extension mysql il est préférable d'utiliser la fonction mysql_real_escape_string afin de protéger ta requête.


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 21 Messages

15 févr. 2012, 14:39

On m'as fournit la solution sur un autre forum !

Il s'agisser de " implode "
$sql="INSERT INTO planning(jour) VALUES ('" . implode("'),('", $_POST['jour']) . "')";
Merci a tous !
Pourquoi faire simple quand on peut faire compliquer ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 févr. 2012, 14:43

nikel tu a créer un trou de sécurité ^^

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 21 Messages

15 févr. 2012, 15:34

Ah o_O

Comment faire alors pour améliorer ça ?

J'essaye d'ajouter une valeur post en plus de toutes les valeurs que j'inclue dans l'implode, comment puis-je optimiser ce code afin qu'il fonctionne mais que en plus il n'y est pas cette faille de sécurité ? ;)
$sql="INSERT INTO planning(matricule, jour) VALUES ('" . implode("'),('$matricule','", $_POST['jour']) . "')";
Il m'affiche l'erreur : Column count doesn't match value count at row 1

Merci d'avance
Pourquoi faire simple quand on peut faire compliquer ?

ViPHP
xTG
ViPHP | 7331 Messages

15 févr. 2012, 20:10

Je répète ce qu'a posté moogli : mysql_real_escape_string()

Eléphanteau du PHP | 21 Messages

15 févr. 2012, 20:18

Code : Tout sélectionner

INSERT INTO planning(date, heure) VALUES mysql_real_escape_string('$date','" . implode("'),('$date','", $_POST['heure']) . "')";
Comme ça ?

Mes aptitudes au niveau des requêtes sql frôle le zéro ;)

Désolé si mes questions on l'air stupide mais j'arrive quand même a me manger le cerveau dessus pendant des heures :p
Pourquoi faire simple quand on peut faire compliquer ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 févr. 2012, 21:13

met la dans une requête et affiche pour voir ce que ça donne :)

après utilise phpmyadmin pour la tester :)

@+
Il en faut peu pour être heureux ......