Mettre en hyperlien le contenu d'un echo ?

Nicolas R
Invité n'ayant pas de compte PHPfrance

21 août 2007, 07:54

Yoo all !

Voilà que je m'attaque à PHP, mais ce n'est pas pour autant que je gagne ... Peut-être une âme charitable sur ce vivant forum saurait-elle m'aider ? :)

Voici le morceau de code qui me cause bien des soucis:

Code : Tout sélectionner

echo , htmlentities(trim($data['lien']));
Je n'arrive pas à activer le contenu rapporté de ma base par $data comme lien cliquable ! Une idée ?

Bonne journée à tous ! Et vive PHP :wink:

Eléphanteau du PHP | 26 Messages

21 août 2007, 08:45

si jai bien compris tu veux faire un lien avec ton echo?

essai :
$data = '<A href="tonlien.html">clik ici</A>';

echo ("$data");
ca devrai marcher

[EDIT] a ok j'avai mal compris:

c'est ta base de donnée qui te renvoi un lien?
<?php
	$sql = "SELECT ta_table FROM ton_champ WHERE cequetuveux"; /*ton champ est lien si j'ai bien compris */
	$req = mysql_query($sql) or die("error"); /*au cas ou il y aurai une erreur*/
	while ($result = mysql_fetch_array($req))
	{
		echo (".$data['lien'].");
	}
	mysql_close(); /*je pars du principe que t'es deja connecté ^^*/
?>

Nicolas R
Invité n'ayant pas de compte PHPfrance

21 août 2007, 11:37

Merci santaclos !

Oui, c'est ça, le champs "lien" renvoie bien un lien de type www.unsite.com . Et donc, le contenu apparait bien mais sans être cliquable; comme du texte basique. Je suis simplement à la recherche d'un moyen d'activer un hyperlien sur www.unsite.com.

Hum, j'ai essayé de me servir du code que tu m'as donné, mais il ma répondu qu'il a rencontré une erreur à la ligne de

Code : Tout sélectionner

echo (".$data['lien'].");
: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

J'aurais du le donner immédiatement, voici ma page de code complète
<?php
// je me connecte à ma base 
$base = mysql_connect ('sql.free.fr', 'xxx', 'xxx');  
mysql_select_db('xxx', $base); 

// Je recupère les infos des bons champs
$sql = 'SELECT nom, lien, description FROM site_liens ORDER BY id DESC;';  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
$nb_site_liens = mysql_num_rows($req);  

if ($nb_site_liens == 0) { 
    echo 'Aucun lien enregistré';  
 }  
 else { 
    while ($data = mysql_fetch_array($req)) { 
  
       // Et c'est là que j'affiche les resultats sans parvenir à presenter le resultat de lien sous forme d'hyperlien 

       echo ,'<font size="+2">', htmlentities(trim($data['nom'])),'</font size="+2">','<br />'; 	
       echo , htmlentities(trim($data['lien'])); 
       echo , '<br /> <br />', nl2br(htmlentities(trim($data['description']))) , '<br /><br />'; 
    }  
 }  

 mysql_free_result ($req);  
 mysql_close ();  
 ?> 
 
 </body>
</html>
Ca peut t'avancer dans ce que j'essaye de faire ?

En tout cas merci beaucoup pour cette aide rapide !

Eléphanteau du PHP | 26 Messages

21 août 2007, 11:42

autant pour moi c'est
echo '$data['lien']';
ou ca m'en souvient plus ^^
echo ' .$data['lien']'. ;
mais je pense que c'est la premiere.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 août 2007, 11:47

si tu n'affiches pas de texte "dur", ce n'est pas la peine de mettre des quotes.
echo $data['lien']
estt largement suffisant.

Sinon, pour le problème de base, ce que tu voudrais, c'est afficher le lien, et faire en sorte que le clic sur ce lien redirige vers la cible de ce lien ?

Pour afficher le lien, c'est un simple echo, comme dit précédemment, mais pour le clic, il faut que tu mette en place un lien hypertexte <a>

Un exemple basique (que je te laisse adapté) serait le suivant :
$lien = "www.phphfrance.com";
echo '<a href="'. $lien . '">'.$lien.'</a>';
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

21 août 2007, 12:58

Merci encore à vous deux !

Mais manque de bol ? Lorsque j'écris donc:

Code : Tout sélectionner

echo ,'<font size="+2">', htmlentities(trim($data['nom'])),'</font size="+2">','<br />'; echo , htmlentities(trim($data['lien'])); echo , '<br /> <br />', nl2br(htmlentities(trim($data['description']))) , '<br /><br />';

Invité
Invité n'ayant pas de compte PHPfrance

21 août 2007, 13:06

Désolé pour le bout de message précedent, posté inopinément ... je ne peux pas l'editer, comme j'étais alors en mode "invité".

Je disais donc qu'en postant à nouveau mon code modifié en :
echo ,'<font size="+2">', htmlentities(trim($data['nom'])),'</font size="+2">','<br />';
echo '<a href="'. $lien . '">'.$lien.'</a>';
echo , '<br /> <br />', nl2br(htmlentities(trim($data['description']))) , '<br /><br />';

Code : Tout sélectionner

Je n'ai tout simplement rien qui s'affiche, comme je ne vois pas vers quoi pointe $lien. le problème, c'est que je ne peux pas dire "www.phpfrance.com" comme justement l'information absolument provenir de la base. mmh, je ne suis toujours pas sûr d'arriver à expliquer ce que je souhaite faire ! C'est vraiment tout bête ! - J'affiche une information issue de ma base dans le champs "lien" - Cette information s'affiche en texte basique - Je voudrais que le contenu generé s'affiche sous forme d'hyperlien cliquable ! Or j'ai essayé tous les remplacements proposés, soit j'obitnes une erreur dans syntaxe (premiers exemples), soit du vide ...

Petit nouveau ! | 3 Messages

21 août 2007, 13:24

Bon, ça avance ça avance !

En entrant

Code : Tout sélectionner

echo '<a href="'.$data['lien'].'">'.$data['lien'].'</a>';
, j'ai bien le lien qui s'affiche comme un hyperlien. Seul bémol, au lieu de renvoyer vers www.phpfrance.com , il renvoie vers www.monsite.com/www.phpfrance.com ! Or, la base possède le lien correct. C'est bien un a href qu'il faut faire ?
Modifié en dernier par Nicolas R le 21 août 2007, 13:34, modifié 2 fois.

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

21 août 2007, 13:27

Ajouter le protocole (http://) dans ton lien :)

Ce problème vient en fait du navigateur qui par défaut va tenter d'ouvrir le lien de manière relative, c'est à dire à partir de l'url du site courrant. Dès le moment où tu lui précises le protocole, il sait qu'il s'agit d'une adresse globale et t'ouvrira le site normalement.

Ps : utilises les balises [ php ] pour du code php sur le forum, la coloration syntaxique aide à la lecture et au débuggage :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 38 Messages

21 août 2007, 13:28

zeus t'as bien prévenu que tu devrais adapter son bout de code, $lien est une variable d'exemple.
Compte tenu du code que tu as poste, apres adaptation tu devrais avoir :
<?php

echo '<font size="+2">' . htmlentities(trim($data['nom'])) . '</font size="+2"><br />';
echo '<a href="'. $data['nom'] . '">' . $data['nom'] . '</a>';
echo '<br /><br />' . nl2br(htmlentities(trim($data['description']))) . '<br /><br />';

?>
HS : ta balise de fermeture </font> n'a pas a avoir d'attribut, c'est juste </font>, tout court.

EDIT : grillé :roll:

Petit nouveau ! | 3 Messages

21 août 2007, 13:32

Désolé pour les questions de noobs hein, si j'avais plus de temps, j'aurais vraiment pris la peine de ne pas me faire avoir par des ptits problèmes HTML comme ça ...

Mais donc, ça marche ! Merci beaucoup beaucoup, vous êtes géniaux et vraiment sympathiques, malgré ce que j'imagine être une question un peu benette. je garde l'adresse ! Vive vous :-)

Je prends note pour la syntaxe du forum.

:agenouille:

Eléphanteau du PHP | 26 Messages

21 août 2007, 13:35

n'oublie pas de mettre resolu ;)

Petit nouveau ! | 3 Messages

21 août 2007, 13:40

je ne peux pas, j'ai commencé ce topic comme invité :cry:

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

21 août 2007, 13:42

[Résolu] ajouté :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...