2 petites questions

Eléphant du PHP | 440 Messages

14 déc. 2006, 11:35

Alors voilà, j'ai ce code :
            <?php 
    $table = "organismes"; 
    $sql = "SELECT * FROM " . $table; 
    $res = mysql_query($sql); 
    $nb = mysql_num_rows($res);
    $i = 0; 
	echo '<table>'; 
    while ($i < $nb){ 
        echo '<tr>'; 
		echo '<td>' . mysql_result($res, $i, "LOGO") . '</td>'; 
	    echo '<td>' . '<b>'.'<a href=mysql_result($res, $i, "SITE")>'.mysql_result($res, $i, "SOCIETE") . '</a>'.'</b>'.'</td>'; 
		echo '<td>' . '<center>'.'<font face="Arial, Helvetica, sans-serif" size="1" color="#666666">'.mysql_result($res, $i, "THEMES").'</font>'.'</center>' . '</td>'; 
        echo '<td>' .'<center>'. '<font face="Arial, Helvetica, sans-serif" size="1" color="#666666">'.mysql_result($res, $i, "REGIONS") .'</font>'.'</center>' .'</td>'; 
        echo '</tr>'; 
        $i++; 
    } 
    echo '</table>';
	
?>
Les 2 premiers champs ne s'affichent pas comme je veux :
LOGO devrait afficher une image. Mais je ne sais pas comment configurer le champ correspondant dans PhpMyadmin.
Il devrait y avoir un lien sur SOCIETE. Apparemment ce n'est pas le bon code.

A l'aide svp !!! Merci d'avance.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 déc. 2006, 11:41

Modération :
cmoi, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.
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

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

14 déc. 2006, 11:50

Concernant ton LOGO, je suppose que la valeur stockée en base correspond à l'url du fichier. Dans ce cas, il te manque les balises html de l'image pour que celui-ci soit correctement affiché par le navigateur
'<img src="'.$nom_du_fichier.'" ... />'
Concernant le lien vers ta société, il te manque les guillemets de l'attribut href, et surtout, comme tu peux le voir grace à la coloration syntaxique, ton lien est interprété comme une chaine de caractère et non comme une commande php:
'<a href="'.mysql_result($res, $i, "SITE").'">'.mysql_result($res, $i, "SOCIETE") . '</a>'
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 440 Messages

14 déc. 2006, 12:25

[quote="Ryle"]Concernant ton LOGO, je suppose que la valeur stockée en base correspond à l'url du fichier. Dans ce cas, il te manque les balises html de l'image pour que celui-ci soit correctement affiché par le navigateur
'<img src="'.$nom_du_fichier.'" ... />'
echo '<td>' . '<img src="'.$nom_du_fichier.'".mysql_result($res, $i, "LOGO")/> . '</td>';

qui ne marche pas !

POur le lien, ça fonctionne super. Merci.

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

14 déc. 2006, 12:29

Ok pour le lien.

Pour le logo faisons preuve d'un peu de logique : on part du principe que " mysql_result($res, $i, "LOGO") " contient le nom du fichier, tandis que par rapport à ton code, la variable " $nom_du_fichier " n'a absolument aucune signification .... ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 3607 Messages

14 déc. 2006, 12:31

met y un peu du tien...
Il faut que tu remplaces $nom_du_fichier, par la valeur que tu as en base de donnée... alors? à ton avis comment procèdes-tu?

Eléphant du PHP | 440 Messages

14 déc. 2006, 12:35

je savais que ça n'avait pas de sens. j'ai essayé ça qui ne marche pas mieux :
echo '<td>' . '< img src="'.mysql_result($res, $i, "LOGO").'"/>' . '</td>'; 
l'adresse s'affiche mais pas l'image !

ViPHP
ViPHP | 3607 Messages

14 déc. 2006, 12:41

il me semble qu'il y a un espace de trop au début de ta balise img
il faut écrire <img
Sinon que contient le champ LOGO ?, es-tu sûr que le chemin est bon ?

Mammouth du PHP | 592 Messages

14 déc. 2006, 12:42

et le nom du logo????

il y a bien l'extension ???

Eléphant du PHP | 440 Messages

14 déc. 2006, 12:55

il me semble qu'il y a un espace de trop au début de ta balise img
il faut écrire <img
Sinon que contient le champ LOGO ?, es-tu sûr que le chemin est bon ?
On avance : l'image s'affiche. De plus comme j'ai mis un lien sur l'image, j'ai un cadre. Ma balise border n'est peut-être pas au bon endroit.

Code : Tout sélectionner

echo '<td>' . '<font border="0">'.'<a href="'.mysql_result($res, $i, "WEB").'">'.'<img src="'.mysql_result($res, $i, "LOGO").'"/>' . '</a>'.'</font>'.'</td>';
Merci pour votre aide.

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

14 déc. 2006, 12:58

En effet, tu peux virer la balise <font> qui ne sert à rien ici, quant à l'attribut border="0" sa place est dans le tag <img> :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 440 Messages

14 déc. 2006, 16:40

En effet, tu peux virer la balise <font> qui ne sert à rien ici, quant à l'attribut border="0" sa place est dans le tag <img> :)
j'ai fini par le comprendre. Mais je n'arrive à trouver la bonne syntaxe.

Code : Tout sélectionner

echo '<td>'.'<a href="'.mysql_result($res, $i, "WEB").'">'.'<img src="'.mysql_result($res, $i, "LOGO").'"/>'.'</a>'.'</td>';

Code : Tout sélectionner

'<img src="'.mysql_result($res, $i, "LOGO").'border="0"'.'"/>'
Ca par exemple ne va pas.

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

14 déc. 2006, 17:07

Tu n'est as obligé de faire une chaine avec chaque balise html tu sais :)
Ca serait bien plus lisible si tu ne le faisais d'ailleurs pas et tu verrais plus facilement ce qui ne va pas (c'est un problème de guillemets. De même en utilisant le tag [ php ] au lieu de [ code ] tu peux profiter de la coloration syntaxique :)
'<img src="'.mysql_result($res, $i, "LOGO").'border="0"'.'"/>'
//revient à 
'<img src="'.mysql_result($res, $i, "LOGO").'border="0""/>'
Le plus simple pour ne pas te tromper, c'est d'écrire le html que tu veux obtenir en sortie, et compléter la où il faut avec le php. Par exemple ici tu veux obtenir ce code :

Code : Tout sélectionner

<td><a href="MON_LIEN"><img src="MON_IMAGE" border="0" /></a></td>
Pour le passer en php, on commence simplement par l'afficher tel quel :
echo '<td><a href="MON_LIEN"><img src="MON_IMAGE" border="0" /></a></td>';
Ensuite on sort les variable que l'on veut modifier
echo '<td><a href="'.MON_LIEN.'"><img src="'.MON_IMAGE.'" border="0" /></a></td>';
Et il ne reste plus qu'à remplacer avec les valeurs qui vont bien :
echo '<td><a href="'.mysql_result($res, $i, "WEB").'"><img src="'.mysql_result($res, $i, "LOGO").'" border="0" /></a></td>'; 
Et là tu es sur d'avoir une syntaxe html correcte :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 440 Messages

14 déc. 2006, 17:47

Merci pour ces atuces. Peu à peu ça rentre !

2 autres petites question:
- chaque enregistrement est numéroté de 1 à ... Comment afficher le dernier n° ?
- comment afficher par ordre alphabétique ?

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

14 déc. 2006, 17:56

Concernant l'ordre, il te suffit de préciser la (ou les) colonne(s) suivant les quelles tu veux trier tes résultats dans ta requête. Par exemple, pour les trier par ordre alphabétique des sociétés :
$sql = "SELECT * FROM " . $table . " ORDER BY societe";  
(ou, sans intérêt, mais c'est pour l'exemple, par ordre inverse des noms des logo, puis par societe pour celles qui ont le même nom de logo :
$sql = "SELECT * FROM " . $table . " ORDER BY logo DESC, societe";  
Par contre je n'ai pas bien compris ta question sur la numérotation. Si c'est le nombre de ligne que tu recherches, tu l'as dans ta variable $nb (puisque tu affiches chaque ligne de 0 à $nb) ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...