Afficher l'article en fonction du titre

Résolu/Fermé
Caro - 28 mai 2013 à 11:07
 Utilisateur anonyme - 28 mai 2013 à 13:09
Bonjour,

je souhaite afficher sur une premiere page une image et un titre, et quand l'utilisateur cliquera dessus ils sera renvoyer vers la description complete de cet article.

J'affiche bien les titres et images sur la premiere page. Mais la deuxieme ne fonctionne pas.

voici mon code: premiere page

$sql="SELECT * FROM ficheproduit";
try{
$cnx = new PDO(DSN, LOGIN, PASSWORD, $options);
$res=$cnx->query($sql);
while($ligne=$res->fetch())
{
$id=$ligne['id'];
$titre=$ligne['titre'];
$description=$ligne['description'];
$prix=$ligne['prix'];
$titreimage=$ligne['titreimage'];
?>
<li><a href="ficheproduit.php?titre=$titre"></li>

<img src="imagesproduits/<?php echo $titreimage; ?>.jpg" height="150" width="150" style="border-radius:15px;"/>

<?php echo "<h3>$titre</h3>Prix : $prix €<br /><br />";?></a><?php
}

Deuxieme page: if(isset($_GET['titre'])){
$titre=$_GET['titre'];
$sql="SELECT * FROM ficheproduit WHERE fiche=$titre";
try{
$cnx = new PDO(DSN, LOGIN, PASSWORD, $options);
$res=$cnx->query($sql);
while($ligne=$res->fetch())
{
$id=$ligne['id'];
$titre=$ligne['titre'];
$description=$ligne['description'];
$prix=$ligne['prix'];
$titreimage=$ligne['titreimage'];

?>
<li><a href="imagesproduits/<?php echo $titreimage; ?>.jpg"/>
<img src="imagesproduits/<?php echo $titreimage; ?>.jpg" height="250" width="250" style="border-radius:15px;"/>
</a>
<?php echo "<h3>$titre</h3>Prix : $prix €<br />Description : <em>$description</em><br />";?></a><?php
}

Merci d'avance :/

2 réponses

Utilisateur anonyme
28 mai 2013 à 11:17
salut,

dans la page 2 essaye plutot de faire cette requete :

$sql="SELECT * FROM ficheproduit WHERE fiche='".$titre."'"; 


je pense que ca devrait être mieux avec des quote qui entourent ta chaine ;)

naga
0
Salut merci de ta réponse, on m'affiche ça "echec : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'fiche' in 'where clause'"
0
Utilisateur anonyme
28 mai 2013 à 11:22
cette erreur veut donc dire que dans ta table ficheproduit il n'y a pas de colonne fiche.

Vérifie ta table.(sur le coup je dirai que c'est " titreimage")
0
Oui il n'y a pas de fiche dans ma table. Mais je crois m'etre mal exprimer enfaite je n'ai qu'une seule table, ficheproduit et je lui demande d'afficher sur un page le titre et quand je clique sur celui ci d'ouvrir une autre page qui contient alors titre, description ... etc
0
Utilisateur anonyme
28 mai 2013 à 11:29
oui j'ai bien compris ca, mais le truc c'est que tu veux récupérer une valeur. donc en gros ta deuxième page :

if(isset($_GET['titre'])){ 
$titre=$_GET['titre']; 
$sql="SELECT * FROM ficheproduit WHERE titre='".$titre."'"; 
try{ 
$cnx = new PDO(DSN, LOGIN, PASSWORD, $options); 
$res=$cnx->query($sql);	
while($ligne=$res->fetch()) 
{ 
$id=$ligne['id']; 
$titre=$ligne['titre']; 
$description=$ligne['description']; 
$prix=$ligne['prix']; 
$titreimage=$ligne['titreimage']; 

?> 
<li><a href="imagesproduits/<?php echo $titreimage; ?>.jpg"/> 
<img src="imagesproduits/<?php echo $titreimage; ?>.jpg" height="250" width="250" style="border-radius:15px;"/> 
</a> 
<?php echo "<h3>$titre</h3>Prix : $prix €<br />Description : <em>$description</em><br />";?></a><?php 
} 




c"était titre plutot que titre image.
Ensuite le while n'est pas nécessaire, vu que tu ne veux qu'un seul résultat, mais ca pose pas de problème ^^
0
Merci de m'aider j'suis une debutante, apres avoir remplacer par ce que tu m'as dit la deuxieme page ne m'affiche rien
0
Donc x) pour résumer essaye :
PAGE 1
$sql="SELECT * FROM ficheproduit"; 
try{ 
$cnx = new PDO(DSN, LOGIN, PASSWORD, $options); 
$res=$cnx->query($sql); 
while($ligne=$res->fetch()) 
{ 
$id=$ligne['id']; 
$titre=$ligne['titre']; 
$description=$ligne['description']; 
$prix=$ligne['prix']; 
$titreimage=$ligne['titreimage']; 
?> 
<li><a href="ficheproduit.php?titre=".$titre></li> 

<img src="imagesproduits/<?php echo $titreimage; ?>.jpg" height="150" width="150" style="border-radius:15px;"/> 

<?php echo "<h3>$titre</h3>Prix : $prix €<br /><br />";?></a><?php 
} 



PAGE 2

if(isset($_GET['titre']) && !empty($_GET['titre']))
{ 
 $titre=$_GET['titre']; 
 $sql="SELECT * FROM ficheproduit WHERE fiche='".$titre."'"; 
 try{ 
  $cnx = new PDO(DSN, LOGIN, PASSWORD, $options); 
  $res=$cnx->query($sql); 
  while($ligne=$res->fetch()) 
  { 
   $id=$ligne['id']; 
   $titre=$ligne['titre']; 
   $description=$ligne['description']; 
   $prix=$ligne['prix']; 
   $titreimage=$ligne['titreimage']; 
?> 
<li><a href="imagesproduits/<?php echo $titreimage; ?>.jpg"/> 
<img src="imagesproduits/<?php echo $titreimage; ?>.jpg" height="250" width="250" style="border-radius:15px;"/> 
</a> 
<?php echo "<h3>$titre</h3>Prix : $prix €<br />Description : <em>$description</em><br />";?></a><?php 



il n'y a pas tout la page, il manque les balises <?php en début de page etc.
0
oui oui je t'avais donné quel "l'etentiel", voilà ce qu'on maffiche a present Fatal error: Call to undefined function isempty() in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\xxxxxxx\ficheproduit.php on line 38
0
Utilisateur anonyme
28 mai 2013 à 11:48
oui c'est ma faute, erreur de syntaxe, c'est juste empty (j'ai modifié mon post mais trop tard x] )
0
Ah ^^ il me dit "non" :/
0
Utilisateur anonyme
28 mai 2013 à 11:55
c'est donc que le paramètre n'est pas passé. as tu bien changé cette ligne dans la page 1 :
<li><a href="ficheproduit.php?titre=".$titre></li> 



en fait il faut dans un premier temps vérifier si le paramètre passé dans ton lien correspond bien (tu ne dois pas avoir ?titre=$titre mais ?titre=le_titre_du_doc)

ensuite il faut que tu sois sûre de ne pas avoir de cactères spéciaux dans ton titre (tel que ', &, [espace],etc.)

enfin, c'est plutot mon avis, je pense qu'il vaut mieux que tu passe l'id en paramètre. soit faire dans ta page 1 :
<li><a href="ficheproduit.php?id=".$id></li> 

et dans ta page 2 :
if(isset($_GET['id']) && !empty($_GET['id']))
{ 
 $titre=$_GET['titre']; 
 $sql="SELECT * FROM ficheproduit WHERE id=".$id; 


ensuite je t'avous que sans voir vraiment tout (et sans pouvoir tester) c'est un peu délicat ^^
0
j'ai bien tout remplacer j'ai mis le titre pour le faire fonctioner j'aurais remplacer par id apres, il me dit toujours non merci pour ton aide en tout les cas :/
0