Implode ?

Eléphanteau du PHP | 21 Messages

20 févr. 2012, 16:15

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 ?
Pourquoi faire simple quand on peut faire compliquer ?

Eléphant du PHP | 179 Messages

20 févr. 2012, 16:25

$sql="INSERT INTO planning(jour,heure,minute,bidule) VALUES ('".$jour. "','".$heure. "','".$minute. "','".$bidule. "')";

Eléphanteau du PHP | 21 Messages

20 févr. 2012, 16:29

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 !
Pourquoi faire simple quand on peut faire compliquer ?

ViPHP
xTG
ViPHP | 7331 Messages

20 févr. 2012, 16:39

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...

Eléphant du PHP | 179 Messages

20 févr. 2012, 16:42

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 :)

Eléphanteau du PHP | 21 Messages

20 févr. 2012, 19:28

Sympa ce concept de tableau, ça marche niquel !

Merci beaucoup Thibaud ! :D
Pourquoi faire simple quand on peut faire compliquer ?