aide basique php: mise en correlation des variables

Petit nouveau ! | 4 Messages

24 juil. 2007, 12:46

Bonjour tout le monde!


Dans le body de ma page html, j'ai ceci:
<?php include('affichage_aleatoire_animaux.inc.php'); ?>
Dans le fichier inclus, j'ai ceci:
<?php
include('connection.inc.php');

// on sélectionne la base, en cas d'échec on affiche l'erreur
mysql_select_db($bddname,$bdd)  or die('Erreur de selection :'.mysql_error());

// on lance la requête en utilisant count() pour compter le nombre d'éléments de la table
$query = mysql_query('SELECT count(*) FROM ovipare') or die(mysql_error());

// on stocke le resultat de la requête (le nombre d'entrées) dans la variable $nb_entrees à l'aide de mysql_result()
$nb_entrees = mysql_result($query,0,0);

// on génère le nombre aléatoire en fonction du nombre d'entréees
$var1 = rand(1,$nb_entrees);
// on va chercher le lien de la petite image correspondant au numéro de profil généré aléatoirement juste avant, et stocké dans le champ "image_petite1" de la table "ovipare"
$lien1 = "SELECT image_petite1 FROM TABLE ovipare WHERE numero_profil=$var1";
$lien_nom1 = "SELECT nom_ovipare FROM TABLE ovipare WHERE numero_profil=$var1";

mysql_query($affich1) or die ("Impossible d'afficher l'image");

$var2 = rand(1,$nb_entrees);
$lien_img2 = "SELECT image_petite1 FROM TABLE ovipare WHERE numero_profil=$var1";
$lien_nom2 = "SELECT nom_ovipare FROM TABLE ovipare WHERE numero_profil=$var1";

mysql_query($affich2) or die ("Impossible d'afficher l'image");

$var3 = rand(1,$nb_entrees);
$lien_img3 = "SELECT image_petite1 FROM TABLE ovipare WHERE numero_profil=$var1";
$lien_nom3 = "SELECT nom_ovipare FROM TABLE ovipare WHERE numero_profil=$var1";

mysql_query($affich3) or die ("Impossible d'afficher l'image");

$var4 = rand(1,$nb_entrees);
$lien_img4 = "SELECT image_petite1 FROM TABLE ovipare WHERE numero_profil=$var1";
$lien_nom4 = "SELECT nom_ovipare FROM TABLE ovipare WHERE numero_profil=$var1";

mysql_query($affich4) or die ("Impossible d'afficher l'image");

$var5 = rand(1,$nb_entrees);
$lien_img5 = "SELECT image_petite1 FROM TABLE ovipare WHERE numero_profil=$var1";
$lien_nom5 = "SELECT nom_ovipare FROM TABLE ovipare WHERE numero_profil=$var1";

mysql_query($affich5) or die ("Impossible d'afficher l'image");

include('deconnection.inc.php');

?>
et enfin j'ai mes fonctions de connection à la bdd et de déconnection.

Ma question est la suivante: j'ai mes liens vers les images et les liens vers mes noms d'animaux, mais le problème, c'est que je dois inclure le tout dans un tableau avec sur la ligne du haut, mes photos, et sur la ligne du bas, le nom (avec le lien vers la fiche de présentation, qui aura pour paramètre $var, correspondant dans la table ovipare.

Comment dois-je faire pour afficher l'image en question?(et le lien)
dois-je pour chaque case de tableau remettre en code php la fonction echo(mes variables, lien et image) ou echo(mes variables, lien et nom) selon que je doive afficher l'image ou le nom de l'animal? (ce qui voudrait dire que même si on sort de la portion de code contenant les variables de lien et de nom, la page l'a gardé en mémoire)
ou suis-je obligé de mettre tout le code du tableau dans le code php avec donc du echo('<table>etc etc')?

Autre point d'ombre: je n'ai pas trouvé comment je dois faire pour que le lien en question soit une requete vers ma base de donnée demandant d'afficher dans la page le résultat de la requete disant
SELECT fiche_presentation FROM TABLE ovipare WHERE nom_animal=mavariable.
Est-ce juste infaisable ou bien ai-je raté ma solution dans mes recherches?

Merci d'avance!

d0m
Mammouth du PHP | 1141 Messages

24 juil. 2007, 13:54

Comment dois-je faire pour afficher l'image en question?(et le lien)
Tu veux afficher sur la page un seul animal ou plusieurs dans le tableau?

Invité
Invité n'ayant pas de compte PHPfrance

24 juil. 2007, 14:19

en fait je voudrais afficher dans un tableau 4 animaux avec dans la ligne en dessous le nom correspondant, et mettre un lien à la fois sur l'image et sur le nom pour aller (via la bdd) sur la fiche de présentation de l'animal!

merci d'avance de m'aider!


PS: question annexe, lorsque je fais mon appel via include et que je ferme le script en php, est-ce que, si je le rouvre, les variables seront toujours disponibles??? (ici les variables en question sont $var, $lien_img et $lien_nom)
parce que si oui, alors je n'aurai pas à mettre tout mon tableau dans le "echo('----');", et si non, alors tout sera dans le même "echo('----');"

d0m
Mammouth du PHP | 1141 Messages

24 juil. 2007, 15:53

je suis pas sûr de bien comprendre.

déjà pour commencer, tu gagneras de la place dans ton code si tu fais cela de manière générique, avec tes variables dans un tableau :
<?php 
include('connection.inc.php'); 

// on sélectionne la base, en cas d'échec on affiche l'erreur 
mysql_select_db($bddname,$bdd)  or die('Erreur de selection :'.mysql_error()); 

// on lance la requête en utilisant count() pour compter le nombre d'éléments de la table 
$query = mysql_query('SELECT count(*) FROM ovipare') or die(mysql_error()); 

// on stocke le resultat de la requête (le nombre d'entrées) dans la variable $nb_entrees à l'aide de mysql_result() 
$nb_entrees = mysql_result($query,0,0); 

$tab_var = array();
$tab_lien = array();
$tab_lien_nom = array();

for($i=0;$i<5;$i++){
   $tab_var[$i] = rand(1,$nb_entrees);    
}

?>
Ensuite les requetes ça ne se fait pas comme ça, il faut execute les requêtes par des fonctions.
En faisant cela :
$lien1 = "SELECT image_petite1 FROM TABLE ovipare WHERE numero_profil=$var1"; 
tu te contente de mettre dans la variable lien1 la chaine de caractère correspondant à la requete.

il faut l'executer avec mysql_query.

D'ailleurs tu peux faire 1 seule requete pour tous les animaux, ta base t'en remerciera :
$numeros_profils = implode(',',$tab_var) //va créer la chaine "$tab_var[0],$tab_var[1],$tab_var[2],$tab_var[3],$tab_var[4]"

$requete = "SELECT  nom_ovipare,image_petite1
          FROM ovipare
         WHERE numero_profil IN (".$numeros_profils.");";

$resultat_requete = mysql_query($requete) or die ("Impossible de recueillir les donnees"); 
Tu auras là les 5 animaux avec leur nom et leur image.
Il te suffit alors de parcourir le résultat et de ranger dans un tableau les noms et chemins de l'image pour les afficher ensuite dans un tableau html du genre :
<table>
<tr><!-- ligne des images -->
<?php 
foreach($tableau_animaux as $numero_profil => $donnees){
  echo '<td><IMG SRC="'.donnes['adresse_image'].'"></td>'
}
?>
</tr>
<tr><!-- ligne des noms -->
<?php
foreach($tableau_animaux as $numero_profil => $donnees){
  echo '<td><IMG SRC="'.donnes['nom'].'"></td>'
}
?>
</tr>
</table>


Petit nouveau ! | 4 Messages

25 juil. 2007, 09:51

ok je vois quelques grosses erreurs que j'ai fait :s

est-ce que ton foreach(etc.) permet d'afficher tout le tableau? (je ne comprend pas tout le code)

d0m
Mammouth du PHP | 1141 Messages

26 juil. 2007, 08:16

est-ce que ton foreach(etc.) permet d'afficher tout le tableau?
Les instructions dans le foreach vont permettre d'afficher tout le tableau php $tableau_animaux en faisant une cellule de tableau html par élement du tableau php.
Bien sur il va falloir remplir le tableau php par les résultats de la requête. Pour cela va voir le fonctionnement ici : http://fr3.php.net/manual/fr/function.m ... -assoc.php

Petit nouveau ! | 4 Messages

26 juil. 2007, 12:43

ok c'est cool! merci de ton aide! ;) (et du lien)
bon il ne me reste plus qu'une info à trouver:
Autre point d'ombre: je n'ai pas trouvé comment je dois faire pour que le lien en question soit une requete vers ma base de donnée demandant d'afficher dans la page le résultat de la requete disant
SELECT fiche_presentation FROM TABLE ovipare WHERE nom_animal=mavariable.
Est-ce juste infaisable ou bien ai-je raté ma solution dans mes recherches?
(pour l'instant, vu que j'ai changé de configuration, ce n'est pas trop d'actualité mais j'aimerai bien savoir comment on le fait :s)

Voilou! en tout cas merci dOm pour toute ton aide! elle fut précieuse ;)

d0m
Mammouth du PHP | 1141 Messages

26 juil. 2007, 14:02

Ce n'est pas la requête vers ta base qui va afficher quoique ce soit. Il faut bien comprendre que tu vas récupérer un élement de ta base par des requêtes SQL et le traiter ensuite en php.
Après cela dépend du format de tes fiches.

Par exemple pour tes images tu stockes dans la base le chemin de l'image c'est à dire pas vraiment l'image en elle même mais un moyen de la retrouver. Ensuite c'est avec une fonction php que tu récupère le chemin dans les résultats de la requête SQL et que tu affiches enfin avec une balise HTML.

Si tes fiches sont des fichiers (.txt, .doc word, image,...), il faudra faire de même :
- stocker le chemin+nom du fichier dans la base
- récupérer le chemin et nom du fichier dans la base par une requête SQL
- afficher le contenu du fichier selon sa nature (parcours du fichier texte, balise image pour html,...)

Petit nouveau ! | 4 Messages

20 août 2007, 10:12

Après quelques semaines sans internet, me revoilà! et tout ne marche pas :(
je suis pas sûr de bien comprendre.

déjà pour commencer, tu gagneras de la place dans ton code si tu fais cela de manière générique, avec tes variables dans un tableau :
<?php 
include('connection.inc.php'); 

// on sélectionne la base, en cas d'échec on affiche l'erreur 
mysql_select_db($bddname,$bdd)  or die('Erreur de selection :'.mysql_error()); 

// on lance la requête en utilisant count() pour compter le nombre d'éléments de la table 
$query = mysql_query('SELECT count(*) FROM ovipare') or die(mysql_error()); 

// on stocke le resultat de la requête (le nombre d'entrées) dans la variable $nb_entrees à l'aide de mysql_result() 
$nb_entrees = mysql_result($query,0,0); 

$tab_var = array();
$tab_lien = array();
$tab_lien_nom = array();

for($i=0;$i<5;$i++){
   $tab_var[$i] = rand(1,$nb_entrees);    
}

?>
Ensuite les requetes ça ne se fait pas comme ça, il faut execute les requêtes par des fonctions.
En faisant cela :
$lien1 = "SELECT image_petite1 FROM TABLE ovipare WHERE numero_profil=$var1"; 
tu te contente de mettre dans la variable lien1 la chaine de caractère correspondant à la requete.

il faut l'executer avec mysql_query.

D'ailleurs tu peux faire 1 seule requete pour tous les animaux, ta base t'en remerciera :
$numeros_profils = implode(',',$tab_var) //va créer la chaine "$tab_var[0],$tab_var[1],$tab_var[2],$tab_var[3],$tab_var[4]"

$requete = "SELECT  nom_ovipare,image_petite1
          FROM ovipare
         WHERE numero_profil IN (".$numeros_profils.");";

$resultat_requete = mysql_query($requete) or die ("Impossible de recueillir les donnees"); 
Tu auras là les 5 animaux avec leur nom et leur image.
Il te suffit alors de parcourir le résultat et de ranger dans un tableau les noms et chemins de l'image pour les afficher ensuite dans un tableau html du genre :
<table>
<tr><!-- ligne des images -->
<?php 
foreach($tableau_animaux as $numero_profil => $donnees){
  echo '<td><IMG SRC="'.donnes['adresse_image'].'"></td>'
}
?>
</tr>
<tr><!-- ligne des noms -->
<?php
foreach($tableau_animaux as $numero_profil => $donnees){
  echo '<td><IMG SRC="'.donnes['nom'].'"></td>'
}
?>
</tr>
</table>

j'ai essayé cette méthode, mais rien ne s'affiche.par contre j'ai bien le nombre total d'éléments !
comme je ne comprend rien à la ligne du "foreach", je ne sais pas quel peut être la cause :s
est-ce que ça marchait quand tu l'as testé ?



Edit: est-ce que quelqu'un pourrait m'expliquer cette syntaxe?
foreach($tableau_animaux as $numero_profil => $donnees){
  echo '<td><IMG SRC="'.donnes['adresse_image'].'"></td>'
}
?>