Pbs de requete insertion dans les tables

king-gey Messages postés 5 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,

Aidez-moi car je n'arrive pas à faire cette requettre
J'ai trois tables : membres, sport, membre_sport(la table t_membre_sport regroupe les clés primaires des deux autres.)
Je voudrais que chaque membre choisisse un ou plusieurs sports. Chaque sport a 3 niveaux (debutant, initié, confirmé)

J'arrive à faire une requête qui insère le nom, le prénom et l'âge. Je n'arrive pas à faire une requête qui insère les cases à cocher et les boutons radio. Je n'arrive pas à voir comment récupérer l'id_membre pour le mettre dans ma table membre_sport. Et qu'il corresponde au sport qu'il a choisi. Je ne sais pas si quelqu'un comprendra ma demande...

merci d'avance

Voici mes tables :

table t_membres:
<tableau>
<ligne>
<entete>id_membre</entete>
<entete>nom</entete>
<entete>age</entete>
</ligne>
<ligne>
<cellule>1</cellule>
<cellule>jean</cellule>
<cellule>22</cellule>
</ligne>
<ligne>
<cellule>2</cellule>
<cellule>marie</cellule>
<cellule>19</cellule>
</ligne>
</tableau>

table t_sport:
<tableau>
<ligne>
<entete>id_sport</entete>
<entete>sport</entete>
</ligne>
<ligne>
<cellule>1</cellule>
<cellule>basket</cellule>
</ligne>
<ligne>
<cellule>2</cellule>
<cellule>foot</cellule>
</ligne>
<ligne>
<cellule>2</cellule>
<cellule>aviron</cellule>
</ligne>
</tableau>

table t_membre_sport:

<tableau>
<ligne>
<entete>membre_ID</entete>
<entete>sport_ID</entete>
<entete>niveau</entete>
</ligne>
<ligne>
<cellule>1</cellule>
<cellule>2</cellule>
<cellule>debutant</cellule>
</ligne>
<ligne>
<cellule>1</cellule>
<cellule>3</cellule>
<cellule>confirmé</cellule>
</ligne>
<ligne>
<cellule>-</cellule>
<cellule>-</cellule>
<cellule>-</cellule>
</ligne>
</tableau>

voici mon code:

$liaison = mysql_connect("localhost","root","");
mysql_select_db("sporteams");
if(isset($_POST['bouton']))
{
$sql = "INSERT INTO t_membres(nom_membre, age_membre) VALUES('".$_POST['nom_membre']."','".$_POST['age_membre']."')";

$resultat=mysql_query($sql);
header("Location:membres_gestion.php");
}
//------Requete des cases à cocher-------------------
$sql2="SELECT * FROM t_sport";
$resultat2=mysql_query($sql2);
//--------------------------------------------------

?>

<form id="monform" name="form1" method="post" action="membres_ajout.php">
<fieldset>
<legend>Inscription du membre</legend>
<p>
<label>Nom:
<input type="text" name="nom_membre" />
</label>
</p>
<p>
<label>Age :
<input type="text" name="age_membre" />
</label>
</p>
</fieldset>
<br />
<fieldset>
<legend>Vos sports</legend><br />

<table width="600" border="1" cellspacing="0" cellpadding="5">
<tr>
<th>Sport</th>
<th>Niveau</th>
</tr>
<?php while (($data_activites=mysql_fetch_assoc($resultat2))!==false):?>
<tr>
<td>

<input type="checkbox" name="<?php echo $data_activites['sport'];?>"
value="<?php echo $data_activites['id_sport'];?>" />
<?php echo $data_activites['sport'];?><br />
</td>

<td>
Débutant<input type="radio" name="choix" value="debutant" />
Initié<input type="radio" name="choix" value="initié" />
Confirmé<input type="radio" name="choix" value="confirmé" />
</td>
</tr>
<?php endwhile;?>

</table>
<br /><br />
</fieldset>

<p>
<label>
<input type="submit" name="bouton" value="Envoyer" />
</label>
</p>

</form>

A voir également:

2 réponses

@urels
 
Si j'ai bien compri, il y a un problème pour les sport, car tu propose plusieurs choix mais il n'y a qune ligne pour le niveau. Donc du fait une ligne pour chaque sport avec son niveau associé. PUis pour l'insertion, tu regarde qui est coché et tu prend le niveau correspondant. Par exemple :

<?php while (($data_activites=mysql_fetch_assoc($resultat2))!==false):?>
<tr>
<td>
<input type="checkbox" name="<?php echo $data_activites['sport'];?>"
value="<?php echo $data_activites['id_sport'];?>" />
<?php echo $data_activites['sport'];?><br />
</td>
<td>
<?php $choix="choix". $data_activites['id_sport']; ?>
Débutant<input type="radio" name="<?php echo $choix; ?>" value="debutant" />
Initié<input type="radio" name="<?php echo $choix; ?>" value="initié" />
Confirmé<input type="radio" name="<?php echo $choix; ?>" value="confirmé" />
</td>
</tr>
<?php endwhile;?>
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Voici quelques billes pour t'aider.

-> Récupérer un identifiant tout juste inséré :
mysql_insert_id()
https://www.php.net/manual/en/function.mysql-insert-id.php

-> Récupérer la valeur d'un bouton radio :
$choix = (isset($_POST['choix'])) ? $_POST['choix'] : 'inconnu';

-> Récupérer la valeur de tes cases à cocher, c'est un peu plus compliqué. On va utiliser ton resultat2 :
while (($data_activites = mysql_fetch_assoc($resultat2)) !== false)
{
    $sportID = $data_activites['id_sport'];
    $sportNom = $data_activites['sport'];
    $coche = (isset($_POST[$sportNom])) ? $_POST[$sportNom] : false;
    if ($coche !== false && $coche == $sportID)
    {
        $sqlSport = "INSERT INTO...";
        $mysql_query($sqlSport);
    }
}

// Du coup, on a « utilisé » $resultat2.
// Pour la boucle qui va suivre (affichage des sports), il faut le réinitialiser :
mysql_data_seek ($resultat2, 0);

https://www.php.net/manual/en/function.mysql-data-seek.php

Voilà, j'espère que ça te suffira.

Xavier
0