accueil du forum - faq - recherche - [s'enregistrer]
HTML, etc...
Twisty Forum


Problèmes techniques :::::: Bouton pour article aléatoire

suivante
1 - 2 -


MessagesAuteurs
puisqu'on m'a conseillé d'ouvrir un nouveau sujet, je choisis cette r
ubrique

Voilà donc un copier-coller de mon message :

Je me lance dans une demande au maître lieux.

Voilà l'exposé des faits :

Sur mon site, les articles ont une URL de ce type :
http://www.sportsmarkette.com/article.php3?id_article=34
Le 34 de la fin correspond au numéro de l'article.

J'aimerais donc savoir si c'ést possible d'avoir un petit bouton s
ur lequel on clique, qui génère un numéro (disons entre 1 e
t 50 dans l'hypothèse ou j'ai 50 articles sur le site) et qui renvoie v
ers l'article correspondant.


Le bouton s'appelerait donc "ARTICLE-O-PIF" et quand on clique
dessus, ben on arrive sur un article tiré au pif.

Ex : on clique sur le bouton-> il tire le numéro 5 au sort et renv
oie donc à l'article : http://www.sportsmarkette.com/article.php3?id_a
rticle=5


C'est possible ça, hein ?

Et petite nuance, certains numéros doivent être exlus du tirage
car ils correspondent à des articles supprimés (ex : 3,1...)

C'est toujours possible ???
Le 16-01-04 à 08h36
prince ewan
qui?
mail site
Merci Prince, d'avoir réfait un sujet

Désolé pour les travaux constants sur le forum depuis hier soir!

Pour ton problème, c'est simple à résoudre avec un nombre aléatoire entre les 2 extrêmes que tu cherches;

tu le génères en php avec les conditions que tu veux ... pis tu cliques sur le bouton!

je te mets ça ce soir, si je rentre avant la nuit


PS: tu pourrais donner un titre plus précis, ste plaît, en éditant le message?
Le 16-01-04 à 12h55
fred
qui?
mail site
Je vois que monsieur tient à ce que son forum soit bien tenu !!!!

Je souscris entièrement à cette ambition, c'est pourquoi je m'exécute sur le champs



(j'me comprends)

Le 16-01-04 à 16h12
prince ewan
qui?
mail site

// tu récupères le nombre de lignes dans la base
$nbr=mysql_query("select count(*) from table");
$nbr2=mysql_fetch_array($nbr);

// tu génères une valeur aléatoire entre 0 et "le nombre de lignes"
$hasard=mt_rand(0,$nbr2[0]-1);

// tu sélectionnes l'id la table correspondant à la valeur
$ligne=mysql_query("select id_article from table order by id limit $hasard,1");
$ligne2=mysql_fetch_array($ligne);

// tu récupères la valeur, que tu peux ensuite insérer en fin d'url
<input type="button" value="au hasard" onclick="location.href='monsite.com?id_article=<?php print $ligne2[0];?>'">


à tester...


[Message édité Le 16-01-04 à 21h41]
Le 16-01-04 à 18h35
fred
qui?
mail site
Merci beaucoup... je vais voir ce qu'un neuneu comme moi arrive à faire avec ça.

Merci aussi pour l'avatar.

Euh, sinon, je vois que j'ai le grand honneur d'avoir été accepté sur ta page de liens. Mais le lien est mort justement : mon adresse est http://www.sportsmarkette.com



Le 16-01-04 à 19h21
prince ewan
qui?
mail site
Alors, à mon avis, ce que tu me proposes est un poil trop complexe. Car il y a un problème.

Le nombre de lignes de ma table ne correspond pas à l'ID de mon dernier article. Actuellement, le dernier article publié est le numéro 34. Or il n'y a que 30 lignes dans ma table. Car certains articles ont été supprimés du site...

Il me faudrait en fait quelque chose de plus manuel :

D'abord un script choisit un nombre au pif entre 1 et 34, à l'exception des numéros 1, 3 et 12.

Puis ensuite, on applique ce résultat à la dernière ligne que tu as écrite :

<input type="button" value="au hasard" onclick="location.href='monsite.com?id_article=<?php print $ligne2[0];?>'">

Je changerai manuellement à chaque nouvel article le numéro le plus haut à tirer.

Tu vois ce que je veux dire ?

(j'essaie de trouver quelque-chose moi même, mais je suis aussi doué pour ça que pour le tricot)

[Message édité Le 16-01-04 à 20h38]
Le 16-01-04 à 19h36
prince ewan
qui?
mail site
J'ai trouvé ça en Javascript :

<Script language="javascript">
nb=5;
document.write(Math.floor(Ma
th.random() * 34)+1);
</Script>

qui fait la première partie du travail (générer le nombre entre 1 et 34 (sauf qu'il n'exclut pas les numéros 1,3 et 12)

Ensuite, comment mettre le numéro qu'il a tiré à la fin mon URL :

http://www.sportsmarkette.com/article.php3?id_article=XX
Le 16-01-04 à 19h54
prince ewan
qui?
mail site
salut!

et tu as testé le script php?

(désolé pour les nuisances sur le forum)
Le 16-01-04 à 21h14
fred
qui?
mail site
Navré j'étais distrait...

tu peux reprendre le script précédent (édité) et changer cette partie:


// tu génères une valeur aléatoire entre 0 et "le nombre de lignes"
$hasard=mt_rand(0,$nbr2[0]-1);

// tu sélectionnes l'id de la table correspondant à la valeur
$ligne=mysql_query("select id_article from table order by id limit $hasard,1");
$ligne2=mysql_fetch_array($ligne);


ça marche!
Le 16-01-04 à 21h43
fred
qui?
mail site
Ben euh, à vrai dire, je comprend pas bien comment m'en servir...

La table ou sont mes articles est celle-ci :

princeewan_sport - table spip_articles

Il y a 30 lignes.

Comment je l'insère dans ton script ?

Et ensuite, je colle le tout dans une page en .php et c'est tout ???

(pardon de toutes ces questions au ras des paquerettes, mais c'est mon altitude !!! )
Le 16-01-04 à 21h44
prince ewan
qui?
mail site
tu remplaces "table" par "princeewan_sport - table spip_articles" (mais entre nous, vérifie que c'est le vrai nom de ta table ) aux endroits où ça apparaît.

Tu insères le script un peu où tu veux du moment que ça se trouve avant le bouton et que l'ensemble est entre des balises <?php ... ?>
Le 16-01-04 à 21h49
fred
qui?
mail site
(et c'est même plus rapide que javascript: 5 lignes pour tout le boulot!) Le 16-01-04 à 21h52
fred
qui?
mail site
Alors, voilà ce que j'ai mis :


<?php
// tu récupères le nombre de lignes dans la base
$nbr=mysql_query("select count(*) from princeewan_sport - table spip_articles");
$nbr2=mysql_fetch_array($nbr);

// tu génères une valeur aléatoire entre 0 et "le nombre de lignes"
$hasard=mt_rand(0,$nbr2[0]-1);

// tu sélectionnes l'id la table correspondant à la valeur
$ligne=mysql_query("select id_article from princeewan_sport - table spip_articles order by id limit $hasard,1");
$ligne2=mysql_fetch_array($ligne);

// tu récupères la valeur, que tu peux ensuite insérer en fin d'url
<input type="button" value="au hasard" onclick="location.href='http://www.sportsmarkette.com/article.php3?id_art
icle=<?php print $ligne2[0];?>'"> ?>




Et il me dit (ce gros méchant) :

Vous avez une erreur qq part dans votre code ou vous utilisez une fonction non valide sur notre serveur
Parse error: parse error, unexpected '<' in /data/village/princeewan/sportsmarkette_com/www/testopif.php on line 28

La ligne 28, c'est la dernière ligne (celle quand je récupère l'ID pour l'insérer en fin d'URL)...
¨
Pourtant, ma base de donnée s'appelle bien : princeewan_sport et la table ou sont les articles : table spip_articles

(chuis vraiment pas doué !!!
Le 16-01-04 à 22h28
prince ewan
qui?
mail site
ok

alors, 2 choses:

==> dans ta requête (mysql_query), tu donnes seulement le nom de la table! pas le nom de la base

==> tu as un pbm à la fin du code parce que tu as placé une balise fermante >: or, si dans ton document, le code php continue après, ce n'est pas logique!

bref, regarde où commence le code php dans ce qui est déjà écrit et installe le script juste avant la balise de fin (>)


tiens-moi au courant
Le 17-01-04 à 09h42
fred
qui?
mail site
Pour le nom de la table, je n'ai mis que le nom de la table, sans la base. Mais comment il sait dans quelel table chercher ? (je sais, c'est pas commun, mais j'ai plusieurs bases installées).

Pour la balise de fin : j'ai fait le test avec une page toute vierge ou y'a rien que le script dessus entouré des 2 balises, et beh ça fait toujours pareil...

Le 18-01-04 à 22h33
prince ewan
qui?
mail site

suivante
1 - 2 -

© Javatwist 2002 - JavaTwisting people