RE: [Spip] Requête à la base de données dans article.php3

Salut,

A priori faire une boucle dans le squelettes c'est trop tard, vu que je veux
pouvoir déterminer mon squelette en fonction de la rubrique dans mon fichier
article.php3

A moins qu'une boucle soit possible directement dans mon fichier php ?

Au sinon, je cherches toujours la bonne requête à la DB mais j'y arrives
toujours pas.

J'en suis là :

mysql_connect("localhost","xxx","xxx")
or die ("Connection Impossible");

mysql_select_db("xx");

$requete = "SELECT id_rubrique FROM spip_articles WHERE
id_article='$id_article'";
$resultat = mysql_query( $requete )
or die("Requête Impossible");

$fond = mysql_fetch_row($resultat);

A+
Denis

A l'intérieur de la boucle principale de l'article, n'y aurait-il pas la
balise #ID_RUBRIQUE qui devrait faire l'affaire, non?

Sinon il faut faire une petite boucle sur la rubrique :

<BOUCLE_rubtest (RUBRIQUES) {id_rubrique}>
if (#ID_RUBRIQUE == 7) $fond = "test";
if (#ID_RUBRIQUE == 24) $fond = "test2";
</BOUCLE_rubtest>
echo $fond;
</B_rubtest>
echo $fondpardefaut;
<//B_rubtest>

Cordialement,....
..............Thierry,

mail to: thierry66ch@gmx.net

Le 13 Aug 2002 à 20:16,
Denis - (denlistes@altern.org) a ecrit :

---------------------- Debut du message original ----------------------

Bonjour

J'ai un bessoin impératif de pouvoir sélection le fond dans ma page
article.php3 pour faire fonctionner la recherche, les nouveautés et la
gestion de "voir en ligne" dans l'interface privée.

Je suis en train de faire des tests pour essayer de récupérer la valeur de
la rubrique et d'y associer un fond mais çà ne fonctionne pas.

Si quelqu'un peut me filer des conseils, ce serait sympa.

A+
Denis

<?

@mysql_connect("localhost","xxx","xxx");
@mysql_select_db("xxx");

$requete = "SELECT id_rubrique FROM spip_articles WHERE
id_article='$id_article'";
$resultat = mysql_query( $requete );

if ($resultat == 7) $fond = "test";
if ($resultat == 24) $fond = "test2";

echo $fond;

?>

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.uzine.net/spip

---------------------- Fin du message original ----------------------

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.uzine.net/spip

Salut,

Au càs où cà interresserait quelqu'un, voici comment j'ai procédé pour avoir
un affichage de squelettes à la carte en fonction de la rubrique:

Dans mon site, je n'utilise aucun squelettes par défaut, tous sont codées à
la fois en fonction de la langue (article_nl, article_fr, article_en ...), à
la fois en fonction du type de contenu (projets_nl projets_fr,
projets_en...)

Tout fonctionne parfaitement avec des appels fait à l'url désiré genre
article_nl.php3?ID#ARTICLE ...

Mais ce "détournement" de spip posait un problème majeur dans les fonctions
"Voir en ligne", "Recherche" et "Les Nouveautés".

Du coup, j'ai modifié le fichier article.php3, qui est appellé par ces
fonctions, comme suit:

J'ai mis le cache à 0 en me disant que sinon, çà poserait peut-être
problème...

<?

require ("db.php3");

$fond = $fond;

$delais = 0 ;

include ("inc-public.php3");

?>

Le fichier db.php3:

<?PHP
mysql_connect("localhost","xxx","xxx")
or die ("Pas de connection possible");

mysql_select_db("xxx");

$requete = "SELECT id_rubrique FROM spip_articles WHERE
id_article='$id_article'";
$resultat = mysql_query( $requete )
or die("Recherche impossible");

$row= mysql_fetch_array($resultat,MYSQL_ASSOC);

switch ($row["id_rubrique"])
{
  case 18:
    $fond = "nomdusquellete";
    break;
  case 20:
    $fond = "nomdusquellete";
    break;
  case 27:
    $fond = "nomdusquellete";
    break;
}

?>

A+
Denis

Du coup, j'ai modifié le fichier article.php3, qui est appellé par ces
fonctions, comme suit:

J'ai mis le cache à 0 en me disant que sinon, çà poserait peut-être
problème...

<?
require ("db.php3");

Ouh là ! En faisant ça tu as une connexion obligatoire à la base à chaque
requête, et tu perds plein d'avantages de spip ; La bonne méthode à mon avis
est plutôt de jouer avec inc-urls.php3 : regarde là pour un exemple :

    SPIP-Contrib - Toutes les contributions à SPIP

Le principe est que la fonction recuperer_parametres_url($fond, $url) {
est capable de modifier le contexte (id_article, id_mot...) en fonction de
l'url qui lui est passé ; cela uniquement au moment du calcul de la page.

La fonction genere_url_article() fait la chose inverse : en fonction de la
langue de l'article elle retournera article_en.php3?id_article=xx ou
article_nl.php3?id_article=yy

-- Fil

Hello,

Mais ce "détournement" de spip posait un problème majeur dans les fonctions
"Voir en ligne", "Recherche" et "Les Nouveautés".

Aye aye aye, pas besoin de se donner tant de mal.

Si tu veux faire un squelette article spécifique aux articles de
la rubrique 23 (et ses sous-rubriques), il suffit de l'appeler
article-23.html si le squelette de base est article.html (si
le squelette de base est article-nl.html, alors ça sera
article-nl-23.html, etc.). SPIP sélectionnera alors automatiquement
le bon squelette en fonction de la rubrique contenant l'article
appelé, sans que tu aies besoin de te casser la tête pour
sélectionner le squelette à la main :wink:

Amicalement

Antoine.

Du coup, j'ai modifié le fichier article.php3, qui est appellé par ces
fonctions, comme suit:

J'ai mis le cache à 0 en me disant que sinon, çà poserait peut-être
problème...

<?
require ("db.php3");

Ouh là ! En faisant ça tu as une connexion obligatoire à la base à chaque
requête,

-->>Non, le cache fonctionne pour 99% du site. Juste les 3 fonctions qui
appellent par défaut article.php3 fonctionne sans cache donc avec ne requête
à la DB.

et tu perds plein d'avantages de spip

-->>A priori, juste le cahce pour article.php3...

; La bonne méthode à mon avis
est plutôt de jouer avec inc-urls.php3 : regarde là pour un exemple :

    SPIP-Contrib - Toutes les contributions à SPIP

Le principe est que la fonction recuperer_parametres_url($fond, $url) {
est capable de modifier le contexte (id_article, id_mot...) en fonction de
l'url qui lui est passé ; cela uniquement au moment du calcul de la page.

La fonction genere_url_article() fait la chose inverse : en fonction de la
langue de l'article elle retournera article_en.php3?id_article=xx ou
article_nl.php3?id_article=yy

-->>Oui, c'est pas très clair pour moi, j'arrives pas trop à voir en quoi
c'est mieux ....

A+
Denis

-- Fil

Salut

Cà se fait automatiquement ?

Prenons un article (99) contenue dans la rubrique (23)

Donc si dans article.php3 la variable fond est "article" et que le squelette
article23.html existe, c'est automatiquement qu'un appel à
article.php3?id_article=99 se fera avec le squelette article23 ?

Si c'est çà, là çà devient génial!

A+
Denis

Hello,

Mais ce "détournement" de spip posait un problème majeur dans les

fonctions

"Voir en ligne", "Recherche" et "Les Nouveautés".

Aye aye aye, pas besoin de se donner tant de mal.

Si tu veux faire un squelette article spécifique aux articles de
la rubrique 23 (et ses sous-rubriques), il suffit de l'appeler
article-23.html si le squelette de base est article.html (si
le squelette de base est article-nl.html, alors ça sera
article-nl-23.html, etc.). SPIP sélectionnera alors automatiquement
le bon squelette en fonction de la rubrique contenant l'article
appelé, sans que tu aies besoin de te casser la tête pour
sélectionner le squelette à la main :wink:

Amicalement

Antoine.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.uzine.net/spip

-->>Oui, c'est pas très clair pour moi, j'arrives pas trop à voir en quoi
c'est mieux ....

Je crois que je n'avais pas bien compris la question, en fait. Désolé. La
réponse d'Antoine est sûrement la bonne.

-- Fil

Denis - wrote:

Salut

Cà se fait automatiquement ?

Prenons un article (99) contenue dans la rubrique (23)

Donc si dans article.php3 la variable fond est "article" et que le squelette
article23.html existe, c'est automatiquement qu'un appel à
article.php3?id_article=99 se fera avec le squelette article23 ?

Oui ! Plus exactement, c'est article-23.html (ne pas oublier le tiret).

a+

Antoine.

@ Denis - <denlistes@altern.org> :

Donc si dans article.php3 la variable fond est "article" et que le squelette
article23.html existe, c'est automatiquement qu'un appel à
article.php3?id_article=99 se fera avec le squelette article23 ?

http://www.uzine.net/article877.html
Section : Une interface différente selon les rubriques

-- Fil