8791 sujets

Développement web côté serveur, CMS

salut

je suis en train de créer un script de convocation de joueurs de foot, en utilisant la liste de joueurs de ma BDD:
upload/10889-table.jpg

mon script sert a sélectionner une équipe (1, 2, ou 0 pour "blessé"). Donc choix obligatoire par joueur.
Mon problème est que les boutons radio ne s'affichent pas correctement (reflet des valeurs de la BDD) mais renvoient les valeurs d'un choix antérieur (difficile d'être clair). En gros les boutons radio sont cochés comme je les avait cochés 2 validations pas "OK" auparavant
le code:

<?php
	include ("../connexion.php");
	$query = "SELECT * FROM joueurs";
	$result = mysql_query($query) or die ('Erreur! '. mysql_error());
	$nb_joueurs = mysql_num_rows($result);
?>

<form name="form1" method="post" action="admin_convoc2.php">
<table>
	<?php
	while ($j = mysql_fetch_array($result)){
		$joueur = $j['nom'];
	?>
	<tr>
	<td><?php echo $joueur; ?></td>
	<td><input type="radio" name="equipe[<?php echo $joueur ?>]" value="0" <?php if ($j[2]==0) {?> checked="checked"<?php } ?> ></td>
	<td><input type="radio" name="equipe[<?php echo $joueur ?>]" value="1"<?php if ($j[2]==1) {?> checked="checked"<?php } ?>></td>
	<td><input type="radio" name="equipe[<?php echo $joueur ?>]" value="2"<?php if ($j[2]==2) {?> checked="checked"<?php } ?>></td>
	</tr>
	<?php 
	}
	?>
</table>
<input type="submit" value="OK" name="envoi">
</form> 

<?php 
	$result1 = mysql_query($query) or die ('erreur'. mysql_error());
	while ($j = mysql_fetch_array($result1)){
		$joueur = $j[0];
		$equipe=$_POST['equipe'];
		$equipe=$equipe[$joueur];
		$query2 = "UPDATE joueurs SET equipe='$equipe' WHERE nom='$joueur'";
		$result2 = mysql_query($query2) or die ('Erreur !'. mysql_error());
	}
?>


Quelqu'un peut il m'aider, je suis sur d'être presque au bout ...
Modifié par el fab (27 Mar 2008 - 12:14)
Salut el fab Smiley cligne ,

el fab a écrit :

...je suis sur d'être presque au bout ...
Euh... oui mais non Smiley lol !

En vrac :

- PHP est un langage serveur et donc il est interprété avant que le code html soit généré puis affiché. Donc ce n'est pas parce que tu mets du code après le formulaire qu'il va attendre le clic sur le submit : c'est déjà trop tard Smiley langue ! Comme ton action pointe vers la page admin_convoc2.php (qui peut aussi bien être la même page qu'une autre), celle-ci doit commencer par quelque chose comme :
<?php
if (!empty($_POST)) { // si le formulaire a été soumis
...
UPDATE
...
}
?> 

- ta table joueurs contient le champ id qui sert généralement de clef unique (on lui rajoute souvent auto_increment en EXTRA pour se simplifier la vie) ce qui est une bonne idée... mais alors pourquoi te sers-tu du champ nom dans ton code ? C'est non seulement moins lisible mais en plus tu te compliques (voir l'exemple plus bas)

- à priori c'est inutile de donner un name à l'input submit...


Un petit exemple de comment faire :
<?php 
require_once('../connexion.php');
if (!empty($_POST)) {
	for ($i = 1; $i <= count($_POST['joueur']); $i++) {
		$query = 'UPDATE joueurs SET equipe = '.$_POST['joueur'][$i].' WHERE id = '.$i;
		$result = mysql_query($query) or die ('Erreur! '. mysql_error());
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	<title>test</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>
<body>
<?php
	$query = 'SELECT * FROM joueurs';
	$result = mysql_query($query) or die ('Erreur! '. mysql_error());
	$nb_joueurs = mysql_num_rows($result);
	
if ($nb_joueurs == 0) {
	echo '<p>Aucun joueur !</p>';
} else {
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
	<?php
	while ($enreg = mysql_fetch_array($result)){
	?>

	<tr>
	<td><?php echo $enreg['nom']; ?></td>
	<?php
	for ($i = 0; $i < 3; $i++) {
		$checked = ($i == $enreg['equipe']) ? 'checked="checked"' : '';
		echo '<td><input type="radio" name="joueur['.$enreg['id'].']" value="'.$i.'" '.$checked.' /></td>'."\n\t";
	} ?>
	
	</tr>
	<?php } ?>

</table>
<input type="submit" value="OK" />
</form> 
<?php } ?>
</body>
</html>

A+ Smiley smile
@Heyoan

Merci grandement pour ton aide, c'est exactement ce que je cherchais a faire..

C'est grâce a des personnes comme toi que je progresse à grands pas..

A+
Modifié par el fab (27 Mar 2008 - 09:52)
el fab a écrit :


C'est grâce a des personnes comme toi que je progresse à grands pas..
Chouette Smiley ola !