Fixed
Bonjour
$_POST['categorie1'] n'existe pas : dans ton formulaire tu as commencer à 2 (j'ignore si c'est normal)
conseil : fais une boucle, car écrire 10 fois la même chose c'est pas très utile
EDIT: je viens de voir categorie1 mea-culpa
Rebonjour,
Je rajouterai (pour ID1, car les autres, c'est la même chose) :
que je remplacerai par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $reqlouer1="INSERT INTO louer (numadh, numloc, datelocation) VALUES ($numero, $ID1, '$DatRet1'])"; $requpdtlocation1="UPDATE locations SET qte_disp = qte_disp - 1 WHERE numlocation='$ID1';";
Le "qte_disp = qte_disp - 1", je ne vois pas comment il pourrait fonctionner. Parce que je ne vois aucune variable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $reqlouer1="INSERT INTO louer (numadh, numloc, datelocation) VALUES ($numero, $ID1, '$DatRet1'))"; $requpdtlocation1="UPDATE locations SET ? WHERE numlocation=$ID1";
PS : En gras, ce qui me chagrine.
Edit : Et tu aurais pu mettre :
au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part isset($numero)Une erreur là aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part isset($_SESSION['NumAdhSession'])Tu as mal écrit le $_POST.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ID1=$POST_['ID1'];
C'est pas très compliqué![]()
La partie formulaire deviens :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <p>Vous pouvez emprunter jusqu a 10 objets (dont un maximum de 2 DVD et 3 CD), veuillez indiquer les objets que vous souhaitez reserver (Remplissez tous les champs):</p> <form method="POST" action="reserver.php" /> <table border="2"> <tr> <td><b>Emprunt n</b></td> <td><b>Categorie</b></td> <td><b>ID</b></td> <td><b>Date de retour prevue (aaaa/mm/jj)</b></td> </tr> <?php for($nbCategorie = 1; $nbCategorie<=10; $nbCategorie++) { ?> <tr> <td><?php echo $nbCategorie; ?></td> <td> <select name="categorie<?php echo $nbCategorie; ?>"> <option></option> <option>Livre</option> <option>CD</option> <option>DVD</option> </select></td> <td><input name="ID<?php echo $nbCategorie; ?>" type="text"/></td> <td><input name="date_retour<?php echo $nbCategorie; ?>" type="text"/></td> </tr> <?php } ?> </table> <input type="submit" value="Valider" />
Et la partie de récupération des infos :
Dans ces 2 codes, l'idée est la même : on fais une boucle qui va se répéter 10 fois, et au lieu d'afficher par exemple id1, id2 ... id10 ; tu remplace par id puis le compteur de boucle qui va aller de 1 à 10
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php // Si les variables existent, alors on execute les instructions for($nbCategorie = 1; $nbCategorie<=10; $nbCategorie++) { if (isset($_POST['ID'.$nbCategorie]) && isset($_POST['date_retour'.$nbCategorie]) && isset($_SESSION['NumAdhSession'])) { //Definition des variables $categorie=$_POST['categorie'.$nbCategorie]; $ID=$_POST['ID'.$nbCategorie]; $DatRet=$_POST['date_retour'$nbCategorie]; // Definition des requetes $reqlouer1="INSERT INTO louer (numadh, numloc, datelocation) VALUES ($numero, $ID, '$DatRet'])"; $requpdtlocation1="UPDATE locations SET qte_disp = qte_disp - 1 WHERE numlocation='$ID';"; //Execution des requetes mysql_query($reqlouer1) or die("erreur".mysql_error()); mysql_query($requpdtlocation1) or die("erreur".mysql_error()); //Confirmation echo "Votre reservation numero". $nbCategorie . " a bien ete enregistree"; } }
PS: apparemment tu n'utilise jamais le $_POST['categorieX'] ...
PS2: tu devrais utiliser th plutôt que td pour les titre de tes tableaux
Cela n'a peut être rien à voir mais je ne vois pas ou est défini $numero ?
Sinon essaie une concaténation comme ça :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part $reqlouer1="INSERT INTO louer (numadh, numloc, datelocation) VALUES (".$numero.",".$ID.", '".$DatRet."')";
J'ai jamais confiance dans les variables évaluée ou non donc je préfère perso
Les deux requetes fonctionnent mais j'ai cette erreur. (Dailleur je me suis rendu compte aussi que j'ai ete stupide a avoir mis la date en clee primaire, vive les exemples de court a la gomme).
Je vais essaye avec les guillemets, mais c'est bizarre qu'il indique ' ") ' car les seuls endroits ou j'ai ces caracteres colles c'est ici :
Et l'erreur qui serait retranscrite ne serait pas "erreur".mysql_error().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // Connexion au serveur $db=mysql_connect("localhost","root","") or die("erreur de connexion".mysql_error()); // Ouverture de la base donnee mysql_select_db("mediathequegsi",$db) or die("erreur de connexion à la base de donnee");
Ok, ca passe, merci.
Maintenant j'ai cette erreur :
Cannot add or update a child row: a foreign key constraint fails (`mediathequegsi`.`louer`, CONSTRAINT `louer_ibfk_2` FOREIGN KEY (`numloc`) REFERENCES `locations` (`numlocation`))
Je vais voir ce qui ene va pas.
EDIT : Sous Easy il faut bien lier les relations a partir de la clee etrangere non?
Car quand je faisais l'inverse j'avais des problemes ensuite pour entrer mes enregistrements.
Peux tu indiquer quel est la structure de la table location ainsi que celle à laquelle est elle est liée ? (que je puisse tester également)
PS : je n'ai pas compris ta question![]()
louer (datelocation, numadh, numloc) --> que je vais modifier a cause de doublons
Primary : datelocation, numadh, numloc
Foreign : numadh @ adherent.numadherent
numloc @ locations. numlocation
locations (numlocation, nommateriel, auteur, editeur, numcategorie, qte_disp)
Primary : numlocation
Foreign : numcategorie @ categories. numcat
categories ( numcat, nomcat)
Primary : numcat
adherent (numadherent, nomadherent, prenomadherent, datenaiss, rue, cp, ville, nteladherent, nportadherent, mail, motdepasse)
Primary : numadherent
Voila ma DB complete, et je voulais savoir si je dois faire les relations a partir de la table mere ou fille en faite.
Merci.
T'aurai pas la version sql ? au pire tu peux faire un export et me donner uniquement les create si les données sont pas "publiable"
h**p://fixed.bug
Desole pour les * c'est pour eviter d'etre dans les moteurs de recherche.
Partager