ma question d’il y a une semaine n’a pas suscité beaucoup d’intérêt…pour l’instant j’ai réglé le problème (voir en bas) en n’utilisant pas le cache, ce qui n’est pas une solution idéale, je cherche toujours des solutions plus jolies. Je repose donc ma question d’une manière plus large :
Comment faire des requêtes MySQL sur la base SPIP à l’intérieur d’un squelette ?
Merci d’avance.
----- Original Message ----- From:bcnl To:spip@rezo.net Sent: Tuesday, September 17, 2002 7:21 PM Subject: requête SQL dans squellette
j’ai intégré dans le squelette ARTICLE une requête MySQL me permettant d’intégrer un système de notation des articles en utilisant les mots-clés dans les forums comme cela a été évoqué dans cette liste.
<?
$article="#ID_ARTICLE";
$sql_query="SELECT AVG(spip_mots_forum.id_mot) FROM spip_mots_forum INNER JOIN spip_forum ON spip_mots_forum.id_forum=spip_forum.id_forum WHERE ((spip_forum.id_article=$article) AND (spip_mots_forum.id_mot BETWEEN 1 AND 4))";
$result=mysql_query($sql_query);
if ($result)
{$row=mysql_fetch_array($result);
$note=round($row[0]);
}
else echo "erreur";
?>
Ce code en PHP marchait parfaitement sur le 1er site hébérgé sur multimania. Je viens de le transférer sur levillage.org, et j’obtiens maintenant un message d’erreur quand la page n’est pas recalculée (quand je fais recalculer la page, ça refonctionne) :
Vous avez une erreur qq part dans votre code ou vous utilisez une fonction non valide sur notre serveur Warning: Accès refusé pour l’utilisateur: ‹ nobody@localhost › (mot de passe: NON) in /data/village/essai_levillage_org/www/CACHE/d/article-3.5c15a9 on line 33
Comment faire pour que ça fonctionne correctement ? ne faut-il pas mieux mettre le bout de code ailleurs que dans le squelette en HTML ? Comment faire pour exécuter le code uniquement quand la page est recalculée ? Faut-il que je me connecte à la base ?
Ne connaissant rien à PHP, j’attends des conseils ou des idées ! Merci d’avance
merci pour ta réponse qui répond effectivement à ma question mais pas à mon problème : sur mutlimania, j’intègre la requête dans le squelette sans avoir besoin de me connecter à la base (d’ailleurs en me connectant, ça plante) ça marche toujours. Sur levillage.org, la requête renvoie une erreur quand la page n’est pas recalculée, dans ce cas il doit effectivement y avoir besoin de se connecter à la base SPIP, toutefois comment savoir si la page est recalculée ou pas…voilà le problème que j’avais exposé dans mon premier message et que je n’ai pour l’instant réussi à ressoudre qu’en désactivant le cache !
----- Original Message ----- From:S.Calas To:bcnl Sent: Tuesday, September 24, 2002 9:34 PM Subject: Re: [Spip] requête SQL dans squellette
Bonsoir, bon d’abord moi aussi je suis débutante niveau zéro en PHP/SQL mais pour se connecter à une base voici les instruction qu’il faut écrire :
Tu rajoutes $id dans $result=mysql_query($sql_query);
comme ca
$result=mysql_query($sql_query,$id);
Là ce sont avec des valeurs adaptée à ma situation je suis en local sous Easyphp, il faut voir pour toi quels sont dans le mysql connect ,le nom du serveur ton login, et le password, ceci dit au niveau de la sécurité je crois que c’est pas recomandé de mettre comme ca directement ces renseignements confidentiels, y a des trucs a faire pour éviter le truc. Voila c’est tout ce que je sais mais si ca peut t’aider
S
----- Original Message ----- From:bcnl To:spip@rezo.net Sent: Tuesday, September 24, 2002 8:57 PM Subject: [Spip] requête SQL dans squellette
bonjour,
ma question d’il y a une semaine n’a pas suscité beaucoup d’intérêt…pour l’instant j’ai réglé le problème (voir en bas) en n’utilisant pas le cache, ce qui n’est pas une solution idéale, je cherche toujours des solutions plus jolies. Je repose donc ma question d’une manière plus large :
Comment faire des requêtes MySQL sur la base SPIP à l’intérieur d’un squelette ?
Merci d’avance.
----- Original Message ----- From:bcnl To:spip@rezo.net Sent: Tuesday, September 17, 2002 7:21 PM Subject: requête SQL dans squellette
j’ai intégré dans le squelette ARTICLE une requête MySQL me permettant d’intégrer un système de notation des articles en utilisant les mots-clés dans les forums comme cela a été évoqué dans cette liste.
<?
$article="#ID_ARTICLE";
$sql_query="SELECT AVG(spip_mots_forum.id_mot) FROM spip_mots_forum INNER JOIN spip_forum ON spip_mots_forum.id_forum=spip_forum.id_forum WHERE ((spip_forum.id_article=$article) AND (spip_mots_forum.id_mot BETWEEN 1 AND 4))";
$result=mysql_query($sql_query);
if ($result)
{$row=mysql_fetch_array($result);
$note=round($row[0]);
}
else echo "erreur";
?>
Ce code en PHP marchait parfaitement sur le 1er site hébérgé sur multimania. Je viens de le transférer sur levillage.org, et j’obtiens maintenant un message d’erreur quand la page n’est pas recalculée (quand je fais recalculer la page, ça refonctionne) :
Vous avez une erreur qq part dans votre code ou vous utilisez une fonction non valide sur notre serveur Warning: Accès refusé pour l’utilisateur: ‹ nobody@localhost › (mot de passe: NON) in /data/village/essai_levillage_org/www/CACHE/d/article-3.5c15a9 on line 33
Comment faire pour que ça fonctionne correctement ? ne faut-il pas mieux mettre le bout de code ailleurs que dans le squelette en HTML ? Comment faire pour exécuter le code uniquement quand la page est recalculée ? Faut-il que je me connecte à la base ?
Ne connaissant rien à PHP, j’attends des conseils ou des idées ! Merci d’avance
Bonsoir, bon d'abord moi aussi je suis débutante niveau zéro en PHP/SQL
mais pour se connecter à une base voici les instruction qu'il faut
écrire : id=mysql_connect("localhost","root","");
Pour se connecter proprement à la base, la recette spipesque est, que ce
soit à l'intérieur d'un script ou d'un squelette :
<?php
include_ecrire("inc_connect.php3");
if ($db_ok) {
// a partir d'ici appeler la base normalement, en utilisant
// spip_query à la place de mysql_query (pour compatibilité
// avec les bases préfixées par spop_...)
$result = spip_query ("select * from ..."); // faire sa requete
while ($row = mysql_fetch_array($result)) {
echo $row['login']; // par exemple
}
} else {
echo "La base de données est naze, pas de bol";
}
?>
merci pour la recette spipesque, c'est effectivement beaucoup plus propre !
----- Original Message -----
From: "Fil" <fil@rezo.net>
To: <spip@rezo.net>
Sent: Tuesday, September 24, 2002 10:11 PM
Subject: Re: [Spip] requête SQL dans squellette
> Bonsoir, bon d'abord moi aussi je suis débutante niveau zéro en
PHP/SQL
> mais pour se connecter à une base voici les instruction qu'il faut
> écrire : id=mysql_connect("localhost","root","");
Pour se connecter proprement à la base, la recette spipesque est, que ce
soit à l'intérieur d'un script ou d'un squelette :
<?php
include_ecrire("inc_connect.php3");
if ($db_ok) {
// a partir d'ici appeler la base normalement, en utilisant
// spip_query à la place de mysql_query (pour compatibilité
// avec les bases préfixées par spop_...)
$result = spip_query ("select * from ..."); // faire sa requete
while ($row = mysql_fetch_array($result)) {
echo $row['login']; // par exemple
}
} else {
echo "La base de données est naze, pas de bol";
}
?>