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 :shock:
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 ??? :shock:

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
:shock: 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
:shock: 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 :wink:

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
:shock: 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 :wink:
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??