Version complète: sur le forum Webmaster Hub : Une histoire de "function"...
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Soshin
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).
CITATION
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 :


Voici ma fonction :
CODE
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
CODE
etatpages(fr);
J'obtiens bien ce que je souhaite.


Le problème vient lorsque j'appelle ceci :
CODE
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 :
CITATION
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.gif
Dan
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
captain_torche
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 wink.gif]
Soshin
#@!£$.... (désolé, mais c'est le premier truc qui sort de ma bouche après avoir lu vos réponses !!! hypocrite.gif )

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....

tongue.gif

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

à bientôt !

[Edit captain_torche : bon, je censure un peu pour la bienséance wink.gif]

Aucun problème.... wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.