contenu d'une news en popup en cliquant sur son titre

contenu d'une news en popup en cliquant sur son titre - PHP - Programmation

Marsh Posté le 28-08-2005 à 15:49:39    

Bonjour,
 
J'ai cherché un peu partout mais je n'arrive pas à profiter de ce que je trouve pour fair ec eque je veux. Je m'explique:
Sur la première page du site s'affiche un tableau ou sont donnés les titres des dernières news. Je l'ai fait sans trop de probleme avec une boucle etc...
 
Cependant, je n'arrive pas a transmettre l'ID de la news pour afficher en popup uniquement le contenu de la news sur laquelle on clique... Je suis débutant, alors quelqu'un aurait-il une solution détaillée ou un lien pour me renseigner là dessus? merci d'avance...

Reply

Marsh Posté le 28-08-2005 à 15:49:39   

Reply

Marsh Posté le 28-08-2005 à 15:51:57    

Code :
  1. http://domaine.quelquechose/dossie [...] e2=valeur2


 
paramettre sera le nom de la case du tableau $_GET de la nouvelle page.
Quand à paramettre2 et suivant, c'est si t'as plusieurs fvaleur à faire parvenir à l'autre page.


Message édité par omega2 le 28-08-2005 à 15:52:24
Reply

Marsh Posté le 28-08-2005 à 15:53:12    

ben fais un lien hypertexte a cote de la news avec dans l'url l'id de ta news , dans ta page d'affichage recupere cet id et affiche ta news en fonction

Reply

Marsh Posté le 28-08-2005 à 15:55:50    

Le probleme est que les news s'actualisent par base de données mysql, donc comment faire pour que "valeur" ne soit pas une donnée absolue mais dépendante de la news elle-meme? parce que sinon c'est moi qui doit modifier, a chaque fois que j'ajoute une news, le chemin du lien non?

Reply

Marsh Posté le 28-08-2005 à 15:57:10    

jai pas bien compris betsamee désolé

Reply

Marsh Posté le 28-08-2005 à 15:58:37    

j'avais fait ça pour voir: <a OnClick="window.open('composants/news_popup.php?Id=<?=$donnees['id'] ?> etc....
 
mais je n'arrive pas pour l'autre page...

Reply

Marsh Posté le 28-08-2005 à 16:01:30    

<a href="composants/news_popup.php?Id=<?=$donnees['id'] ?>" >
 
est beaucoup mieux vu que ca fait exactement pareil mais sans avoir besoin de javascript.
Par contre, sans avoir plus de code, on ne poura pas t'aider plus.

Reply

Marsh Posté le 28-08-2005 à 16:05:55    

ok voici donc le code utilisé:
 
<tr> <th> News </th> </tr>  
<?
mysql_connect("localhost", "******", "*******" );
mysql_select_db("*****" );
 
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 7');
while ($donnees = mysql_fetch_array($retour))
{
?>
  <tr> <td> <a OnClick="window.open('composants/news_popup.php?Id=<?=$donnees['id'] ?>', 'news', 'height=200, width=400, top=100, left=100, toolbar=no, menubar=no, location=no, resizable=no, scrollbars=no, status=no'); return false;"> <? echo $donnees['sujet'];  ?> </a> </td> </tr>  
  <?
} // Fin de la boucle
?>  
 
  <tr class="archives"> <td> <a href="archives.php">Les archives News </a> </td> </tr>
  <tr> <td> <? include ("composants/infosrss.php" ) ; ?> </td> </tr>
 
 
 
 
voila; maintenant: comment faire passer l'ID de la news sur la deuxieme page pour avoir le contenu -uniquement- de la news sur laquelle on clique?

Reply

Marsh Posté le 28-08-2005 à 16:07:37    

en utilisant la partie "where" des requettes sql de type "select".

Reply

Marsh Posté le 28-08-2005 à 16:14:18    

justement j'avais pensé à ça, mais alors comment faire: parce que j'ai fait plein d'essais qui n'ont pas aboutis
doit mettre :
 
mysql_query("SELECT contenu FROM news WHERE id='$_GET['id']'" );
 
ou quelque chose comme ça??

Reply

Marsh Posté le 28-08-2005 à 16:14:18   

Reply

Marsh Posté le 28-08-2005 à 16:16:29    

C'est là qu'on voit à quel point c'est utile de prendre dés le début l'habitude de ne pas mettre de variable à l'intérieur des chaines de caractéres.
Là, ta ligne elle est équivalente à

Code :
  1. mysql_query("SELECT contenu FROM news WHERE id='".$_GET."['id']'" );

Reply

Marsh Posté le 28-08-2005 à 16:16:52    

vi, sauf que là t'auras un problème de quote. Sinon c'est tout simplement ca :)

Reply

Marsh Posté le 28-08-2005 à 16:20:27    

heu... je ne comprends pas le probleme omega... j'ai oublié les points entourant $_get  , c'est ca?

Reply

Marsh Posté le 28-08-2005 à 16:21:41    

il y a trop de " ou de '  , je m'y perd, désolé...

Reply

Marsh Posté le 28-08-2005 à 16:23:11    

non, t'as pas oublié les . t'as mis $_GET['id'] dans la chaine de caractére hors quand php analyse les chaines de caractéres pour y trouver les noms de variables, il s'arrête dés qu'il trouve autre chôse qu'une lettre ou que certains signes tel que "_".
Du coup,n là, il considére ['id'] comme du texte et non pas comme la table d'un tableau. Il faut donc que tu sortes l'ensemble pour que php sache que c'est une case d'un tableau que tu veux mettre dans ta chaine et pas une variable + du texte.

Reply

Marsh Posté le 28-08-2005 à 16:25:23    

Reply

Marsh Posté le 28-08-2005 à 17:01:18    

voila j'ai fait ça:  
$id  = $_GET["id"] ;
 
mysql_connect("localhost", "", "" );
mysql_select_db("BDD1" );
 
 
$donnees = mysql_query("SELECT * FROM news WHERE id = ".$id ); ?>
 
 
<p> <? echo $donnees['texte']; ?> </p>
 
 
il n'y a plus d'erreurs mysql, mais ce code ne m'affiche pas le texte, mais rien du tout...


Message édité par niroto le 28-08-2005 à 17:01:57
Reply

Marsh Posté le 28-08-2005 à 20:48:02    

je n'arrive malheureusement pas à trouver le rapport, ou en tout cas où insérer cette solution mysql_fetch_assoc

Reply

Marsh Posté le 28-08-2005 à 20:51:20    

Ce qu'il y a de bien, c'est que sur la page qu'il t'a indique, il y a des exemples qui montre où et comment s'en servir.
On va quand même pas réécrire les exemples rien que pour te faire plaisir. ;)

Reply

Marsh Posté le 28-08-2005 à 20:55:17    

d'accord, je pensais que c'etait quelque chose à ajouter à mon code, mais il s'agirait plutôt de tout faire autrement.

Reply

Marsh Posté le 28-08-2005 à 21:01:15    

Pourquoi j'ai l'impression que t'as besoin de bien réviser les diférentes fonctions utilisé dans la page indiqué?
Entre les fonctions que t'as utilisé et ceux de l'exemple de la dite page, je vois beaucoup de ressemblance.
Aprés, à toi d'dapter les différences pour que ton code à toi t'affiche ce qu'il faut.

Reply

Marsh Posté le 29-08-2005 à 11:21:19    

Je remercie tout ceux qui se sont intéressé à mon problème et je poste le résultat qui fonctionne. Si le code n'est tout de même pas bon, corrigez-moi si vous le souhaitez!!!
 
 
<?php
$conn = mysql_connect("localhost", "**", "**" );
mysql_select_db("BDD1" );
 
if (!$conn) {
echo "Impossible de se connecter à la base de données : " . mysql_error();
   exit;
}
 
if (!mysql_select_db("BDD1" )) {
   echo "Impossible de sélectionner la base BDD1 : " . mysql_error();
   exit;
}
 
$newsid = $_GET['Id'] ;
 
$sql = "SELECT texte
FROM  news
WHERE id = ".$newsid;
 
$result = mysql_query($sql);
 
if (!$result) {
   echo "Impossible d'exécuter la requête ($sql) dans la base : " . mysql_error();
   exit;
}
 
if (mysql_num_rows($result) == 0) {
   echo "Aucune news trouvée, rien à afficher.";
   exit;
}
 
while ($row = mysql_fetch_assoc($result)) {
   echo $row["texte"]; }
mysql_free_result($result); ?>

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed