INSERT dans une boucle WHILE : Possible ?

laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 24 févr. 2006 à 17:35
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 24 févr. 2006 à 23:26
Bonjour,

j'ai une boucle while, dans laquelle je tente de faire un INSERT, mais ça ne fonctionne pas, toutes les opé marchent dans ma boucle mais pas le while...
$sql = "SELECT * FROM $type_chambres WHERE type_chambre!=''";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data = mysql_fetch_assoc($req))
{


if(($data['type_chambre'])!="" and ($data['quota'])<=$nbnuits)
{


$idh = $data['id'];
$type = $data['type_chambre'];


$select = "SELECT dispo_$idh FROM $calendrier where date>='$date1' AND date2<'$date2' AND dispo_$idh>'0' AND prix_$idh>'0'";
$result mysql_query($select,$db) or die ('Erreur : '.mysql_error() );$total1 mysql_num_rows($result);


if($nbnuits == $total1){


$result = mysql_query("SELECT SUM(prix_$idh) FROM $calendrier where date>='$date1' AND date2<'$date2' AND dispo_$idh>'0' AND prix_$idh>'0'");
$row = mysql_fetch_row($result);
$total = $row[0];


$prix1 = $total/$nbnuits;


// mon probleme ! ! ! --------------------------------
$sql = "INSERT INTO $resa_temp(id, dateresa, day, arrivee, arriveet, depart, departt, nbnuits, type, prix, prixtotal) VALUES('$id','$dateresa','$day','$date1','$date1t','$date2','$date2t','$nbnuits','$type','$prix1','$total')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());


echo "<center>Chambre $type:, "; echo ''.$data['texte'].''; echo ", "; echo round($prix1, 2); echo " ? ,

";}


}
}

on peut ou pas ?, sachant que c'est sur la mêm basedd
merci
Laubro

6 réponses

laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
24 févr. 2006 à 18:11
j'ai compris le problème, mais ça me permet pas de le résoudre...


en fait l'$id à insérer est généré avant le while par $id = session_id();
et il ne reconnait pas, pour lui $id= ="" et donc n'insert rien.
le probleme c'est que je pourrait générer un $id autrement(schuf...), mais il me faut un id donc je sois sur qu'il ne peut pas être doublé, je veux dire par la que si "jamais" 2 personne etaient en même temps sur le serveur avec la même clef $id(pas de bol), ça me poserait des soucis dans la page suivante....mais la session ne demarre pas dans le while (j'ai essayé)......
si il y avait un truc...
merci

Laubro
0
supergyver Messages postés 29 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 14 février 2007
24 févr. 2006 à 18:19
Lorsque tu crées ta table sous MYSQL, Tu mets ta clef primaire avec la propriété "AUTOINCREMENT'

Du coup, lorsque tu fais ton insertion, tu ne mets pas le champ ID mais seulement:



INSERT INTO $resa_temp(dateresa, day, arrivee, arriveet, depart, departt, nbnuits, type, prix, prixtotal)



Mysql se charge de mettre automatiquement un nouvel identifié unique (incrémenté).

J'espère que tu vois ce que je veux dire.



RQ: Tu dis que selon ton script $id vaut ''.

As-tu bien lancé la session au début du script (fonction session_start()) - avant tout autre commande ?
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
24 févr. 2006 à 18:27
Oui la session est lancé, je sais pour incrémenté une id à la table, ce que je veux en fait :
le while est lancé suite à une interrogation par formulaire de disponibilité
est ce qu'il y a X dispo le 28/02/2006 par exemple, sur plusieurs type de chambres(dans mon cas)
et comme la reponse peut être oui sur plusieurs reponse, je charge la base avec les infos des chambres(type, prix...) et surtout en id la session
car sur chaque réponse, il y a un lien qui conduit sur une autre page, le lien correspond au choix que va faire l'internaute
et donc sur la page suivante, en fonction du lien cliqué, il y a une procédure qui éliminie toutes les autres réponses, et comme je ne veut eliminr
que les réponse de la peronne en question, ça fait..... delete......where id=="$id"(la id de session) and type!="$type"(le type choisi par l'internaute)
si je fait juste delete sur le type et qu'il y a plusieurs personne en cours de requette, ça vire tout

Laubro
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
24 févr. 2006 à 18:29
de plus pour la session, si je fait un echo "$id" il me l'ecrit sans soucis, mais il n'en tient pas compte dans INSERT
Truc de dingue,
par contre si je genere un $id=1; pas de probleme ça tourne

Laubro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
24 févr. 2006 à 20:02
Quand tu sais que toutes ces opérations peuvent se réduire au niveau de ta requète SQL de départ...

moi ca me fait peur :o
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
24 févr. 2006 à 23:26
en fait pas vraiment, c'est un syteme de resa en ligne d'hôtel, et ça prends en compte tout un tas de criteres...

Laubro
0
Rejoignez-nous