Fonction PHP

Résolu/Fermé
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 - 12 août 2009 à 15:56
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 - 13 août 2009 à 11:02
Bonjour,

J'ai fait une galerie pour mon site de photos. Tout passe bien mais voilà j'ai des photos verticales et des photos horizontales. Je souhaite faire des galeries avec que des photos horizontales et d'autres avec des galeries verticales.
Pour cela, je souhaite que si les photos sont horizontales cela renvoie sur une page avec son css ou sinon que ça renvoie sur la page prévue pour les photos verticales.

J'ai donc fait une fonction.
Elle récupère l'orientation que j'ai choisie. Si l'orientation est horizontale cela renvoie vers le nom de la page sinon ça renvoie le nom de la page verticale.
Voilà mon code :


$categories = mysql_query('SELECT * FROM categorie');
while ($resultats = mysql_fetch_array($categories))
{
$orientation = $resultats['orientation'];
function PageChoisie($orientation)
{
if ($orientation == "horizontale")
{
echo "galerie-par-categorie";
}
else
{
echo "galerie-par-categorie-vert";
}
}

echo "<li><a href='PageChoisie($orientation).php?id_categorie=$resultats[id]'>......


Le reste de ce code est bon.
J'obtiens ce message d'erreur :
Fatal error: Cannot redeclare pagechoisie() (previously declared in .....

Les fonctions en php j'ai lu beaucoup de documentation dessus mais je n'arrive pas à m'en sortir :s

Je vous remercie par avance pour votre aide

A voir également:

8 réponses

Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
13 août 2009 à 09:23
C'est normal que tu n'aies qu'une ligné : ton affichage ne se fait que après que ta boucle aie fini.
Donc l'affichage récupère la dernière valeur de $orientation.

Déplaces ton while comme ça :

<ul class="liste_icones">
<?php
function PageChoisie($orientation)
{
$result = "";
if ($orientation == "horizontale")
{
$result = "galerie-par-categorie";
}
else
{
$result = "galerie-par-categorie-vert";
}
return $result;
}
$resultats = mysql_query('SELECT * FROM categorie ORDER by id LIMIT 0, 18');
while ($donnees = mysql_fetch_array($resultats))
{
$orientation = $donnees['orientation'];
$id = $donnees['id'];
$icone = $donnees['icone'];
$nom = $donnees['nom'];
$PageChoisie = PageChoisie($orientation);
echo "<li><a href='" . $PageChoisie . ".php?id_categorie=$id'><img src='images/galerie/icones/$icone.png' alt='' />
<br /><span class='font-icone'>$nom</span>
</a></li>";

}
?>
</ul>

Ca devrait mieux marcher
1
resalut Messages postés 784 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 21 janvier 2010 55
12 août 2009 à 16:04
ta fonction doit etre declaré hors de la boucle
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
12 août 2009 à 16:04
Ta fonction est dans une boucle, sort la de ta boucle car ça la redéfinit à chaque fois ce qui n'est pas possible.
0
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 9
12 août 2009 à 16:30
Je vous remercie pour votre aide.
J'ai mis la fonction avant le "while" par contre pour lien ça ne m'écrit pas ce qu'il y a dans les "echo" mais le nom de la fonction.

echo "<li><a href='PageChoisie($orientation).php?id_categorie=$resultats[id]'>......


Que dois-je faire pour que ça m'écrive ce qu'il y a dans les "echo" de la fonction ?
0

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

Posez votre question
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
12 août 2009 à 17:25
Modifie ta fonction comme ça :
function PageChoisie($orientation)
$result = "";
{
if ($orientation == "horizontale")
{
$result = "galerie-par-categorie";
}
else
{
$result = "galerie-par-categorie-vert";
}
return $result;
}

Et ta ligne remplace la par :
$pageChoisie = PageChoisie($orientation);
echo "<li><a href='" . $pageChoisie . ".php?id_categorie=$resultats[id]'>......

Ca devrait être bon mais j'ai pas testé ...
0
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 9
13 août 2009 à 01:51
Je te remercie pour ton aide ça m'a fait avancer mais ça n'a pas résolu mes problèmes.
Le "while" me pose problème parce que si il est avant la fonction je n'ai que la dernière catégorie qui s'affiche et pas les autres et si il est après ça ne lit pas la fonction et j'ai retour à la case départ avec soit toutes les photos qui adoptent le style horizontale même quand elles sont verticales on le contraire.
Voilà le dernier code que j'ai :

<ul class="liste_icones">
<?php
$resultats = mysql_query('SELECT * FROM categorie ORDER by id LIMIT 0, 18');
while ($donnees = mysql_fetch_array($resultats))
{
$orientation = $donnees['orientation'];
$id = $donnees['id'];
$icone = $donnees['icone'];
$nom = $donnees['nom'];
}
function PageChoisie($orientation)
{
$result = "";
if ($orientation == "horizontale")
{
$result = "galerie-par-categorie";
}
else
{
$result = "galerie-par-categorie-vert";
}
return $result;
}
$PageChoisie = PageChoisie($orientation);
echo "<li><a href='" . $PageChoisie . ".php?id_categorie=$id'><img src='images/galerie/icones/$icone.png' alt='' />
<br /><span class='font-icone'>$nom</span>
</a></li>";
?>
</ul>

Je vous remercie pour votre aide
0
Delphine97224 Messages postés 99 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 9
13 août 2009 à 09:34
Je te remercie infiniment pour ton aide. C'est bon ça marche parfaitement.

En fait je pensais qu'il fallait impérativement déclarer $orientation avant la fonction. C'est pour cela que je l'ai mis avant la fonction. Jamais je n'ai essayé de déplacer cela.
Merci !
0
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
13 août 2009 à 11:02
De rien c'est très bien si ça fonctionne ! =)
0