Popup avec variable PHP - Apprendre-PHP.com

Rechercher
PHP5 Avancé - Eric Daspet et Cyril Pierre de Geyer - Commander sur Amazon.fr

Popup avec variable PHP

Par agui -  2 reponses -  Le 12/11/2009 -  Flux RSS - 

Bonjour à tous !

Voilà, j'ai créé un système de news sur mon site. J'ai deux pages admin qui fonctionnent correctement et deux pages accessibles aux visiteurs qui posent problème...

la première page (index.php) affiche les titres des 5 dernières news publiées. J'aimerais que ces titres soient cliquables, si ils contiennent un contenu (descriptif) ou un lien (vers un autre site), et que cela ouvre une popup (news.php) qui affiche uniquement le titre + le contenu et/ou le lien de la news sur laquelle le visiteur a cliqué.

Je pense savoir d'où viennent les erreurs mais j'ai essayé pas mal de choses et là je ne sais plus quoi faire...

Voici les problèmes rencontrés sur ma page index.php. Je devrais avoir un lien sur mes titres uniquement si la news concernée possède un contenu et/ou un lien mais j'ai des liens sur chaque titre... Autre chose, depuis que j'ai modifié le lien vers une page classique du site en un lien vers un popup, ma page index.php ne s'affiche plus et m'indique une erreur de syntaxe (unexpected T_STRING, expecting ',' or ';' ligne echo '<a target=... de mon script ci-dessous). Voici ma condition et ma popup :

if (isset($contenu) OR isset($lien)) // Si les variables contenu ou lien existent      {      // On crée les entrées en HTML avec les liens      echo '<a target="_blank" HREF="#" onClick="window.open('news.php?id=$id&amp;titre=$titre&amp;contenu=$contenu&amp;lien=$lien ','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=524, height=500');return(false)">' . $titre . '</a>';       }      else      {      // On crée les entrées en HTML sans lien      echo $titre;       }

 Un grand merci d'avance pour votre aide !!!

 

Réponses apportées à cette discussion

Par Cyrano -  Le 12/11/2009 - 

Salut Agui,

regarde un peu tes concaténations de variables dans le paramètre de ton gestionnaire d'évènements onClick. Lorsque tu crées ton lien, tu encadres le code HTML avec des apostrophes, ok, ensuite tu mets donc les valeurs des attributsde ta balise <a> entre guilemets, toujours ok, mais ensuite dans le paramètre JavaScript, tu utilises à nouveau l'apostrophe... qui se met en conflit avec les apostrophes PHP qui encadrent le HTML parce que tu n'as utilisé aucun caractère d'échappement

Donc logiquement, PHP trouve une valeurs incorrectes et te retourne logiquement l'erreur que tu as mentionné. Je crois qu'il te sera plus profitable de découvrir toi-même l'erreur sur cette base ;)  Et attention, lesvariables PHP entre apostrophes ne seront pas interprétées, donc tu devras les concaténer et non juste les mettre telles-quelles dansta chaine HTML.

 

 
Par agui -  Le 12/11/2009 - 

Merci pour ta réponse Cyrano...

J'ai réfléchi à ça toute la journée. Mais mon problème est toujours le même :

1) J'ai un lien sur chaque titre et ça c'est un problème car je ne veux pas qu'un titre soit cliquable et ouvre une popup si la news correspondante ne comporte ni contenu ni lien vers un autre site. 2) Le popup est vide même si la news correspondante a un titre (elle en a chaque fois un) + un contenu (descriptif) et/ou un lien. Là, ça doit être un problème d'affichage des variables récupérées... Voilà, du coup, je mets tout mon code pour les deux pages, en espérant que ce sera + clair.

index.php

 <code>

<?php mysql_connect("XXX", "YYY", "ZZZ"); mysql_select_db("madb"); // On récupère les 5 dernières news publiées $retour = mysql_query('SELECT * FROM news WHERE publier=1 ORDER BY id DESC LIMIT 0, 5'); // On se déconnecte de MySQL  mysql_close(); // Puis on fait une boucle pour afficher tous les résultats : while ($donnees = mysql_fetch_array($retour)) { ?>        <div class="news">     <h3><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular">     <?php     $titre = nl2br(stripslashes($donnees['titre']));     $contenu = nl2br(stripslashes($donnees['contenu']));     $lien = $donnees['lien'];             if (isset($contenu) || isset($lien)) // Si les variables contenu ou lien existent      {      // On crée les entrées en HTML avec les liens     ?>     <a  href="#" onClick="window.open('news.php?id=<?php $id; ?> & titre=<?php $titre; ?> & contenu=<?php $contenu; ?> & lien=<?php $lien; ?>','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=524, height=500');"><?php echo $titre; ?></a>       <?php       }      else      {      // On crée les entrées en HTML sans lien      echo $titre;       }     ?>     </font></h3>     <br>        </div> <?php } // Fin de la boucle des news ?>

</code>

et news.php :

<code>

 <?php mysql_connect("XXX", "YYY", "ZZZ"); mysql_select_db("madb"); // On récupère la news correspondante $id = $_GET['id']; $retour = mysql_query('SELECT * FROM news WHERE id=$id); // Puis on fait une boucle pour afficher le résultat : while ($donnees = $retour) { ?>        <div class="news">     <h3><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular">     <?php     // On enlève les éventuels antislash     $titre = stripslashes($donnees['titre']);     echo $titre;     ?>     </font></h3><br>     <p><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular">     <?php     // On enlève les éventuels antislash     $contenu = stripslashes($donnees['contenu']);     echo $contenu;     ?></font></p>     <p><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular">     <?php     $lien = $donnees['lien'];     echo '<a href="' . $donnees['lien'] . '">' . $lien . '</a>';     ?></font></p>            </div> <?php } // Fin de la boucle des news // On se déconnecte de MySQL  mysql_close(); ?>

</code>

 Voilà, j'en suis là et je ne sais plus quoi faire mais je ne perds pas espor de trouver une solution... Un grand merci d'avance pour votre aide !!!

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !