Probleme php
petinico
-
petinico -
petinico -
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
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:
- Probleme php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
9 réponses
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.
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.
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
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
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 :
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]
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]
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...
à+
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...
à+
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.
@+
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.
@+
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..
à+
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..
à+
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
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
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 :
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
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