[resolu] insertion de resultat d'une selection checkbox ds. tbl Mysql

Holdup

Nouveau membre
Bonjour, et dores et déjà merci de me lire.
je suis en train de programmer un jeu de cyclisme en php et mysql.

Je bute sur une difficulté pour insérer dans une table mysql, les resultats d'une selection de n checkbox.
( n étant different d'une course à l'autre). ( il s'agit du nb de coureurs selectionné pour la course.


J'ai mis au point un requete qui me permet d'afficher les coureurs de l'équipe disponible pour une course :

Code:
<?php 

...

// la requête SQL 
$sql = "SELECT id_coureur, nom, prenom, nation, age FROM coureur WHERE initiale='$equipe' $condition"; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// nb de ligne 
$res = mysql_numrows($req);


// on verifie si des coureurs sont dispo.
if ($res==0)
{echo'Aucun coureur ne peut être selectionné pour cette course';}


// On cree une ligne et un bouton checkbox pour chaque coureur :

else {

echo'<form method="post" action="verif_compo.php"> ';

// on fait une boucle qui va faire un tour pour chaque enregistrement 

while($data = mysql_fetch_assoc($req)) 
{  extract ($data);
echo  '
<center><b><input type="checkbox" name="choix[]" value=" '.$data['id_coureur'].' ">  '.$data['prenom'].' '.$data['nom'].' <i><font size=1>n° ID '.$data['id_coureur'].'</font></i></b></center>
<br>';
} 

echo"<input type = 'hidden' name='course' value='$course'>";

echo' <center><input type="submit" value="envoyer la compo"></center>';}

?>

Voilà pour la première partie.
Je post donc la selection de coureur vers verif_compo.php
Je demande l'affichage de la selection et je n'ai pas de pbm, grace à une boucle foreach.


verif_compo.php :

Code:
<?php

...

// on recupère les infos.(session est ouvert)

$equipe =  $_SESSION['initiale'];
$course=$_POST['course'];


foreach($_POST ['choix'] as $champs=> $valeur)
{

// $n permet de compter le nb de coureurs selectionnés et de vérifier que ca ne dépasse pas la limite ( exprimé par $nbcoureur)

$n=$n+1;

if ($n<=$nbcoureur)
{

$sql = "SELECT nom, prenom,id_coureur FROM coureur WHERE id_coureur=$valeur "; 

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
$data = mysql_fetch_assoc($req);

echo "<center>$n - ";
echo' '.$data['prenom'].'   '.$data['nom'].'  '.$data['id_coureur'].' </center><br>';

// jusque là ca tourne j'arrive à afficher ma selection.

[b]// mais ici j'aimerai intergrer une requete : INSERT into 'compo' VALUES (nom de la course, nom de l'équipe, nom, prenom, id_coureur n°1, id_coureur n°2, ..., id_coureur n°9)
// et je n'arrive pas j'ai fait de nombreuses tentatives de codes avec INSERT et UPDATE,
// je n'arrive pas à exprimer cette requete.
// Le but étant d'integrer dans cette table compo l'ensemble des compositions des équipes pour une course donnée.[/b]
}


else {echo "trop de coureurs ont été cochés, seuls ces $nbcoureur seront retenus.";}
}

Merci de votre aide et de vous pencher sur mon problème.
 

coca25

Grand Maître
ca c'est pas une bonne conception de base de donnée :p

quand le nombre de champs n'est pas détérminé à l'avance et qu'ils sont nombreux, vaut mieux créer 2 tables:
compo (id_compo, course, equipe)
compo_detail (id_compo, id_joueur)

sinon pour ta requete, si tu gardes le meme schéma (pas bonne idée), il suffit de créer le premier joueur:
Code:
// ...
$id_compo = 0;
// ...
foreach ...
if ($id_compo == 0) // je sais pas si tu commences à 1 ou 0
{
  // création du premier joueur en insert
  mysql_query ("insert into compo (course, equipe, `1`) values ('$course', '$equipe', ". $data['id_coureur'] . ") ");
  $id_compo = mysql_insert_id ();
}
else
{
  // puis les autres joueurs en update
  mysql_query ("update compo set `$n` = " . $data['id_coureur'] . " where id_compo = $id_compo ");
}
//....
 

Holdup

Nouveau membre
OK ca marche avec le systeme à 1 seule table ... lmeme si ce n'es tpas la meilleure manière je le reconnais je vais conserver ce systeme car il marche.


Merci
 

coca25

Grand Maître
comme tu veux
mais si tu veux lister les caractéristiques des joueurs d'une course, tu vas te prendre la tete :p
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 842
Membres
1 586 372
Dernier membre
Meeithot
Partager cette page
Haut