Besoin d'un tout petit peu d'aide pour projet perso

Eléphant du PHP | 139 Messages

18 janv. 2006, 15:35

Bonjour a tous,

Explications sur mon projet :
- site qui permet de s'inscrire a une course par équipe de 2 en VTT
- structure de la base :
Image


Voici mes petits souci :

J'ai créé un formulaire :
<html>
<body bgcolor="#FFFFFF">
<title>INSCRIPTION BIKE & RUN</title>
<form name="form1" method="post" action="inscription_sql.php">
  <table width="100%"  border="0">
    <tr>
      <td><div align="center"><b>CONCURENT 1 </b></div></td>
      <td><div align="center"><b>CONCURENT 2</b></div></td>
    </tr>
    <tr>
      <td>Nom : 
      <input type="text" name="Nom1"></td>
      <td>Nom : 
      <input type="text" name="Nom2"></td>
    </tr>
    <tr>
      <td>Pr&eacute;nom : 
      <input type="text" name="Prenom1"></td>
      <td>Pr&eacute;nom :
      <input type="text" name="Prenom2"></td>
    </tr>
    <tr>
      <td>Adresse : 
      <input name="Adresse1" type="text" size="50" maxlength="50"></td>
      <td>Adresse : 
      <input name="Adresse2" type="text" size="50" maxlength="50"></td>
    </tr>
    <tr>
      <td>Code Postal : 
      <input name="CP1" type="text" size="10" maxlength="5"></td>
      <td>Code Postal :
      <input name="CP2" type="text" size="10" maxlength="5"></td>
    </tr>
    <tr>
      <td>Ville : 
      <input type="text" name="Ville1"></td>
      <td>Ville :
      <input type="text" name="Ville2"></td>
    </tr>
    <tr>
      <td>Age : 
      <input name="Age1" type="text" size="4" maxlength="2"></td>
      <td>Age :
      <input name="Age2" type="text" size="4" maxlength="2"></td>
    </tr>
    <tr>
      <td colspan="2"><div align="center">Nom &eacute;quipe : 
        <input name="equipe" type="text" size="30" maxlength="30">
      </div></td>
    </tr>
    <tr>
      <td colspan="2"><div align="center">Parcours : 
        <select name="parcours">
          <option value="***" selected>= Séléctionnez un parcours =</option>
		  <option value="12">12 Km</option>
          <option value="15">15 Km</option>
          <option value="22">22 Km</option>
        </select>
      </div></td>
    </tr>
  </table>
  <div align="center">
    <input name="submit" type="submit" value="INSCRIRE">
  </div>
</form>
</body></html>
qui permet de renseigner les informations des concurents!
J'arrive a récupérer ces infos et a les mettre dans ma table grace a ces requetes :
$sql = "INSERT INTO lachanitoise.coureur (`Idcoureur`, `Nomcoureur`, `Prenomcoureur`, `Adressecoureur`, `Cpcoureur`, `Villecoureur`, `Agecoureur`) VALUES ('', '$Nom1', '$Prenom1', '$Adresse1', '$CP1', '$Ville1', '$Age1')";
$query = mysql_query($sql);
$sql2 = "INSERT INTO lachanitoise.coureur (`Idcoureur`, `Nomcoureur`, `Prenomcoureur`, `Adressecoureur`, `Cpcoureur`, `Villecoureur`, `Agecoureur`) VALUES ('', '$Nom2', '$Prenom2', '$Adresse2', '$CP2', '$Ville2', '$Age2')";
$query = mysql_query($sql);
PAr contre le problème vient maintenant :
- Comment récupérer les 2 derniers Identifiants des coureurs pour que je puisse faire ma requete pour remplir ma table "equipe" ???
- Comment faire pour vérifier (sans javascript) que mon select est bien remplie ? (c'est a dire que l'utilisateur a bien choisi un parcours) ??

Merci d'avance de vous intéresser a mon projet ! ;)

ViPHP
ViPHP | 2144 Messages

18 janv. 2006, 16:12

Tu peux utiliser
$lastId = mysql_insert_id();

Eléphant du PHP | 139 Messages

18 janv. 2006, 16:13

Pour récupérer seulement le dernier !
Mais je dois récupérer les 2 derniers !!

Mais j'y avais pensé ! ;) Merci quand meme !

-EDIT-
HA MAIS OUIIIIIIIIIII !!!!!

Je vais faire ça juste avant ma 2eme requete ! ;)

Bien joué en fait !

ViPHP
ViPHP | 2144 Messages

18 janv. 2006, 16:20

oui, après chaque insert...

Eléphant du PHP | 139 Messages

18 janv. 2006, 16:27

Hey bien MERCI vraiment beaucoup de m'avoir fait preendre conscience qu'il fallait que je réféchisse plus a des petites astuces avant de demander de l'aide ....


Par contre aurrait tu une idée concernant ma 2eme question ?

ViPHP
ViPHP | 2144 Messages

18 janv. 2006, 16:47

De manière générale, il faut touojurs tester ce que l'utilisateur à saisie, ne serait ce que pour se prémunir de certains attaques de Hacker.
Si ton utilisateur sélectionne un parcours dans une liste déroulante (select) la meilleure façon de faire de spécifier par défaut un choix vide (par ex: "Sélectionnez un parcours") comme première (value="0") valeur dans la liste et sélectionner par défaut.
Quand tu récupères les valeurs tu testes, si le select vaut 0 tu sais que l'utilisateur n'a pas choisi de parcours.

Eléphant du PHP | 139 Messages

18 janv. 2006, 16:59

yes ok !

Mais alors de manière générale, comment faire pour vérifier si toute les valeurs sont remplies ?

On est obligé a chaque fois de faire
if (isset($nianiania))
??

ViPHP
ViPHP | 2144 Messages

18 janv. 2006, 17:04

Attention, tu dois récuperer tes variables par $_POST ou $_GET, même si un certains nombres de serveurs fonctionnent encore avec le register global à on (un post traitant de ce sujet dans la FAQ t'expliquera en détails le comment du pourquoi)

Tu utiliseras isset comme ceci :
if (isset($_POST['nianiania']))

if (isset($_GET['nianiania']))
En fonction de la méthode du formulaire.
A ça s'ajouteront d'autres test, car isset ne fait que vérffie si la variable existe, et donc ne controle que si le formulaire a été validé, et pas si les champs contiennent quelque chose.
la fonction "empty vérifie si les variables contiennent quelques choses.
Ce qui peut donner:
if (isset($_POST['nianiania']) && ! empty($_POST['nianiania']))

Eléphant du PHP | 139 Messages

18 janv. 2006, 17:11

Ok prennons par exemple ces 2 lignes de récupérations de données :
$Nom1 = $_POST['Nom1'];
$Nom2 = $_POST['Nom2'];
Il va donc falloir que je fasse ceci :
if (isset($_POST['Nom1']))
$Nom1 = $_POST['Nom1'];
else
{
	echo "Veuillez remplir tout les champs !!!";
}

if (isset($_POST['Nom2']))
$Nom2 = $_POST['Nom2'];
else
{
	echo "Veuillez remplir tout les champs !!!";
}
Pour chaque variable ou est-ce possible de combiner ?

ViPHP
ViPHP | 2144 Messages

18 janv. 2006, 18:39

As-tu lu mon poste précédent ? :wink: :wink:
Tu dois combiner isset et !empty