Tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tableau

par Dom! » 07 sept. 2006, 12:18

Ha vi effectivement ca fonctionne maintenant.

Merki :D

par charabia » 07 sept. 2006, 11:40

'select nom from tb_clubs order by id'
Tu veux afficher l'ID alors que tu ne demandes que le nom.

par Dom! » 07 sept. 2006, 11:38

Bon j'ai tout essayé mais rien la liste déroulante visiteur_aller et visiteur retourn ne retourne aucune valeur !

Je ne comprend pas pourquoi ?

J'affiche ma liste déroulante comme ceci :
print '<td bgcolor="#000099"><select name="visiteur_aller'.$i.'" class="champ">'; 
$sqldipe = 'select nom from tb_clubs order by id';
if ($resselectdipe = mysql_query($sqldipe)) {
	while ($selectdipe = mysql_fetch_array($resselectdipe))						
	print '<option value="'.$selectdipe["id"].'">'.$selectdipe["nom"].'</option>';                              
}             
	print '</select></td>';  
J'indique que la valeur de la liste déroulante est $selectdipe["id"] et que l'affichage pour l'utilisateur est $selectdipe["nom"]

Pourquoi aucune valeur n'est retournée ?
Meme avec la méthode GET....
Merci pour votre aide

par charabia » 06 sept. 2006, 11:53

Quelle est ta syntaxe pour tester ton champ ? Normalement tu fais exactement la même chose pour la liste ça devrait fonctionner.

par Dom! » 06 sept. 2006, 11:33

Oui effectivement ! Mon probleme c'est que quand il y avait les textbox je lui disé que si elle etait vide ca m'inscrit US CAGNES.

Et la je n'arrive pas à lui dire que ma liste box est vide... comment pourais je faire ? merci

par charabia » 06 sept. 2006, 10:54

Si ça marchait avant que tu ne mettes les listes, je pense que le souci ne vient donc pas de la page de traitement mais bien de la page de ton formulaire. Tu as dû louper un petit quelque chose.

Parce qu'une fois que les listes sont OK, la page de traitement fonctionne de la même façon puisqu'il ne reste qu'une valeur à la fin, que ce soit en liste ou en champ simple.

par Dom! » 06 sept. 2006, 10:41

En faite j'ai fais un formulaire en trois étapes :

1. l'utilisateur choisit le nombre de journées de championnat au match aller ( $nb ).

2. l'utilisateur choisit l'equipe concernées. ( $id_equipe )

3. en fonction de $nb j'ai un tableau dynamique ( voir les précedents post ) qui s'affiche. si l'utilisateur choisit 3 journées au match aller j'aurais un tableau de 3 lignes...

Ensuite l'utilisateur enregistre les journée en cliquant sur enregistré. La page action dont je vous ai indiqué son contenu dans mon dernier post traite les données. Les valeurs s'ajoute dans la bas sql SAUF $visiteur_aller et $visiteur_retour correspondant à $adversaire dans ma base.

Pour info ca marché trés bien avant que je décide de mettre des listes déroulantes, avant l'utilisateur saisissé manuellement les equipes.

J'espere que vous pourrez m'aider .... merci d'avance

par Ryle » 06 sept. 2006, 10:23

Quand on te parler d'indenter et d'aligner les différentes portions du code, il ne s'agit pas de tout coller à gauche, mais de mettre des tabulations pour que toutes les commandes qui découlent de la précédent soit décalées (en règle générale, l'ouverture d'une accolade implique un décalage d'une tabulation, la fermeture, le retour à la position initiale).

Voici ce que donne ton code indenté correctement, c'est quand même plus facile de voir où commencent et s'arrêtent les boucles et les if nan ? :)
<?php  
require_once('cagnes.php');  
include ("conffile.php"); 
@ mysql_pconnect($hostname, $user, $passwd) or die ("Impossible de se connecter"); 
mysql_select_db($dbname); 

// Matchs aller 
for($i=1;$i<=$nb;$i++){ 
	$journee = $i; 
	$match_aller = 1;  
	$temp = "date_aller".$i; 
	eval('$date = $'.$temp.';');  
	$semaine = strtotime($date); 
	$semaine = strftime("%W", $semaine);  
	$temp = "no_match_aller".$i; 
	eval('$no_match = $'.$temp.';'); 
	$temp = "visiteur_retour".$i; 
	eval('$test = $'.$temp.';'); 
	if ($test == "") {     
		$adomicile = 1; 
		$temp = "visiteur_aller".$i; 
		eval('$adversaire = $'.$temp.';'); 
	} else {  
		$adomicile = 0; 
		$temp = "visiteur_retour".$i; 
		eval('$adversaire = $'.$temp.';'); 
	} 
	$sql_ajout = 'insert into tb_matchs values (0,'.$journee.',"'.$date.'","",'.$id_equipe.',"'.$no_match.'",'.$match_aller.','.$adomicile.',"'.$adversaire.'","","","","","","","","","",'.$semaine.')'; 
	$nbsql += 1; 
	$result_ajout = mysql_query($sql_ajout); 
	$ecrire = 0; 
} 

// Matchs retour 
for($i=1;$i<=$nb;$i++){  
	$journee = $nb + $i; 
	$match_aller = 0;  
	$temp = "date_retour".$i; 
	eval('$date = $'.$temp.';');  
	$semaine = strtotime($date); 
	$semaine = strftime("%W", $semaine);   
	$temp = "no_match_retour".$i; 
	eval('$no_match = $'.$temp.';');  
	$temp = "visiteur_aller".$i; 
	eval('$test = $'.$temp.';'); 
	if ($test == "") {     
		$adomicile = 1; 
		$temp = "visiteur_retour".$i; 
		eval('$adversaire = $'.$temp.';'); 
	} else {  
		$adomicile = 0; 
		$temp = "visiteur_aller".$i; 
		eval('$adversaire = $'.$temp.';'); 
	}     
	$sql_ajout = 'insert into tb_matchs values (0,'.$journee.',"'.$date.'","",'.$id_equipe.',"'.$no_match.'",'.$match_aller.','.$adomicile.',"'.$adversaire.'","","","","","","","","","",'.$semaine.')'; 
	$nbsql += 1; 
	$result_ajout = mysql_query($sql_ajout); 
	$ecrire = 0; 
} 
// echo "<meta http-equiv=\"refresh\" content=\"2; url=insert_calendar.php?nb=\">"; 
?>
Quant à ton problème, à quoi est égale $nb ? Les variables $visiteur_aller1, $visiteur_aller2 ... existent elles ?

A la place des eval, j'utiliserais la syntaxe $$ ou ${} de php pour lire les valeurs. Ca me semble plus simple : ${"visiteur_aller".$i}

par Dom! » 06 sept. 2006, 09:37

Merci pour la définition... j'ai fais ce que tu m'a dis mais je pens que le probleme vient de la page de traitement des données.

Voici comment je procéde :
<?php 
require_once('cagnes.php'); 
include ("conffile.php");
@ mysql_pconnect($hostname, $user, $passwd) or die ("Impossible de se connecter");
mysql_select_db($dbname);

// Matchs aller
for($i=1;$i<=$nb;$i++){
$journee = $i;
$match_aller = 1; 
$temp = "date_aller".$i;
eval('$date = $'.$temp.';'); 
$semaine = strtotime($date);
$semaine = strftime("%W", $semaine); 
$temp = "no_match_aller".$i;
eval('$no_match = $'.$temp.';');
$temp = "visiteur_retour".$i;
eval('$test = $'.$temp.';');
if ($test == "") {	
$adomicile = 1;
$temp = "visiteur_aller".$i;
eval('$adversaire = $'.$temp.';');
} else { 
$adomicile = 0;
$temp = "visiteur_retour".$i;
eval('$adversaire = $'.$temp.';');
}
$sql_ajout = 'insert into tb_matchs values (0,'.$journee.',"'.$date.'","",'.$id_equipe.',"'.$no_match.'",'.$match_aller.','.$adomicile.',"'.$adversaire.'","","","","","","","","","",'.$semaine.')';
$nbsql += 1;
$result_ajout = mysql_query($sql_ajout);
$ecrire = 0;
}

// Matchs retour
for($i=1;$i<=$nb;$i++){ 
$journee = $nb + $i;
$match_aller = 0; 
$temp = "date_retour".$i;
eval('$date = $'.$temp.';'); 
$semaine = strtotime($date);
$semaine = strftime("%W", $semaine);  
$temp = "no_match_retour".$i;
eval('$no_match = $'.$temp.';'); 
$temp = "visiteur_aller".$i;
eval('$test = $'.$temp.';');
if ($test == "") {	
$adomicile = 1;
$temp = "visiteur_retour".$i;
eval('$adversaire = $'.$temp.';');
} else { 
$adomicile = 0;
$temp = "visiteur_aller".$i;
eval('$adversaire = $'.$temp.';');
}	
$sql_ajout = 'insert into tb_matchs values (0,'.$journee.',"'.$date.'","",'.$id_equipe.',"'.$no_match.'",'.$match_aller.','.$adomicile.',"'.$adversaire.'","","","","","","","","","",'.$semaine.')';
$nbsql += 1;
$result_ajout = mysql_query($sql_ajout);
$ecrire = 0;
}
// echo "<meta http-equiv=\"refresh\" content=\"2; url=insert_calendar.php?nb=\">";
?>
Le probléme c'est que $adversaire n'a pas de valeur. Je n'arrive pas à récuperer la valeur de $visiteur_aller pour les match aller et visiteur_retour pour les matchs retour !

Voyez vous ou est le probleme ?
merci

par charabia » 05 sept. 2006, 17:50

Indenter c'est d'aligner correctement les différentes portions de ton code ;)

J'ai testé chez moi avec une bonne indentation et ça fonctionne...

par Dom! » 05 sept. 2006, 12:08

Non l'erreur ne vient pas de la !

Par contre pourrais tu me dire ce que signifie indenter ? :shock:

et si vous avez une idée sur mon erreur ... merciiiiiii

par charabia » 05 sept. 2006, 11:13

print '</select></td>';   
  //print '<td bgcolor="#000099"><input name="visiteur_aller'.$i.'" type="text" class="champ" ></td>'; 
                   
   print '<td bgcolor="#000099">'; 
Tu as oublié le mettre le début de ton second select.
print '</select></td>';   
 print '<td bgcolor="#000099"><input name="visiteur_aller'.$i.'" type="text" class="champ" >'; 
Et puis un conseil, indentes bien ton code si tu veux repérer rapidement les erreurs.

par Nathaire » 05 sept. 2006, 11:03

As-tu essayé de regarder le code source de la pag que tu génère, là tu trouveras peut-être le problème...

Tu peux aussi poster la source générée pour le SELECT

par Dom! » 05 sept. 2006, 10:48

Voici :
          <? 
				
				for($i=1;$i<=$nb;$i++){
				print '<tr> ';
                  print '<td bgcolor="#000099"><input name="date_aller'.$i.'" type="text" class="champ" size="10" maxlength="10"></td>';
                  print '<td bgcolor="#000099"><input name="no_match_aller'.$i.'" type="text" class="champ" size="4"></td>';
                 // print '<td bgcolor="#000099"><input name="visiteur_retour'.$i.'" type="text" class="champ" ></td>';
				  
				  print '<td bgcolor="#000099"><select name="visiteur_retour'.$i.'" class="champ">'; 

$sqldip = 'select nom from tb_clubs order by id';
   // $nbsql += 1;
if ($resselectdip = mysql_query($sqldip)) {
while ($selectdip = mysql_fetch_array($resselectdip))
 print '<option value="'.$selectdip["id"].'" '.$temp.'>'.$selectdip["nom"].'</option>';
                                 
 }

print '</select></td>';  
  //print '<td bgcolor="#000099"><input name="visiteur_aller'.$i.'" type="text" class="champ" ></td>';
				  
   print '<td bgcolor="#000099">'; 
  
 			
$sqldipe = 'select nom from tb_clubs order by id';
   // $nbsql += 1;
	if ($resselectdipe = mysql_query($sqldipe)) {
         while ($selectdipe = mysql_fetch_array($resselectdipe))
 print '<option value="'.$selectdipe["id"].'" '.$temp.'>'.$selectdipe["nom"].'</option>';                      
        
}
           
print '</select></td>';  
				  
  print '<td bgcolor="#000099"><input name="no_match_retour'.$i.'" type="text" class="champ" size="4" maxlength="4"></td>';
  print '<td bgcolor="#000099"><input name="date_retour'.$i.'" type="text" class="champ" size="10" maxlength="10"></td>';
print '</tr>';
}
			
				
?>

par charabia » 05 sept. 2006, 10:44

Montres nous le code avec l'imbrication que tu as fait.