INSERT dans une boucle WHILE : Possible ?

Signaler
Messages postés
186
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
Messages postés
186
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
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

Messages postés
186
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
9 juillet 2013

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
Messages postés
29
Date d'inscription
jeudi 19 février 2004
Statut
Membre
Dernière intervention
14 février 2007

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 ?
Messages postés
186
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
9 juillet 2013

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
Messages postés
186
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
9 juillet 2013

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
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
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
Messages postés
186
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
9 juillet 2013

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