Double foreach

Mammouth du PHP | 1029 Messages

21 oct. 2005, 13:33

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
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 1311 Messages

21 oct. 2005, 13:36

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 oct. 2005, 13:46

Je ne comprend pas le fonctionnement de ton foreach :shock:
Tes variables POST contiennent des tableaux ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
pjl
ViPHP | 2119 Messages

21 oct. 2005, 14:07

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 ?

Mammouth du PHP | 1311 Messages

21 oct. 2005, 14:13

a mon avis il veu simplement construire une requete a partir de tableau :?: :?:

Mammouth du PHP | 1029 Messages

21 oct. 2005, 14:57

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.
L'expérience est la somme de toutes nos erreurs.

ViPHP
pjl
ViPHP | 2119 Messages

21 oct. 2005, 14:59

sauf que chaque update de la boucle va annuler le précédent update.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 oct. 2005, 15:01

tes POST contiennent des tableaux ??? :shock:

fait un var_dump sur tes posts et donne nous ce qui est affiché
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1029 Messages

21 oct. 2005, 15:50

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 " }
L'expérience est la somme de toutes nos erreurs.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 oct. 2005, 15:54

: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 ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1029 Messages

21 oct. 2005, 16:09

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
L'expérience est la somme de toutes nos erreurs.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 oct. 2005, 16:13

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);
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 oct. 2005, 19:22

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

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 oct. 2005, 14:13

: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 ... ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1029 Messages

24 oct. 2005, 11:05

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??
L'expérience est la somme de toutes nos erreurs.