echo et lien

Eléphant du PHP | 59 Messages

28 avr. 2010, 16:33

Bonjour,

Je viens de créer ce tableau pour afficher les résultats d'une requête

Code : Tout sélectionner

<table width="100%" border="1"> <tr><td width="211">blablabla</td></tr> <?php while ($ligne=mysql_fetch_array($r)) { echo "<tr><td>"; echo Load_CBfield($ligne['itemid']) ; echo "</td><tr>" ; } ?> <tr><td width="211">blablabla2</td></tr> <?php while ($ligne2=mysql_fetch_array($r2)) { echo "<tr><td>"; echo ('<a href="index.php?sobitemplate2Id=">titre</a>'); echo "</td><tr>" ; } ?> </table>
Il fonctionne très bien. Je voudrais juste remplacer
echo ('<a href="index.php?sobitemplate2Id=">titre</a>');
par
echo ('<a href="index.php?sobitemplate2Id=$ligne2['itemid']">Load_CBfield($ligne2['itemid'])</a>');

mais je n'arrive pas à l'écrire correctement .

Si quelqu'un à la solution merci d'avance

Avatar du membre
ViPHP
ViPHP | 3008 Messages

28 avr. 2010, 16:36

Tu fais juste une concaténation :
echo '<a href="index.php?sobitemplate2Id='.$ligne2['itemid'].'">'.Load_CBfield($ligne2['itemid']).'</a>';

Eléphant du PHP | 59 Messages

28 avr. 2010, 16:52

Merci pour ton aide

la partie .Load_CBfield($ligne2['itemid']). fonctionne

par contre il s'affiche juste en texte, il ne prend pas le lien en compte.

Une idée

Eléphant du PHP | 59 Messages

28 avr. 2010, 18:08

J'ai fait plusieurs test mais je comprend pas, si j'écris le code de cette façon en ajoutant le mot lien
echo '<a  href="index.php?sobitemplate2Id='.$ligne2['itemid'].'">'.titre($ligne2['itemid'], sobi2_item).'lien</a>';


je peux cliquer sur le mot lien mais pas sur la partie '.titre($ligne2['itemid'], sobi2_item).'

Pourquoi?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

29 avr. 2010, 09:01

Que vois-tu à ce niveau en affichant le code source ?

Eléphant du PHP | 59 Messages

29 avr. 2010, 09:55

salut,

voici le code source
<tr><td>montitre<a href="/index.php?sobitemplate2Id=26">lien</a></td></tr>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

29 avr. 2010, 13:44

C'est que ce bout de code titre($ligne2['itemid'], sobi2_item) ne fonctionne pas. As-tu essayé de faire un echo dessus ?

Tu as dis que Load_CBfield($ligne2['itemid']) fonctionnait, quel est le code source lorsque tu l'utilises ?

Eléphant du PHP | 59 Messages

29 avr. 2010, 14:08

le code titre($ligne2['itemid'], sobi2_item) fonctionne bien puisqu'il m'affiche le résultat.

Ce n'est pas plustôt un problème de syntaxe au niveau de la fonction titre(),
parce que si je remplace

echo '<a href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id='.$ligne2['itemid'].'">'.titre($ligne2['itemid'], sobi2_item).'</a>';
qui me donne le code source
montitre<a href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=16"></a>
par
echo '<a href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id='.$ligne2['itemid'].'">'.ligne2['itemid'].'</a>';
qui me donne le code source
<a href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=16">16</a>
le lien fonctionne correctement.

Et je viens d'avoir le même problème avec une balise <img >

comme ça, pas de problème
<img <?php fctaffichimage('images/com_sobiphotos2/clients/'.$fieldname2,150, 150) ?> />
j'obtiens le code source suivant
<img src="/images/com_sobiphotos2/clients/11_ico.jpg">

mais de cette façon
echo '<img '.fctaffichimage('images/com_sobiphotos2/clients/'.$fieldname2,150, 150).' >';
j'obtiens le code source suivant
src="/images/com_sobiphotos2/clients/11_ico.jpg"

Je voulais donc savoir si ça ne venais de la fonction qui est mal écrite, et qui empêche d'interpréter les balises

merci

Eléphant du PHP | 422 Messages

29 avr. 2010, 16:21

hello

tu vois bien que ta fonction titre($ligne2['itemid'], sobi2_item) retourne rien (vide , nada, ...) donc cherche de ce côté la

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 59 Messages

29 avr. 2010, 16:25

C'est bon j'ai trouvé la solution, il suffit d'isoler la fonction

au lieu de:
echo '<a href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id='.$ligne2['itemid'].'">'.titre($ligne2['itemid'], sobi2_item).'</a>';

il faut

echo '<a href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id='.$ligne2['itemid'].'">';
titre($ligne2['itemid'], sobi2_item);
echo '</a>';

voilà, c'est tout simple en faîte.

merci quand même charabia

Eléphant du PHP | 422 Messages

29 avr. 2010, 16:29

hello

c'est pas tres propre :/

montre ta fonction titre()

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 59 Messages

29 avr. 2010, 16:45

voilà ma foncyion titre

<?php
function titre($itemid, $bdd) {
$database = & JFactory::getDBO();
$user =& JFactory::getUser();
$sql = "SELECT (title) FROM #__$bdd WHERE itemid= {$itemid} LIMIT 1";
$database->setQuery( $sql );
echo $database->loadResult();
}
?>

qu'est ce que tu me suggères comme solution?

ViPHP
AB
ViPHP | 5818 Messages

29 avr. 2010, 19:04

Si tu évitais de mettre des echo partout ça serait plus simple :
while ($ligne2=mysql_fetch_array($r2))
{?>
    <tr><td>
    <a href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=<?php echo $ligne2['itemid']?>">
    <?php titre($ligne2['itemid']?></a>
    </td><tr>
<?php } ?>

Eléphant du PHP | 59 Messages

29 avr. 2010, 23:05

Merci AB