Base de donnée et php

Fermé
pontarose - 28 août 2007 à 16:47
 pontarose - 28 août 2007 à 18:18
Bonjour,

Je suis parti d'un formulaire sur plusieurs pages.
Je récupère sur ma dernière page les valeurs de mes différentes variables.
Maintenant j'aimerais insérer mes résultats dans une base de donnée.
Mais problème...

quand j'entre dans mon formulaire pour une famille donnée un nombre d'enfant de 2 par exemple, j'obtiens un famille-id différents (alors que ces deux enfants sont issus de la même famille) et dans ma base de données j'obtiens deux fois les données entrés pour le dernier enfants (les données concernant l'enfant 1 n'apparaissent pas!)



je m'explique a travers un exemple illustratif:

J'ai une famille (entré du nom de la famille et du nombre d'enfants dans la page 1 ) qui est composé de X enfants .
Pour chacun de ses enfants je remplis les données concernant leur age et couleurs des yeux (page2)
enfant1
age :
yeux:
enfant2 :
age:
yeux:
En page 3 :
* je récupère les variables nom de famille, nbre enfants et pour chaque enfant age et yeux.
en parallèle j'ai crée ma base de donné et mes deux tables une table famille (avec nom de famille et nbre enfants) et enfants (age, yeux)
* je fais des différentes requêtes pour obtenir

quand j'entre dans mon formulaire pour une famille donnée un nombre d'enfant de 2 par exemple, j'obtiens un famille-id différents (alors que ces deux enfants sont issus de la même famille) et dans ma base de données j'obtiens deux fois les données entrés pour le dernier enfants (les données concernant l'enfant 1 n'apparaissent pas!)

Mon raisonnement est que pour une famille donnée j'ai x enfants et que pour chaque enfants de cet famille j'ai ces infos;

Je vous envoie mon code si quelqu'un peut m'aiguiller :

<html>
<?php
//recup des valeurs postees
$famille_name = $_POST['famille_name'];
$enfant_number = $_POST['enfant_number'];

print("Famille: <b>$famille_name</b><br>Nombre enfant: <b>$enfant_number</b><br><br><br>");
?>

<?php
for ($i=1; $i<=$enfant_number; $i++)
{
//recup des valeurs postees
$age_enfant= $_POST['age_enfant'];
$yeux_enfant= $_POST['yeux_enfant'];

if ($age_enfant == "" || $yeux_enfant == "")
{
print("Please, fill all the fields !<br><br>");
exit();
}
else
{
//connecter à la DB
$servername = 'localhost';
$user = 'root';
$password = ''; //je n'ai pas de mot de passe root
$dbname = 'db';


@$connexion= mysql_connect('$servername','$user', '$password') or die ("problème de connexion au serveur");
mysql_select_db($dbname,$connexion) or die ("problème :base de donnée non trouvé");

//on regarde dans la table complexe si le nom du complexe existe déjà
$requete=
"SELECT famille_id
FROM famille
WHERE famille_name ='$famille_name'";

$execution = mysql_query($requete) or die("erreur au niveau de la requête");

$resultat = mysql_num_rows($execution);

if($resultat!=0)
{
print ("Sorry, but this famille already exist in our database<br>");
}
else
{
print ("The data were recorded in the database<br>");

$requete=
"INSERT INTO famille(famille_id,famille _name, famille_number)
VALUES ('','$famille_name','$famille_number') ";

mysql_query($requete) or die("erreur au niveau de la requête");

//on récupère l'id qui vient d'être généré
$famille_id = mysql_insert_id();

//on insère les données dans la table enfant
$requete=
"INSERT INTO (enfant_id,famille_id, age_enfant,yeux_enfant)
VALUES ('','$famille_id,$age_enfant','$yeux_enfant') ";
mysql_query($requete) or die("erreur au niveau de la requête");
}
mysql_close($connexion);//déconnexion a la DB
}
}

?>
<input type='button' value='retour' Onclick="javascript : location='http://localhost/apache2-default/formulaire.html'">
<!-- permet un retour a la page principal-->
</html>

2 réponses

Chacual Messages postés 230 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 15 octobre 2007 150
28 août 2007 à 17:05
Dans la boucle ou tu récupères les informations de chaque enfant, de la manière dont c'est codé, à chaque tour de boucle, tu récupères les mêmes infos : ta boucle porte sur la variable i mais celle-ci n'est pas utilisée pour récupérer les données.
Je ne connais pas très bien le PHP mais tes informations devraient être stockées dans un tableau de la taille du nombre d'enfants et tu devrais rechercher dans ce tableau en fonction de ton index i !

//recup des valeurs postees
$age_enfant= $_POST['age_enfant'];
$yeux_enfant= $_POST['yeux_enfant'];

devrait être quelque-chose du genre :

//recup des valeurs postees
$age_enfant= $_POST['age_enfant'[i]];
$yeux_enfant= $_POST['yeux_enfant'[i]];
0
Oui je vois

Il y a un truc que je ne comprend pas;;;
Si j'arête mon script avant la connexion a la base de donnée et que dans ce else je mette
print("<br>$age_enfant<br>$yeux_enfant'");

quand l'utilisateur entre ces données pour chaque enfant, je récupère bien les deux résultats pour chaque enfant sans avoir indiqué la variable $i dans ma boucle for .


c'est ensuite avec la base de donné que cela ne marche pas.



On m'a déja aidé et si je tape le code suivant, quoique j'entre cela ne m'imprime rien a l'écran!!!

for ($i=1; $i<=$enfant_number; $i++)
{
${'name_enfant'.$i} = $_POST["name_enfant$i"];
${'age_enfant'.$i} = $_POST["age_enfant$i"];

if (${'name_enfant'.$i} == "" || ${'age_enfant'.$i} == "" )
{
print("Please, fill all the fields !<br><br>");
exit();
}
else
{
print("<br>". ${'name_enfant'.$i}."<br>". ${'age_enfant'.$i}."<br>");
}
}
?>
0