Questions (boucle sur tables, requêtes via formulaire, etc.)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 nov. 2005, 20:22

euh.. tu n'a pas compris le fonctionnement de foreach() peut etre .... c'est une boule qui doit boucler sur le tableau fouris en entrée et renvois a chaque tour une valeur (ici $table)

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

Eléphant du PHP | 172 Messages

26 nov. 2005, 20:57

J'avais déjà été bien entendu voir la définition de la fonction, mais c'est vrai que j'ai toujours du mal à comprendre au premier abord.

Mais comment je peut récupérer la valeur de $vict_dom à chaque tour.
Car en faisant echo, j'obtiens 6, 10, 14, le premier est bon, mais ensuite tout s'additionne, ce qui est normal, je voudrais donc obtenir comme résultat 6, 4, 4.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 nov. 2005, 21:01

faut remettre le compteur a zéro a chaque fin de boucle while():
foreach()
{
   while()
   {
      ...
   }
   $vict_dom=0;
}

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

Eléphant du PHP | 172 Messages

26 nov. 2005, 21:18

Merci, ca marche.

Mais je ne sais toujours pas comment je pourrais faire pour obtenir ce que je souhaite.

J'ai essayé un truc du genre
echo $vict_dom['1'];
Ce qui correspondrait à $vict_dom de la table bastia_matchs

Ca marche pas :cry:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 nov. 2005, 22:18

fait un affichage apres la boucle (et avant la mise a zéro) .

la variable n'est pas un tableau pourquoi vouloire faire un affichage comme si c'était le cas :wink:

=>
echo $vict_dom;

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

Eléphant du PHP | 172 Messages

26 nov. 2005, 23:56

Oui, mais si j'utilise un simple echo, je ne peut séparer mes résultats, cela m'affichera tout d'un coup.

Ce que je voudrais :

$vict_dom_sedan = ?
$vict_dom_bastia = ?
$vict_dom_amiens = ?

Mais ça je ne sais pas comment y arriver.

je ne sais pas si je suis clair dans l'explication de ce que souhaite avoir.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 nov. 2005, 00:34

on va reprendre :wink:
essai ça:
$tab=array('sedan_matchs', 'bastia_matchs', 'amiens_matchs');

foreach($tab as $table)
    {
        $vict_dom=0;
		$def_dom=0;
		$nul_dom=0;
		
		$tt_bp_dom=0;
		$tt_bc_dom=0;  

		$dom = mysql_query("SELECT * FROM ".$table." WHERE lieu = 'dom'");
		while($resultat_dom = mysql_fetch_array($dom))    
		{
				$bp_dom = $resultat_dom['bp'];
				$bc_dom = $resultat_dom['bc'];
				
				$tt_bp_dom += $bp_dom;
				$tt_bc_dom += $bc_dom;
				
				if($bp_dom > $bc_dom)                    
					$vict_dom++;                    
				elseif($bp_dom < $bc_dom)                    
					$def_dom++;                    
				else                    
					$nul_dom++;                   
		}
		echo "vict_dom=".$vict_dom." pour club".$table;	
	}

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

Eléphant du PHP | 172 Messages

27 nov. 2005, 15:52

Je te remercie, mais j'ai toujours le même problème, tout ceci doit figurer dans un tableau, alors par exemple si je veux afficher sur la 1ère ligne, le 2ème résultat, sur la 10ème ligne, le 3ème résultat, et sur la 5ème le 1er résultat, je ne vois pas comment faire.

M'enfin, tant pis, je vais exécuter mon code autant de fois qu'il n'y a de table, ce sera certes beaucoup plus lourd, mais au moins je pourrais en faire ce que je veux, car là j'ai trop de mal :?

Merci quand même truc de t'être pencher sur mon problème :wink:

ViPHP
ViPHP | 649 Messages

27 nov. 2005, 16:13

Ce que tu nous dit, c'est que tu as autant de table qu'il y a de résultats? et une seule entrées par table je suppose? Le truc: mets tout dans une seule table avec un champ "équipe" qui les distinguera.
Image

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 nov. 2005, 16:27

si je veux afficher sur la 1ère ligne, le 2ème résultat, sur la 10ème ligne, le 3ème résultat, et sur la 5ème le 1er résultat
pas tres clair ça :?
M'enfin, tant pis, je vais exécuter mon code autant de fois qu'il n'y a de table
tu ne pouvais de toute façon pas passer a coté de ça étant donné que tu as les infos dans des tables différentes.
Si tu n'avais qu'une table pour tous les clubs tu aurait pu te servir de "GROUP BY" sur le club, plus facile a présenter ensuite.

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

Eléphant du PHP | 172 Messages

27 nov. 2005, 16:29

Ce que tu me suggère, je ne pense pas pouvoir le faire, car mes tables sont constituées de cette façon :

http://cjoint.com/data/lBpwAGJz0t.htm

Une table par équipe.

ViPHP
ViPHP | 649 Messages

27 nov. 2005, 16:32

Si toute tes tables ont cette structure, tu ajoutes un champ équipe. Ce qui correspond présentement aux noms des tables. Il est inutile de faire une table juste pour une entrées. Dans ta boucle, elle répéterait l'action d'imprimer les résultats pour chaque équipe. Tu comprends?
Image

Eléphant du PHP | 172 Messages

27 nov. 2005, 17:02

M'enfin, tant pis, je vais exécuter mon code autant de fois qu'il n'y a de table
tu ne pouvais de toute façon pas passer a coté de ça étant donné que tu as les infos dans des tables différentes.
Si tu n'avais qu'une table pour tous les clubs tu aurait pu te servir de "GROUP BY" sur le club, plus facile a présenter ensuite.
Donc ça fait trois plombes que je cherche à faire quelque chose d'impossible :cry:
Dans ta boucle, elle répéterait l'action d'imprimer les résultats pour chaque équipe. Tu comprends?
bah en fait pas trop, je vais donc mettre mes tables les unes derrières les autres dans une seule.
Ensuite il faut que j'enlève l'auto-incrément que j'ai mis sur mon premier champ, mais lorsque je ferais une requête d'insertion dans la table, on peut faire que les nouvelles entrées se fassent à la suite de chaque équipe ? et non à la fin de la table .

Et pour le code, cela empêchera son exécution X fois ?
Donc autant de requêtes que d'équipes ?

Désolé si mes questions vous paraissent stupides :oops:

ViPHP
ViPHP | 649 Messages

27 nov. 2005, 17:07

Sinon, tu peux faire une seule requête qui sélectionnera sur toutes les tables:

SELECT * FROM table1 AS table1, table2 AS table2, table3 AS table3 etc.
Image

Eléphant du PHP | 172 Messages

27 nov. 2005, 17:18

Ok merci alexbad, je vais essayer ça.