Aller au contenu

Une histoire de "function"...


Sujets conseillés

Posté (modifié)

Salut à tout le monde !

c'est avec joie que j'ai parcouru ce forum, et c'est avec la même joie que je poste mon premier sujet !

Je suis en train de créer une page d'administration pouvant gérer le statut online/offline des différentes pages de mon site.

Mon site sera en 5 langues.

J'ai choisi de stocker les informations de chaque langue dans des tables séparées : info_fr, info_en, info_de, info_nl et info_it.

Dans chaque table, j'ai stocké le nom de mes pages, et leurs états respectifs (1=online ou 0=offline).

par exemple, pour ma table info_fr du type page ---> etat :

page1 ---> 1

page2 ---> 0

page3 ---> 1

etc...

J'ai donc créé une fonction qui importe les états des pages, qui affiche les résultats, et coche un radio, en fonction de ce qu'il a trouvé.

Vous comprendrez mieux avec l'image suivante :

probleme_admin.jpg

Voici ma fonction :

function etatpages($lang) 
{
$req = "SELECT page, etat FROM info_".$lang;
$result = mysql_query($req) or die ("impossible d'importer l'état des pages de la table info_$lang");

$i=0;
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{

$display = $row[etat];
if ($i == 0)
{
$page = "PAGE 1";
$name = "page1".$lang;
}
elseif ($i == 1)
{
$page = "PAGE2";
$name = "page2".$lang;
}
elseif ($i == 2)
{
$page = "PAGE3";
$name = "page3".$lang;
}

?>

<b><? echo $page; ?> : </B><INPUT TYPE="radio" NAME="<? echo $name; ?>" value="0"<? if ($display == 0) echo " CHECKED"; ?>><FONT STYLE="color:red">hors-ligne</FONT>
<INPUT TYPE="radio" NAME="<? echo $name; ?>" VALUE="1"<? if ($display == 1) echo " CHECKED"; ?>><FONT STYLE="color:green">en-ligne</FONT><BR>

<?
$i++;
};
mysql_close();
return;
}

Finalement, quand j'appelle

etatpages(fr);

J'obtiens bien ce que je souhaite.

Le problème vient lorsque j'appelle ceci :

etatpages(fr);
echo '<BR>';
etatpages(en);
echo '<BR>';
etatpages(de);
echo '<BR>';
etatpages(nl);
echo '<BR>';
etatpages(it;

La première focntion s'affiche correctement, et puis j'obtiens l'erreur suivante :

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home.8/*******/www/administration.php on line 8

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home.8/*****/www/administration.php on line 8

impossible d'importer l'état des pages de la table info_en

Quelqu'un a-t-il la solution à mon problème ????

Un grand merci d'avance :whistling:

Modifié par captain_torche
Posté

Lorsque tu fais appel aux fonctions mysql dans ta fonction etatpages(), tu exécutes un mysql_close() au premier passage.

Donc tu ne peux plus accéder à la base de données ensuite.

Tu peux retirer le mysql_close() de ta fonction et le mettre à la fin de tes invocations de celle-ci... ou laisser mysql effectuer de lui-même une fermeture en fin de script (c'est automatique dans ce cas)

Dan

Posté

Il se passe juste que ta fonction ferme la connexion à MySQL (avec l'appel à mysql_close() en fin de fonction), mais n'ouvre pas de connexion en début de fonction.

Ce qui fait que ta connexion à la base est coupée en fin de fonction, mais n'est pas rétablie pour le prochain appel à la fonction.

[Edit : Dan a été plus rapide ;)]

Posté

#@!£$.... (désolé, mais c'est le premier truc qui sort de ma bouche après avoir lu vos réponses !!! :hypocrite: )

Je galère dessus depuis quelques jours, je parcours le web, les forums, je prends le temps de déposer un beau topic pour une erreur aussi bête ???

Et bien oui, mesdames et messieurs, celà fonctionne très bien maintenant....

:P

Allez, un très grand merci à vous deux,

à bientôt !

[Edit captain_torche : bon, je censure un peu pour la bienséance ;)]

Aucun problème.... ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...