erreur d'affichage dans une nouvel page php

Petit nouveau ! | 2 Messages

06 juin 2014, 21:18

salut !
j'ai comme sujet une agence de voyage en ligne si pouvez pouvez m'aider !
j'ai un problème avec php ,je veux afficher dans une page tous les offres qui existe dans la base de données avec un bouton pour chacun des offres pour accéder a cet offre . en même temps je veux récupérer son id pour pour l'afficher dans une autre page avec plus de détails .j'ai utilisé une boucle while pour l'affichage de tous les offres et quand je clique pour découvrir n'importe quel offre il m'affiche le dernier offres de la liste ! voilà le code de la page des offres :
$q="SELECT * FROM offre where dispo=1 "; 
$qq=mysql_query($q); 
if(!$qq){die('errroor'.mysql_error());} 
while($data=mysql_fetch_row($qq)){ 
?>	<ul> 
<a href=<?php echo $data['1'];?> title="The road" rel="prettyPhoto[gallery]"> 
<img src=<?php echo $data['1'];?> alt="The Road" title="The Road" height="160px" width="460px"/></a> 
<em><?php echo $data['6'].' à '. $data['3'].' DH seulement';?>                      <input id="v1"type="submit" name="submit" value="DECOUVRIR"/></em> 
</li><?php $_SESSION['noffre']=$data['0'];}?> 
voilà le code de la page où j'affiche l'offre seul 
if(isset($_POST['submit'])){ 
$no=$_SESSION['noffre']; 
$q="SELECT * FROM offre where 'NOffre'='".$no."'"; 
$qq=mysql_query($q); 
if(!$qq){die('errroor'.mysql_error());} 
while($data=mysql_fetch_assoc($qq)){ 
//if(!$qqq){die('errroor'.mysql_error());} 
$_SESSION['no']=$no; 
?> 
<img src= <?php echo $data['image'];?> /> 
<p ><i> 
<?php echo $data['description'];?></i> 
<form method="post" action="gestoffre.php"> 
<input id="v1" type="submit"name="retour" value="RETOUR" >  
<input id="v1" type="submit"name="reserver" value="RESERVER">  
<input id="v1" type="submit"name="simuler" value="SIMULER RESERVATION"> </form> 
</center> <?php }}?> 
ya t il une autre methode pour les afficher et garder le id ?
merci !!

Mammouth du PHP | 1339 Messages

06 juin 2014, 21:39

Je serais toi, je me servirai de mysql_fetch_array au lieu de mysql_fetch_row, ca sera plus simple pouvoir a quoi corresponde les variables.

Après, je ne comprend pas trop comment marche ton site.
L'utilisation de $_SESSION est-elle vraiment utile ?
Passes-tu pour un formulaire pour simplement utilise $_POST ?

Si tu veux entouré le nom du champ NOoffre, je mettrait des ` au lieu de ' ...

C'est pas très clair.
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 juin 2014, 23:45

Salut,

SESSION['noffre'] a toujours la dernière valeur parce que dans la boucle d'affichage tu affect l'id courant a cette variable a chaque "tour".

Le plus simple est d'utiliser correctement les formulaires ou simplement un lien pour éviter la déclaration de x formulaire.

Tu peux très bien utiliser les css pour que ton lien ressemble a un bouton ce n'est pas une problèmes.

Le lien sera de la forme detailOffre.php?id=xxx
Où xxx provient de la base de données.


L'extension mysql est dépréciée et vouée a disparaître il est plus intéressant de ce tourner vers mysqli ou PDO (mysqli étant la solution la proche syntaxiquement de mysql).

@Elie : quitté à chipoter utiliser mysql_fetch_assoc est préférable a mysql_fetch_array le tableau sera plus léger les index numérique étant (dans l'exemple) inutile ;)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

07 juin 2014, 09:05

Comme, en plus, il s'agit visiblement d'un devoir ou d'un projet, j'ajouterai que la présentation est entièrement à revoir:
if (!$qq) {
    die ('errroor'.mysql_error());
} 
while ($data = mysql_fetch_row ($qq))
{ 
     $noffre = $data[0];
    ?> <ul> <!-- début de <li>? -->
     <a href=<?php echo $data['1'];?> title="The road" rel="prettyPhoto[gallery]"> 
    <img src=<?php echo $data['1'];?> alt="The Road" title="The Road" height="160px" width="460px"/></a> 
    <em><?php echo $data['6'].' à '. $data['3'].' DH seulement';?> 
    <input id="v1" type="submit" name="submit" value="DECOUVRIR"/></em> <!--On suppose un <form..> plus haut?-->
       </li>
<!--Comme dit moogli, cette affectation est mal placée. Où qu'on la mette, elle n'aura jamais la valeur de l'offre choisie.
En revanche, un champ caché <input type = 'hidden' name = 'noffre'  value ='$noffre'  />
ferait l'affaire.-->

     <?php $_SESSION['noffre']=$data['0'];}?> 
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 2 Messages

07 juin 2014, 13:14

bonjour !
merci pour votre aide . ça a fonctionner justement avec la solution de input hidden de @sirakawa !!!

Mammouth du PHP | 2278 Messages

07 juin 2014, 14:50

Si c'est résolu, il faut le marquer avec le bouton Hareng Saur!
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD