Probleme php

Fermé
petinico - 10 août 2003 à 18:49
 petinico - 13 août 2003 à 19:30
bonjour à tous,

je bute depuis un moment sur ceci :

une table appellée photo contient 40 numéros, chacun correspondant à une photo 1.jpg, 2.jpg...

depuis un moteur de recherche, je lance une requete, j'obtiens bien mes résultats, mais ils ne
s'affichent pas !

en fait pour chaque resultat, j'ai :

Array->
et ici un rectangle avec la croix rouge avec mon lien

le probleme est :
- le "array" pourquoi s'affiche t-il ?
- si je passe le curseur sur l'image, le lien est bon mais il manque le numéro de la photo ! elle
risque pas de s'afficher...

comment résoudre tout ça ??

je joins mon code :

<?
$db = mysql_connect ("localhost", "root", "");
mysql_select_db ("qualitypics", $db);

$req = "select numero from photos where motcle1='$cle1' or motcle2='$cle1' or motcle3='$cle1'
or motcle1='$cle2' or motcle2='$cle2' or motcle3='$cle2' or motcle1='$cle3' or
motcle2='$cle3' or motcle3='$cle3'";
$result = mysql_query($req,$db) or die('requete =>'.$req.'<br> error->'.mysql_error());

while ($ligne = mysql_fetch_array ($result))
{
print "<table border=\"0\" width=\"720\" height=\"300\">";
print "<tr>";
print "<td width=\"140\" height=\"140\" border=\"0\" align=\"center\">$ligne-><a
href=\"album.php?image=images/maj/$numero.jpg\"><img src=\"images/maj/'$numero'a.jpg\"
border=\"0\" height=\"123\"></a></td>";
print "</tr>";
print "</table>";
}
mysql_free_result ($result);

?>

merci par avance
petinico
A voir également:

9 réponses

BreTzeL Messages postés 59 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 28 juin 2005 24
10 août 2003 à 22:04
salut.
rien qu'a lire la sortie que tu obtiens, je peux te dire que tu cherche a afficher le tableau en entier au lieu d'un element.
Et j'ai trouvé c'est ou : il faut mettre $ligne[0] a la place de $ligne a l'interieur de ton while.
de plus, ta variable $nimero n'est pas affectée, je crois (si je comprend bien a koi corespondent tes variables) qu'il faut aussi mettre $ligne[0]
la, ca devrait marcher.
0
salut, BreTzel,

j'ai modifié mon while en conséquence :

while ($ligne[0] = mysql_fetch_array ($result))
{
print "<table border=\"0\" width=\"720\" height=\"300\">";
print "<tr>";
print "<td width=\"140\" height=\"140\" border=\"0\" align=\"center\">$ligne[0]-><a href=\"album.php?image=images/maj/$ligne[0]'$numero'\.jpg\"><img src=\"images/maj/$ligne[0]'$numero'a.jpg\" border=\"0\" height=\"123\"></a></td>";
print "</tr>";
print "</table>";
}

et j'ai toujours le meme affichage...

"rien qu'a lire la sortie que tu obtiens, je peux te dire que tu cherche a afficher le tableau en entier au lieu d'un element"
et
"de plus, ta variable $numero n'est pas affectée"

qu'est-ce que tu veux dire par là ?

@+
petinico
0
BreTzeL Messages postés 59 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 28 juin 2005 24
11 août 2003 à 15:33
excuse moi, je me suis mal exprimé : quand je disait dans le while, je pensais a l'interieur de la boucle, mais la condition reste la meme, ce qui donne ca :
while ($ligne = mysql_fetch_array ($result)) 
{ 
print "<table border="0" width="720" height="300">"; 
print "<tr>"; 
print "<td width="140" height="140" border="0" align="center">$ligne[0]-><a href="album.php?image=images/maj/$ligne[0].jpg"><img src="images/maj/$ligne[0]a.jpg" border="0" height="123"></a></td>"; 
print "</tr>"; 
print "</table>"; 
} 


la variable $numero n'a aucun sens dans le code que tu m'as montré : elle ne correspond a rien.

je vais essayer de t'expliquer clairement ce que je crois etre ton probleme.
lorsque tu recupere un resultat d'une requete sql, tu recoit un tableau quelque soit le nombre de champ (ici, tu a un tableau d'1 ligne et 1 colonne). il faut donc, pour acceder a tes champs "rentrer" dans le tableau : c'est la que tu mets les crochets. l'indice 0 correspond au premier champ demandé dans ta requete (ici : numero) et ainsi de suite.

Si tu decide de garder toutes tes lignes en memoire pour travailler dessus ensuite, ton code devient :

$i=0
while ($ligne[$i] = mysql_fetch_array ($result))
{
...
$i++;
}

et tu accedes a tes resultats comme ca : $ligne[numero_resultat][numero_champ]
0
exact !

avec ton $lien[0], j'ai maintenant le résultat suivant :

un des numéros de photo avec le rectangle à coté

c'est mieux!

pour répondre à ta question, $numéro (à mon idée) correspondrait à ce qui se trouve dans la colonne "numero" de ma table, mais j'ai confondu avec la variable d'un champ texte d'un formulaire où name=numero...

ceci dit, mon rectangle blanc pointe sur un lien qui correspond presque au lien de l'image à ouvrir, par exemple pour image 2.jpg:

album.php?image=images/maj/2"\.jpg

il suffit d'arriver à corriger ce lien et ça devrait marcher...

à+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ça y est, mon image finale s'ouvre !

il fallait modifier le lien :

print "<td width=\"140\" height=\"140\" border=\"0\" align=\"center\">$ligne[0]-><a href=\"album.php?image=images/maj01_08_03/$ligne[0]$numero.jpg\"><img src=\"images/maj01_08_03/$ligne[0]$numero a.jpg\" border=\"0\" height=\"123\"></a></td>";

reste que mes vignettes ne s'affichent pas, et la flèche, je sais pas d'où elle sort... :

2->carré representant la vignette.

@+
0
je reprends ce que tu m'as expliqué :

ici, tu a un tableau d'1 ligne et 1 colonne : c'est moi qui l'ai crée mais je voudrais un affichage de 5 colonnes sur 4 lignes et je comprends pas, si je les crée, comment mes photos vont rentrer dedans automatiquement...

je comprends le code :
$i=0
while ($ligne[$i] = mysql_fetch_array ($result))
{
...
$i++;
}
tu pas de zero, tu boucle et tu incremente tant qu'on trouve des resultat à afficher

et tu accedes a tes resultats comme ca : $ligne[numero_resultat][numero_champ]
là, par contre, je comprends pas ce que signifie les entre crochets... on est d'accord que numero est le nom du champs de ma table ? et le reste..

à+
0
houlala...!!!

avec la boucle :

$i=0;
while ($ligne[$i] = mysql_fetch_array ($result))
{
print "<table border=\"0\" width=\"720\" height=\"300\">";
print "<tr>";
print "<td width=\"140\" height=\"140\" border=\"0\" align=\"center\">$ligne[$i]<a href=\"album.php?image=images/maj01_08_03/$ligne[$i]$numero.jpg\"><img src=\"images/maj01_08_03/$ligne[$i]$numero a.jpg\" border=\"0\" height=\"123\"></a></td>";
print "</tr>";
print "</table>";
$i++;
}

mes vignettes s'affichent pareil, carré blanc et à la place du numero, j'ai "array" et mon lien est :

album.php?image=images/maj01_08_03/array.jpg

ça sent pire....

@+
petinico
0
BreTzeL Messages postés 59 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 28 juin 2005 24
11 août 2003 à 23:33
désolé si je t'ai plus embrouillé qu'aidé avec mon nouvel indice.
ce que je te proposait c'était de séparer l'affichage et le travail sur la base. d'un coté tu faisais la boucle avec $line[$i]=... et tu obtenais un tableau avec tous tes resultats. ensuite tu passe a l'affichage dans une nouvelle boucle. mais pour le cas present, comme tu fais un affichage direct du resultat de la requete, ca ne sert pas beaucoup (si par contre tu avais besoin de retravailler sur ce resultat, tu n'aurais pas le choix)

bref, normalement, ca devrait aller comme ca :
while ($ligne = mysql_fetch_array ($result))
{
print "<table border=\"0\" width=\"720\" height=\"300\">";
print "<tr>";
print "<td width=\"140\" height=\"140\" border=\"0\" align=\"center\">$ligne[$i]<a href=\"album.php?image=images/maj01_08_03/$ligne[0]$numero.jpg\"><img src=\"images/maj01_08_03/".$ligne[0].$numero."a.jpg\" border=\"0\" height=\"123\"></a></td>";
print "</tr>";
print "</table>";
} 


j'ai rajouté des '.' car c'est l'operateur de concatenation des chaines de caracteres. ici, tu n'as pas le choix si tu veux coller $ligne[0] avec $numero et avec "a.jpg"
voila
0
ça y est !!!

mes vignettes s'affichent...
mon probleme venait bien de la concaténation...

merci beaucoup BreTzel

@+

petinico
0