Page 1 sur 2
Double foreach
Posté : 21 oct. 2005, 13:33
par Maitrepylos
Bonjour, je voudrais arriver à ce résultas
if(isset($heure))
{
foreach ($_POST['Date1'] as $value,$_POST['Heure'] as $value2) {
$sql = "UPDATE table1
SET champs1 = $value
champs2 = $value2";
pg_query($sql);
}
Mais bon mon foreach n'est pas bon.
Comment puis-je parcourir ces deux tableaux.
Merci de votre aide
Posté : 21 oct. 2005, 13:36
par jeff
va voir du coté de la fonction join
voici un exemple que j'utilise dans une classemais non tester encore)
public function Update($valeur,$chaine=null)
{
$req='UPDATE '.join(",",$this->Atable);
$req.=' SET'.join(",",$this->Achamp=$valeur);
if($chaine!=null)
$req.=$chaine;
$this->db->execute($req);
return $this->db->change_rows();
}
ou $this->Achamp et $valeur sont des tableaux
Posté : 21 oct. 2005, 13:46
par zeus
Je ne comprend pas le fonctionnement de ton foreach
Tes variables POST contiennent des tableaux ?
Posté : 21 oct. 2005, 14:07
par pjl
je ne comprends pas le principe.
grosso modo, avec le foreach, ca te fait une boucle mais ton update fait la MAJ de toute la table en même temps.
Quel est l'intéret de cette boucle ?
Posté : 21 oct. 2005, 14:13
par jeff
a mon avis il veu simplement construire une requete a partir de tableau

Posté : 21 oct. 2005, 14:57
par Maitrepylos
oui mes $_post contiennent un tableau.
et je voudrais récupérer les données pour faire un sql autant de fois que j'ai de données dans mes tableaux.
Posté : 21 oct. 2005, 14:59
par pjl
sauf que chaque update de la boucle va annuler le précédent update.
Posté : 21 oct. 2005, 15:01
par zeus
tes POST contiennent des tableaux ???
fait un var_dump sur tes posts et donne nous ce qui est affiché
Posté : 21 oct. 2005, 15:50
par Maitrepylos
voila
Code : Tout sélectionner
array(31) {
[0]=>
string(1) "2"
[1]=>
string(1) "2"
[2]=>
string(1) "2"
[3]=>
string(0) ""
[4]=>
string(0) ""
[5]=>
string(1) "2"
[6]=>
string(0) ""
[7]=>
string(0) ""
[8]=>
string(1) "2"
[9]=>
string(0) ""
[10]=>
string(0) ""
[11]=>
string(1) "2"
[12]=>
string(0) ""
[13]=>
string(0) ""
[14]=>
string(1) "2"
[15]=>
string(0) ""
[16]=>
string(1) "2"
[17]=>
string(1) "2"
[18]=>
string(0) ""
[19]=>
string(1) "2"
[20]=>
string(0) ""
[21]=>
string(1) "2"
[22]=>
string(0) ""
[23]=>
string(0) ""
[24]=>
string(0) ""
[25]=>
string(0) ""
[26]=>
string(0) ""
[27]=>
string(0) ""
[28]=>
string(0) ""
[29]=>
string(0) ""
[30]=>
string(0) ""
}
array(31) {
[0]=>
string(10) "2005-10-1 "
[1]=>
string(10) "2005-10-2 "
[2]=>
string(10) "2005-10-3 "
[3]=>
string(10) "2005-10-4 "
[4]=>
string(10) "2005-10-5 "
[5]=>
string(10) "2005-10-6 "
[6]=>
string(10) "2005-10-7 "
[7]=>
string(10) "2005-10-8 "
[8]=>
string(10) "2005-10-9 "
[9]=>
string(11) "2005-10-10 "
[10]=>
string(11) "2005-10-11 "
[11]=>
string(11) "2005-10-12 "
[12]=>
string(11) "2005-10-13 "
[13]=>
string(11) "2005-10-14 "
[14]=>
string(11) "2005-10-15 "
[15]=>
string(11) "2005-10-16 "
[16]=>
string(11) "2005-10-17 "
[17]=>
string(11) "2005-10-18 "
[18]=>
string(11) "2005-10-19 "
[19]=>
string(11) "2005-10-20 "
[20]=>
string(11) "2005-10-21 "
[21]=>
string(11) "2005-10-22 "
[22]=>
string(11) "2005-10-23 "
[23]=>
string(11) "2005-10-24 "
[24]=>
string(11) "2005-10-25 "
[25]=>
string(11) "2005-10-26 "
[26]=>
string(11) "2005-10-27 "
[27]=>
string(11) "2005-10-28 "
[28]=>
string(11) "2005-10-29 "
[29]=>
string(11) "2005-10-30 "
[30]=>
string(11) "2005-10-31 "
}
Posté : 21 oct. 2005, 15:54
par zeus

c'est fort !!! Je savais pas qu'on pouvais le faire
Sinon, est-ce que tu as la possibilité de tout mettre dans le même tableau avant de les passer en POST ?
Posté : 21 oct. 2005, 16:09
par Maitrepylos
Non, justement et c'est bien ce qui m'embête, je voudrais associer chaque données dans un code sql et faire un while.
donc
tableau1_1+tableau2_1 puis faire requete sql
tableau1_2+tableau2_2 puis faire requete sql
etc....
Bon W-K
Merci de votre aide
Posté : 21 oct. 2005, 16:13
par zeus
Donc, si je suis bien, les valeurs correspondent d'un tableau à l'autre en fonction de l'index.
Essaye ce code, suit bien les commentaires et n'hésite pas à me poser des questions
//parcours du 1er tableau en mettant les index dans $index et les valeurs
// dans $valeur
foreach ($_POST['Date1'] as $index=>$value) {
//Récupération de la valeur du tableau 2 dont l'index est celui du tableau 1
$value2 = $_POST['Heure'][$index];
//Construction de la requete de mise à jour
$sql = "UPDATE table1
SET champs1 = $value
champs2 = $value2";
//Exécution de la requete de mise à jour
pg_query($sql);
}
Posté : 21 oct. 2005, 19:22
par Truc

c'est fort !!! Je savais pas qu'on pouvais le faire
Euh .. et les case a cocher name="case[]" va retourner un tableau dans la variables POST, pas nouveau
c'est vrai que la requete tel qu'elle est mainenant n'a aucun interet a moins de mettre en variable aussi le nom de la table ou des champs ou encore une clause WHERE.
Et pour dire un truc intelligent tu va avoir une erreur dans la requete il manque une virgule entre l'affectation du champ 1 et champ 2.
$sql = "UPDATE table1
SET champs1 = $value ,
champs2 = $value2";
[/php]
Posté : 22 oct. 2005, 14:13
par zeus

c'est fort !!! Je savais pas qu'on pouvais le faire
Euh .. et les case a cocher name="case[]" va retourner un tableau dans la variables POST, pas nouveau
C'est vrai que j'immaginais plus un truc du genre
Code : Tout sélectionner
<input type="text" name="Date1" value="<?= print_r(array) ?>"> et j'était très surpris que ça fonctionne puisque j'était persuadé du contraire ... Après ta remarque, je pousse un ouf de soulagement, je suis pas encore bon à jeter
c'est vrai que la requete tel qu'elle est mainenant n'a aucun interet a moins de mettre en variable aussi le nom de la table ou des champs ou encore une clause WHERE.
Pas forcément : si il ne factorise pas le traitement et qu'il a toujors lieu sur la mêle table avec la même condition, ces parametres peuvent suffire.
Mais je reconnais que cette requete ne correspond surement pas à ce qu'il attend, mais du moment qu'il a compris la logique ...

Posté : 24 oct. 2005, 11:05
par Maitrepylos
Bonjour, et merci pour vos réponse:
Ma question maintenant est :
ma commande sql, génère 31 Update un a la suite de l'autre, est ce que le pg_query , va bien me faire c'est 31 updates??