Portfolio grace au php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Portfolio grace au php

par Tompouce » 14 mai 2006, 14:18

Les miniatures sont situées dans un dossier 'thumbs" qui se trouve dans le même répertoire que les grandes images, et je n'utilise pas de base de données.
Ce sera sans doute l'étape suivante dans l'aprentissage.
Ce n'est pas tout à fait ce à quoi je voulais aboutir mais ça fonctionne, on peut donc dire que mon problème est résolu!
Merci pour votre aide!

par Cyrano » 14 mai 2006, 12:15

D'après ce que je peux voir, tu sembles stocker les miniatures et les agrandies dans le même répertoire avec des noms différents. Suggestion: stockes-les dans deux répertoires différents mais avec le même nom : dans tes liens, tu n'auras que le nom du répertoire qui changera, et dans ta base de données, tu simplifieras aussi ;)

Si ça marche, mets ce sujet [Résolu] et si tu as un problème de SQL, prépare ta question avec des exemples pour illustrer puis poste dans le forum ad-hoc ;)

par Tompouce » 14 mai 2006, 11:05

8) Bon,
finalement je pense que j'ai compris grace à cet exercice le principe de base du php mais j'ai encore du mal avec les requètes mysql.
Pour arriver à mes fins avec cette histoire de miniatures et d'image agrandie qui s'affiche au dessus, je suis arrivé au script ci-dessous.
Je n'utilise plus la bdd et je me fait chier à lister mes images en attribuant une variable à chacune d'elle.
Ca fonctionne, c'est tout ce qui compte:
<?php
$image1="http://coeur.de.canard.free.fr/images/peinture/avatars.jpg";
$image2="http://coeur.de.canard.free.fr/images/peinture/evagba.jpg";
?>
<body>

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

<br>
<br>
<a href=" <?php echo $_SERVER['PHP_SELF']; ?>?img=<?php echo $image1; ?>"><img src="images/peinture/thumbs/avatars.jpg"></a> 
&nbsp; <a href=" <?php echo $_SERVER['PHP_SELF']; ?>?img=<?php echo $image2; ?>"><img src="images/peinture/thumbs/evagba.jpg"></a>
Il ne me reste plus qu'à règler le problème de l'image par défaut à afficher à l'arrivée sur ma page...
Un peu d'aide serait la bienvenue mais sinon je vais courrir le web à la recherche d'une solution pas trop compliquée!

par Tompouce » 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...

par guilt92 » 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...

par Tompouce » 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?

par Tompouce » 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:

par guilt92 » 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 ?

par Tompouce » 12 mai 2006, 14:50

Non, toujours pas...

par guilt92 » 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.

par Tompouce » 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.

par guilt92 » 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 
?>

par Tompouce » 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!!!

par Tompouce » 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:

par guilt92 » 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: