Popup avec variable php
Résolu
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 :
Un grand merci d'avance pour votre aide !!!
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&titre=$titre&contenu=$contenu&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 !!!
Configuration: Windows XP Internet Explorer 7.0
29 réponses
Résumé de la discussion
Des titres des cinq dernières news doivent être cliquables et ouvrir une popup news.php affichant le titre ainsi que le contenu et/ou le lien associés. Des erreurs de syntaxe et d'affichage apparaissent après la conversion du lien, notamment une unexpected T_STRING et des soucis avec echo et les guillemets dans le script. Les conseils préconisent de remplacer OR par || dans les conditions, corriger la requête MySQL et le passage des paramètres GET, puis déplacer mysql_close() en fin de fichier. En cas de besoin, vérifier aussi que l'identifiant id est correctement interpolé dans la requête et que news.php lit bien $_GET['id'] pour afficher titre et contenu.
-
Non, il n'y a pas de cadre sur mon premier post et nulle part ailleurs... J'ai juste la possibilité d'avertir un modérateur, ce que j'ai fait !
Voilà, ça fera un de plus de résolu !
Je t'envoie les pages, et merci encore Tsunami ! -
Su le premier post tu as un cadre en haut a droite tu as resolu et tu clic sur ok ^^
-
Je te l'envoie tout de suite.
par contre, comment je peux mettre ceci comme "résolu" pour le forum ? -
Good
je veu bien que tu me renvois les feuille
(marque comme resolu) -
Merci Tsunami pour ton aide ! On y est arrivé !!!
-
OK merci !
Je t'envoie ça tout de suite par mail...
J'ai encore fait pas mal de modifs, j'ai créé plus de eslsif en décrivant toutes les situations possibles :
Pour rappel :
1° cas : on a juste un titre et pas de contenu ni de lien extérieur donc pas de lien vers news.php (là ça marche !)
2° cas : on a un titre et un contenu mais pas de lien extérieur donc lien vers news.php (là ça marche une fois sur 2)
3° cas : on a un titre, pas de contenu, mais un lien extérieur donc lien vers news.php (là ça marche !)
4° cas : on a un titre, un contenu et un lien extérieur donc lien vers news.php (là ça ne marche pas)
Voilà, en esérant que ce soit + clair avec les pages...
Merci encore ! -
va sur mon profils et envois moi tes deux page par mail s'il te plais
je pense que je verrais mieux ce qu'il ne va pas
si tu n'y vois pas d'inconvénient -
J'ai essayé sans nl2br pour la $titre mais ça ne change rien. Si ça ne change rien, j'envisage de la garder alors car pourquoi pas de saut de ligne pour le titre ?
Pour le reste, je ne cesse de tout vérifier encore et encore mais je ne trouve pas la faille. Les champs de ma db correspondent. Les voici à titre informatif :
- id en auto-incr + clé primaire
- titre
- contenu
- lien
- publier
- timestamp
La meilleure nouvelle pour la fin... Après avoir trifouillé dans le manuel PHP vu que j'ai tjs une erreur sur ma page index.php, je me suis dit que peut-être !empty conviendrait mieux dans ce cas que isset. Cela donne maintenant :
if(!empty($contenu) OR !empty($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 echo $id; ?> & titre=<?php echo $titre; ?> & contenu=<?php echo $contenu; ?> & lien=<?php echo $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; }
Et là, encore un petit miracle, le titre qui ne doit pas être cliquable ne l'est pas ! Super !!! Par contre, deux autres sur les 5 ne le sont pas alors qu'ils devraient l'être.
Bilan : 3 sur 5 !
On avance mais une petite erreur persiste...
Je continue de mon côté. Merci de me dire si tu trouves qqch du tien... -
nl2br() ne te sert a rien sur le titre
et verrifie bien les champs que ce sont les bon et que chaque ligne de ta bdd remplis le isset
ca ce trouve tu as decaler -
C'est cool, je commence à avoir de bonnes idées donc !!! En voyant que mes $ id, titre, contenu et lien n'apparaissaient pas dans l'URL, je venais justement d'ajouter les echo avant de revenir vers toi...
J'ai également ajouter $id = $donnees['id']; car sans ça la valeur de l'id n'était pas reprise dans l'url de news.php.
<?php $id = $donnees['id']; $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 echo $id; ?> & titre=<?php echo $titre; ?> & contenu=<?php echo $contenu; ?> & lien=<?php echo $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>
Malgré quelques petits soucis, un petit miracle s'est produit... En effet, sur mes 5 titres de news cliquables depuis index.php, trois ouvrent le popup news.php et affiche le titre + le contenu (si il y en a un) + le lien (si il y en a un). Par contre, je ne comprends pas pourquoi les autres liens ne fonctionnent pas... D'ailleurs un des titres cliquables ne devrait pas l'être car il ne contient ni contenu, ni lien (voir condition isset). D'autre titres devraient par contre l'être et ne le sont pas.
De plus, j'ai un message d'erreur sur ma page index.php "terminé, mais il existe des erreurs sur la page". Elles doivent en partie provenir de ma condition isset vu que les titres que je voudrais cliquables ne le sont pas spécialement et vis versa !
Ca progresse mais le casse-tête continue. Enfin, déjà super contente d'avoir 3 liens sur 5 qui fonctionnent. Ca par contre, je n'y comprends rien, c'est vraiment bizarre... -
ok s'est bon s'est tout vu
quand tu fait onClick="window.open('news.php?id=<?php $id; ?> &
met un echo entre les deux par exemple pour l'id
onClick="window.open('news.php?id=<?php echo $id; ?> &
-
No problem ! Le voilà :
<?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; } ?>
Ici aussi j'ai essayé pas mal de trucs mais sans résultat !!! Pourtant, je pense que mon lien est bon, non ?
Merci encore ! -
Euh il manque un truk dans tes lien ...
tu envois des varriable en GET qui son vide si tu recuperer ton id mais qui ne correspond a rien normal que ca ne t'affiche rien
peu tu me donner le code de tes liens s'il te plais ? -
Non, tjs vide...
Quand je place correctement le " qu'on avait oublié, news.php s'ouvre correctement, bonne dimension, couleur de fond mais il n'y a rien dedans !!! Voici l'url affichée en haut : https://www.pagesjaunes.fr/?id= & titre= & contenu= & lien=
echo mysql_num_rows($retour);
ne me retourne rien de plus !
Mes variables sont-elles bien transmises ? Je n'y comprends plus rien, ma db fonctionne et les champs sont bien créés et nommés...
THX ! -
Oui effectivement j'ai oublier le " tu en a besoin met le
$retour = mysql_query("SELECT * FROM news WHERE id = '".$id."'") or die(mysql_error()) ;
fait un echo mysql_num_rows($retour);
et on verra ce que ca te retourne
-
Etrange... J'ai maintenant une erreur (unexpected T_STRING) à la ligne <div class="news">
En réfléchissant un peu, je me dis que ça pourrait provenir du " car il n'est pas fermé ici : mysql_query("SELECT * FROM news WHERE id = '".$id."') or die(mysql_error());
Mais quand j'ajoute un " avant la dernière paranthèse, j'ai l'erreur suivante : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource ... ligne 46. Et la ligne 46, c'est celle-ci : while($donnees = mysql_fetch_array($retour))
Oh la la ! C'est compliqué la logique !!! -
mysql_query("SELECT * FROM news WHERE id = '".$id."') or die(mysql_error());
remplace ta syntaxe par ca -
Salut Tsunami...
Contente de voir que tu es encore là...
Je comprends bien ce que tu veux me dire mais j'ai essayé tout ça et ça ne marche toujours pas !
Voici à nouveau le code de ma deuxième page (news.php) :
<?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 = mysql_fetch_array($retour)) { ?> <div class="news"> <h3><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"> <?php // On enlève les éventuels antislash et on affiche le titre correspondant à la news $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 et on affiche le contenu correspondant à la news echo stripslashes($contenu); ?></font></p> <p><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"> <?php echo '<a href="' . $lien . '">' . $lien . '</a>'; ?></font></p> </div> <?php } // Fin de la boucle des news // On se déconnecte de MySQL mysql_close(); ?>
J'ai essayé plusieurs trucs, voir dans le code ci-dessus, pour afficher titre, contenu et lien mais news.php est tjs vide !!!
J'ai lu et relu mon code, chose pas facile car je n'ai cessé de le modifier depuis une semaine pour tenter de trouver LA solution.
J'ai remarqué cela :
$retour = mysql_query('SELECT * FROM news WHERE id=$id);
Il y a un seul apostrophe dans la paranthèse du select. J'en ai donc rajouté un avant de refermer la paranthèse et là surprise quand je mets la page en ligne, ma page news.php actualisée m'indique maintenant une erreur venant de cette ligne (not a valid MySQL result resource) :
while($donnees = mysql_fetch_array($retour))
Là je n'y comprends plus rien !!! Mais je ne laisserai pas tomber tant que je n'aurai pas trouver la solution !!!
Merci d'avance ! -
En fait quand tu veu afficher les donner de ta base de donner apres avoir fait un select le mieu et le plus pratique s'est dutiliser la fonction mysql_fetch_array() qui grosso modo met les valeur retourner par la requête dans un tableau.
$donnee = mysql_fetch_array($requete)
cette ligne signifie : je place dans le tableau $donnee les valeur retourner par ma requette
si tu as un champs bla dans ta base de donner pour afficher toute les valeur de blas dans un whille(), il faudra que tu place echo $donnee['bla'];
cela affichera toute les valeur de bla
Et de même pour le reste de tes champswhile($donnees = mysql_fetch_array($retour)) { echo $donnee['titre']; }
-
Salut Tsunami,
Contente que tu sois de retour...
Je ne comprends pas bien ce que tu essaies de me dire... Tu parles de ma bdd ?
Peux-tu me donner + de précisions stp ?
Merci d'avance !
- 1
- 2
Suivant