Portfolio grace au php

Eléphanteau du PHP | 29 Messages

12 mai 2006, 13:31

Bon heu là ça ne va plus, je commençais à comprendre mais finalement je m'y perd dans tous ces exemples de variables, je m'emèle les pinceaux, j'ai tout repris à zéro pour d'abords afficher les images, on verra les liens et les miniatures après, alors je vais essayer de faire clair:

- La connection à la base c'est OK.
- La table s'appelle couleurs
- Les champs sont: id et chemin(le lien vers l'image stockée dans un dossier du site).
- J'ai mis des noms de variable simples (donnees et reponse).

Je commence donc mon code par:

Code : Tout sélectionner

$reponse = mysql_query("SELECT * FROM couleurs"); // Requête SQL
Ensuite j'ai fait une liste pour afficher toutes les images comme ceci:

Code : Tout sélectionner

// Avec cette boucle, on liste uniquement les images: while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['chemin']; echo "<br />"; } mysql_close(); // Déconnexion de MySQL ?>
Le problème c'est que comme ça j'ai les liens qui s'affichent mais pas les images. Je suppose que je dois utiliser un _GET quelque part mais je me plante à chaque fois.

Mammouth du PHP | 19672 Messages

12 mai 2006, 13:55

Donne un exemple type des données enregistrées et ensuite comment tu les intègres dans ton code : et enfin, avant de poster ta réponse, regarde donc ton code html généré pour voir ce qui est envoyé: il y a des chances pour que tu notes soit des trous soit des choses incohérentes que tu sauras corriger toi-même sans grande difficultés.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 29 Messages

12 mai 2006, 14:00

Je note, je note et je persévère, j'en suis là:

L'affichage de l'image en grand:

Code : Tout sélectionner

<?php mysql_connect("sql.free.fr", "utilisateur", "motdepasse"); // Connexion à MySQL mysql_select_db("base"); // Sélection de la base $reponse = mysql_query("SELECT id,chemin FROM couleurs"); // Requête SQL if(isset($_GET['img'])) { //alors afficher la grande image } mysql_close(); // Déconnexion de MySQL ?>
La miniature et son lien:

Code : Tout sélectionner

<a href="<?php echo $_SERVER['PHP_SELF'];?>?img=<?php echo $reponse;?>"><img src="images/peinture/thumbs/avatars.jpg" width="30" height="30" /></a>
Mais rien ne s'affiche à part la miniature et le lien html qui s'affiche en passant sur la miniature m'indique:

Code : Tout sélectionner

...index.php?img=Ressource id #2

Mammouth du PHP | 1353 Messages

12 mai 2006, 14:03

C'est normal tu ne récupères pas les valeurs de ta requete. Il ne suffit pas de récupérer la valeur d'un mysql_query pour avoir les résultats retournés par cette requète.

Regarde les fonctions comme mysql_fetch_array() et mysql_fetch_assoc()

(pense aussi a mettre ton code entre les balises php ca sera plus joli :wink:

Eléphanteau du PHP | 29 Messages

12 mai 2006, 14:24

Très bien, ça complique encore les choses mais je ne lâche pas l'affaire.
J'ai donc intègré tout ça mais au lieu des données contenues dans la colonne chemin j'ai désormais le contenu de tous les champs et toujours pas les images surtout.
$reponse= mysql_query("SELECT id,chemin FROM couleurs"); // Requête SQL


while ($row = mysql_fetch_array($reponse, MYSQL_ASSOC)) {
   printf("ID : %s  Nom : %s", $row["id"], $row["chemin"]);
}

mysql_free_result($reponse);

 if(isset($_GET['img'])) {
//alors afficher la grande image

}

mysql_close(); // Déconnexion de MySQL
?>
Je viens de m'en rendre compte mais il ne manque pas un echo pour la ligne avec if(isset...

Sinon c'est plus joli comme ça? :wink:

Eléphanteau du PHP | 29 Messages

12 mai 2006, 14:33

Désolé d'enchaîner les posts mais j'avance petit à petit et votre aide m'est précieuse.

Mon code ressemble désormais à ça:
$reponse= mysql_query("SELECT id,chemin FROM couleurs"); // Requête SQL


if (!$reponse) {
   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
   exit;
}
/* Utilisation du résultat */
$row = mysql_fetch_assoc($reponse);

/* Maintenant, nous libérons le résultat et continuons notre script */
mysql_free_result($reponse);

echo $row['chemin'];


mysql_close(); // Déconnexion de MySQL
?>
Et mon lien sur la miniature à ça:
<a href="<?php echo $_SERVER['PHP_SELF'];?>?img=<?php echo $row;?>"><img src="" width="30" height="30" /></a>
Ce qui me donne comme résultat à l'écran: l'adresse de l'image ce qui est logique puisque c'est ce qui est dans la colonne demandée.
Mais comment faire afficher l'image correspondant à cette adresse?
Je sens que je touche au but!!!

Mammouth du PHP | 1353 Messages

12 mai 2006, 14:35

Oui c'est plus joli !

En revanche tu passes a coté du principe : la requete SQL va te permettre de récupérer toutes les valeurs de ta table Couleur.

Ainsi si tu veux afficher toutes les miniatures il te faut utiliser le while et afficher à chaque fois les images, et qu'enfin le lien passe comme parametre l'ID par exemple pour l'image en grand (ca on verra après :wink:)

Dans le bout de code suivant je prend chaque chemin de ta table et je les defini comme sources d'une image, ainsi la totalité des miniatures devrait s'afficher car la while() répète l'instruction jusqu a ce qu il n y ait plus de valeurs dans ta table... De plus j'affecte à chaque lien le parametre ID pour que si il clique dessus on puisse savoir quelle est l ID de l image que l on doit afficher en grand. Dis moi si cela correspond bien à ce que tu veux et si tu arrives à le faire fonctionner.
<?php
mysql_connect("sql.free.fr", "utilisateur", "motdepasse"); // Connexion à MySQL 
mysql_select_db("base"); // Sélection de la base 

$reponse = mysql_query("SELECT id,chemin FROM couleurs"); // Requête SQL 


if(isset($_GET['img'])) { 
//alors afficher la grande image 
} 

//Affichage des miniatures
while ($row = mysql_fetch_assoc($reponse)) { ?>
<a href="<?php echo $_SERVER['PHP_SELF'];?>"?img=<?php echo $reponse["id"];?>><img src="<?php echo $reponse["chemin"];?>" width="30" height="30"></a>
<?php }
mysql_close(); // Déconnexion de MySQL 
?>
Modifié en dernier par guilt92 le 12 mai 2006, 14:46, modifié 3 fois.

Eléphanteau du PHP | 29 Messages

12 mai 2006, 14:43

Je suppose qu'on a du se croiser dans les messages, je viens d'essayer ce que tu viens de d'écrire mais ya une erreur sur cette ligne apparemment:
echo "<a href=\"".$_SERVER['PHP_SELF'];."?img=".$reponse["id"]."\"><img src=\".$reponse["chemin"]." width="30\" height=\"30\" /></a>"
} 
Je conserve le système des miniatures en html, je voudrait leur coller un lien en php pour recharger la page avec la grande image correspondante au dessus. Et c'est ça qui coince.
Dans le script que j'ai posté précédemment il n'y a pas d'erreur de signalée mais tout ce que j'obtiens en cliquant sur ma miniature c'est l'adresse de la grande image.

Mammouth du PHP | 1353 Messages

12 mai 2006, 14:45

J'ai édité mon ancien post pour corriger le code, il vaut mieux éviter le mélange php htlm comme je l avais fait genre echo "<a href..." Essaye avec le nouveau code pour voir.

Eléphanteau du PHP | 29 Messages

12 mai 2006, 14:50

Non, toujours pas...

Mammouth du PHP | 1353 Messages

12 mai 2006, 14:52

Un peu plus de détails stp. Message d'erreur, erreur d'affichage, que se passe t il ??
tout ce que j'obtiens en cliquant sur ma miniature c'est l'adresse de la grande image.
Quand tu passes le curseur sur les miniatures le lien est bon ?

Eléphanteau du PHP | 29 Messages

12 mai 2006, 15:02

Je ne l'ai plus sous les yeux, j'ai tout repris à zéro (encore!) et ça m'embête un peu car je ne vais pas pouvoir continuer... :cry:
Si quelqu'un veut s'amuser c'est un espace de test que j'ai ouvert chez free alors je m'en fous un peu. Ya juste la page index.php et le dossier avec deux images et les miniatures.
Voici ce que donne ma page toute simple pour le test:

Code : Tout sélectionner

<html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php mysql_connect("sql.free.fr", "coeur.de.canard", "0pe3hi6w"); // Connexion à MySQL mysql_select_db("coeur_de_canard"); // Sélection de la base $reponse= mysql_query("SELECT id,chemin FROM couleurs"); // Requête SQL if (!$reponse) { echo 'Impossible d\'exécuter la requête : ' . mysql_error(); exit; } /* Utilisation du résultat */ $row = mysql_fetch_assoc($reponse); /* Maintenant, nous libérons le résultat et continuons notre script */ mysql_free_result($reponse); echo $row['chemin']; mysql_close(); // Déconnexion de MySQL ?> <br> <br> <br> <br> <a href="<?php echo $_SERVER['PHP_SELF'];?>?img=<?php echo $row;?>"><img src="images/peinture/thumbs/avatars.jpg"></a> &nbsp;&nbsp; <a href="<?php echo $_SERVER['PHP_SELF'];?>?img=<?php echo $row;?>"><img src="images/peinture/thumbs/evagba.jpg"></a> </body> </html>
Je désespère, je pensais toucher au but mais là... :roll:

Eléphanteau du PHP | 29 Messages

12 mai 2006, 21:27

Bon, me voilà revenu, j'ai fait de nouvelles recherches et de nouveaux essais mais je suis toujours au même point.
Comment faire afficher l'image correspondant à chaque miniature?

Mammouth du PHP | 1353 Messages

13 mai 2006, 12:41

Je t'ai partiellement montré comment faire, il faut que ton "img scr=" soit géré dans le while() {} qui récupère tous les chemins de ta base de données. Tant que tu laisses comme source avatar.jpg tu n auras qu'une image unique...

Eléphanteau du PHP | 29 Messages

13 mai 2006, 22:04

Je te remercie de ton aide, ça m'a encouragé à tout reprendre à zéro (encore et encore) parce que je n'y comprenait plus rien.
Et, chose incroyable, je suis arrivé à un script qui fonctionne!! :lol: Wééé!
Enfin presque... :mrgreen:
Le voici, le voilà:
<body>

<?php
$data= mysql_query("SELECT * FROM couleurs");
$row = mysql_fetch_assoc($data);
?>

<img src="<?php echo $img ?>">

<br>
<br>
<a href=" <?php echo $_SERVER['PHP_SELF']; ?>?img=<?php echo $row['chemin']; ?>"><img src="images/peinture/thumbs/avatars.jpg"></a>

</body>
Les problèmes qui restent sont les suivants:
- Il me manque une image par défaut avant que quelqu'un ne clique sur une miniature.
- Ca ne fonctionne qu'avec une seule image, le lien ne marche pas sur les autres mioniatures que j'ai essayé d'ajouter, même en incrémentant la variable, exemple:
?img=<?php echo $row['chemin']=2;
Mais bon, je suis déjà hyper fier de moi d'avoir réussi à mettre en place ce truc après avoir envoyé tout ballader pour reprendre tranquillement depuis le début...