Page 1 sur 1

Implode ?

Posté : 20 févr. 2012, 16:15
par Flavien-web
Bonjour internautes,

J'utilise la fonction implode pour trier et ajouter mes valeurs dans ma base de données :

Mon formulaire ( La j'ai quatres valeurs a récupérer, jour[], heure_1_[], heure_2_[], heure_3_[] )
<?php
 
 $n = 31;
 $nbLigneAvantBr = 11;
 $arrayJour=array('Lun','Mar','Mer','Jeu','Ven','Sam','Dim');
 $jour=$_POST['jour'];
 $keyJour=array_search($jour,$arrayJour);
 $jours = '<tr>';
 for ($i = 0; $i < $n; $i++)
 {
		 if (($i % $nbLigneAvantBr) == 0)
		 {
			$jours .= '</tr><tr>';
		 }
		 
	 $jours .= '<td><input name="jour[]" value="'.$arrayJour[($keyJour+$i)%7].' '.($i+1).'" />
	 <br /><br /><input type="text" name="heure_1_[]" value="" />
	 <br /><input type="text" name="heure_2_[]" value="" />
	 <br /><input type="text" name="heure_3_[]" value="" /><br /><br /></td>';
 }
$jours .=  '</tr>';
 ?>
Alors si il ne s'agit que d'une valeur a récupérer et a insérer, aucun problème avec ce code :
<?php
$cxn=mysql_connect('localhost','user', 'pass') or die("echec 1.");
mysql_select_db('mabdd',$cxn) or die('Erreur de selection '.mysql_error());
$sql="INSERT INTO planning(jour) VALUES ('" . implode("'),('", $_POST['jour']) . "')";
$result=mysql_query($sql) or die(mysql_error());
?>
Mais la ou je bloque c'est pour récupérer en meme temps toutes les valeurs et les ajouter a ma base, je n'arrive pas a trouver la syntaxe exact,
Faut t'il faire plusieurs requête sql ? Je suis perdu :p

Someone can help me please ?

Re: Implode ?

Posté : 20 févr. 2012, 16:25
par Thibaud C
$sql="INSERT INTO planning(jour,heure,minute,bidule) VALUES ('".$jour. "','".$heure. "','".$minute. "','".$bidule. "')";

Re: Implode ?

Posté : 20 févr. 2012, 16:29
par Flavien-web
Euh .... lol

J'ai deja essayé ça ! Il ne me prend que la dernière valeur et il ne m'insert qu'une seule ligne, en l'occurrence je dois insérer 31 lignes :P

Merci quand meme !

Re: Implode ?

Posté : 20 févr. 2012, 16:39
par xTG
Si tu veux jouer de l'implode tu n'as d'autre choix que de contruire un seul tableau contenant un tableau pour chaque valeurs en relation.
Mais tant que tu ne nous donneras pas la structure de ta table et ce que tu veux vraiment ça va être dur de te répondre.
D'autant plus que d'enregistrer les numéros des jours et les heures me parait bien bizarre...

Re: Implode ?

Posté : 20 févr. 2012, 16:42
par Thibaud C
ah ben il faut que tu fasses un foreach sur le tableau qui contient toutes tes lignes et que tu fasses cette requête qui est censé marcher pour tous les champs de la ligne.

Deux solutions soit tu retries les données qui arrive pour n'en faire qu'un tableau pour après faire un truc "clean"

Soit tu fais ca en brute.. mais bref ca n'en parlons pas ;).
$tab_ranger=array();
foreach ( $_POST['heure_1_'] as $key=>$value )
{
    $tab_ranger[$key]['heure_1']=$value;
    $tab_ranger[$key]['heure_2']=$_POST['heure_2_'][$key];
    $tab_ranger[$key]['heure_3']=$_POST['heure_3_'][$key];
}
// mon tableau est ranger maintenant :
foreach ($tab_ranger as $mes_valeurs )
{
   $ma_requete='INSERT INTO matable(heure1,heure2,heure3) VALUES ("'.$mes_valeurs['heure_1'].'","'.$mes_valeurs['heure_2'].'","'.$mes_valeurs['heure_3'].'")';

}
Moi je verrais ca comme ca, je n'ai pas testé, si t'as envie de creuser dans ce sens la :)

Re: Implode ?

Posté : 20 févr. 2012, 19:28
par Flavien-web
Sympa ce concept de tableau, ça marche niquel !

Merci beaucoup Thibaud ! :D