Auteur Sujet: Fonction Aléatoire Pour Citations  (Lu 4862 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne DJ Fox

  • Débutant
  • *
  • Messages: 79
    • Association Convivialité en Flandre
Fonction Aléatoire Pour Citations
« le: 30 août 2005 à 23:20:21 »
Je voudrais afficher une citation différente par jour. ;)
Il faudrait faire un fichier qui contient un tableau contenant les citations, et, en fonction du nombre de citations (sûrement calculées avec un foreach), les afficher une par jour. Et quand on arrive au bout du fichier de citation, au jour suivant, ça réaffiche la première ciation du fichier.

Merci d'avance B)  
Martin

Hors ligne Alx

  • Connaisseur
  • ***
  • Messages: 261
    • http://www.alliance-pbem.net
Fonction Aléatoire Pour Citations
« Réponse #1 le: 30 août 2005 à 23:51:30 »
Au hasard, ce serait bien plus simple, sinon, il va falloir que enregistre laquelle tu as fait en dernier...
Webmaster de Alliance-pbem, Jeu de rôle par e-mail dans l'univers Star Wars ™

www.alliance-pbem.net

Hors ligne DJ Fox

  • Débutant
  • *
  • Messages: 79
    • Association Convivialité en Flandre
Fonction Aléatoire Pour Citations
« Réponse #2 le: 31 août 2005 à 09:46:36 »
Oui, mais ce que je ne veux pas, c'est que l'utilisateur découvre toutes les citations qui sont enregistrées en rechargant la page ! <_<
Et si à chaque fois que l'on va sur le site, la citation change....
Il me faut une citation par jour, ou bien par semaine.
Merci
Martin

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Fonction Aléatoire Pour Citations
« Réponse #3 le: 31 août 2005 à 09:50:02 »
Utilise une base de donnée.
avec la fonction ORDER BY RAND(); pour l'aléatoire
et une autre table qui contient la date du changement de citation (si cette date est différente de celle du jour, on charge une autre citation)

Hors ligne DJ Fox

  • Débutant
  • *
  • Messages: 79
    • Association Convivialité en Flandre
Fonction Aléatoire Pour Citations
« Réponse #4 le: 31 août 2005 à 10:47:46 »
Peux-tu m'expliquer la marche à suivre ?
Comment présenter ma base de données, et comment faire la partie du code qui analyse la base de données en affichant la citation ?
Merci B)  
Martin

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Fonction Aléatoire Pour Citations
« Réponse #5 le: 31 août 2005 à 11:17:59 »
(Il faut qu'une base de donnée soit déja créée , si ce n'est pas fait , tu peux la créer dans le panel)


Sous phpmyadmin, en requete SQL :

CREATE TABLE `citations` (
`Id` INT NOT NULL AUTO_INCREMENT ,
`texte` TEXT NOT NULL ,
PRIMARY KEY ( `Id` )
);

CREATE TABLE `datecit` (
  `Id` INT NOT NULL AUTO_INCREMENT ,
  `datecitation` varchar(10) NOT NULL default '',
  `citation` text NOT NULL,
  PRIMARY KEY ( `Id` )
);


INSERT INTO `datecit` VALUES ('1','20050830', '');


------------------------------------
Il faut ensuite remplir ta table citations avec tes citations :)

ensuite, un fichier citation.php :

<?

$host = "........."; // a remplir
$login = "........"; // a remplir : le nom de ta base de donnée , en général , le login + 1 chiffre : ex login1
$pass = "......."; // a remplir : le mot de passe de ta base de donnée
mysql_connect($host,$login,$pass);
mysql_select_db($login);

$datedujour = date("Ymd"); // Pour récup la date du jour
$sql_date = "SELECT datecitation,citation FROM datecit WHERE datecitation='$datedujour'";
$result_date = @mysql_query($sql_date);
$nb_resultat = @mysql_num_rows($result_date); // renvoie 1 si la citation est bien du jour

if ($nb_resultat!="1")
{
  // On met la nouvelle date du jour et la nouvelle citation
$sql_citation = "SELECT texte FROM citations ORDER BY RAND() LIMIT 0,1";
$result_citation = @mysql_query($sql_citation);
$la_citation = @mysql_result($result_citation,0,texte);
$sql_date = "UPDATE datecit SET datecitation='$datedujour' , citation='$la_citation' WHERE Id='1'";
@mysql_query($sql_date);
}
else
{
$la_citation = @mysql_result($result_date,0,'citation');
}

// On affiche :
echo "<p>La citation du jour : $la_citation</p>";

?>


Voilà , en espérant qu'il n'y a pas d'erreurs.
« Modifié: 31 août 2005 à 11:31:30 par Ice »

Hors ligne Taliesin

  • Débutant
  • *
  • Messages: 40
    • http://www.lutececup.org
Fonction Aléatoire Pour Citations
« Réponse #6 le: 31 août 2005 à 12:54:44 »
Sinon tu mets la citation en cache avec la date dans un fichier txt comme ça tu évites une requête. Il te suffit au chargement de ta page de comparer la date courante et la date en cache.
Vulgarisation Informatique, le site de référence en aide informatique (programmation, matériel, logiciels, ...)

Hors ligne Alx

  • Connaisseur
  • ***
  • Messages: 261
    • http://www.alliance-pbem.net
Fonction Aléatoire Pour Citations
« Réponse #7 le: 31 août 2005 à 15:12:40 »
Ouais, mais il devra réécrire le fichier...
Webmaster de Alliance-pbem, Jeu de rôle par e-mail dans l'univers Star Wars ™

www.alliance-pbem.net

Hors ligne Taliesin

  • Débutant
  • *
  • Messages: 40
    • http://www.lutececup.org
Fonction Aléatoire Pour Citations
« Réponse #8 le: 31 août 2005 à 19:06:30 »
Pas du tout. Au pire il faut pointer ou supprimer la ligne et encore si la citation est tirée aléatoirement il n'y a pas besoin de le faire.
« Modifié: 31 août 2005 à 19:23:07 par Taliesin »
Vulgarisation Informatique, le site de référence en aide informatique (programmation, matériel, logiciels, ...)

Hors ligne DJ Fox

  • Débutant
  • *
  • Messages: 79
    • Association Convivialité en Flandre
Fonction Aléatoire Pour Citations
« Réponse #9 le: 31 août 2005 à 21:34:41 »
Merci beaucoup pour ton aide ! :rolleyes: C'est vraiment sympa de donner des coups de main comme ça ! B)
J'ai encore une question : Est-ce que avec ton système, je peux par exemple afficher la citation 18 le 25 décembre 2005 ? Me suffit-il d'insérer un enregistrement dans la table datecit en présisant le numéro de la citation à afficher ce jour là ?
Merci  :)
« Modifié: 31 août 2005 à 21:46:13 par marte59 »
Martin

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Fonction Aléatoire Pour Citations
« Réponse #10 le: 31 août 2005 à 22:52:24 »
Citer
Merci beaucoup pour ton aide ! :rolleyes: C'est vraiment sympa de donner des coups de main comme ça ! B)
J'ai encore une question : Est-ce que avec ton système, je peux par exemple afficher la citation 18 le 25 décembre 2005 ? Me suffit-il d'insérer un enregistrement dans la table datecit en présisant le numéro de la citation à afficher ce jour là ?
Merci  :)
Oui.
Il doit juste suffir d'insérer la citation ... Sauf que dans mon script, je ne passe pas par le numéro de la citation , mais par la citation elle-même.

Hors ligne Alx

  • Connaisseur
  • ***
  • Messages: 261
    • http://www.alliance-pbem.net
Fonction Aléatoire Pour Citations
« Réponse #11 le: 31 août 2005 à 23:38:12 »
Citer
Pas du tout. Au pire il faut pointer ou supprimer la ligne et encore si la citation est tirée aléatoirement il n'y a pas besoin de le faire.

Il devra quand même réécrire le fichier.
Webmaster de Alliance-pbem, Jeu de rôle par e-mail dans l'univers Star Wars ™

www.alliance-pbem.net

Hors ligne Taliesin

  • Débutant
  • *
  • Messages: 40
    • http://www.lutececup.org
Fonction Aléatoire Pour Citations
« Réponse #12 le: 01 septembre 2005 à 00:36:44 »
Pas le fichier citation. Et encore en se démerdant bien avec un seul fichier ça passe et même la modification sera moins gourmande qu'une requête.
Pour ce genre de projet je préfère un fichier en cache plutôt qu'une énième requête SQL.
Après il faut voir si les citations sont mises à jour régulièrement. Il faudrait avouir le cahier des charges précis.
Vulgarisation Informatique, le site de référence en aide informatique (programmation, matériel, logiciels, ...)

Hors ligne Alx

  • Connaisseur
  • ***
  • Messages: 261
    • http://www.alliance-pbem.net
Fonction Aléatoire Pour Citations
« Réponse #13 le: 01 septembre 2005 à 16:48:46 »
Il faudra donc bien réécrire un fichier... Mais je suis d'accord moi aussi j'utilise un système de cache par fichier.
Webmaster de Alliance-pbem, Jeu de rôle par e-mail dans l'univers Star Wars ™

www.alliance-pbem.net

Hors ligne DJ Fox

  • Débutant
  • *
  • Messages: 79
    • Association Convivialité en Flandre
Fonction Aléatoire Pour Citations
« Réponse #14 le: 01 septembre 2005 à 18:39:24 »
Merci de vos conseils ! J'ai créé un fichier cache.
Il n'y a donc qu'une seule requête sur la BDD par jour !
Je vous envoie le code. Dites-moi ce que vous en pensez :
<?
$datedujour = date("Ymd"); // On récupère la date d'aujourd'hui sous la forme yyyymmjj

@include("cit.txt");
if($date_fichier != $datedujour) {
$host = "*******";
$login = "******";
$passw = "******";
mysql_connect($host,$login,$passw);
mysql_select_db($login);

$sql_date = "SELECT datecitation,citation FROM datecit WHERE datecitation='$datedujour'"; // on essaye de trouver une citation qui a pour date la date d'aujourd'hui.
$result_date = @mysql_query($sql_date);
$nb_resultat = @mysql_num_rows($result_date); // renvoie 1 si la citation est bien du jour

if ($nb_resultat!="1") //si aucune citation n'est prévue pour aujourd'hui
{
$la_citation = "Aucune citation n'est prévue pour aujourd'hui !";
}
else
{
$la_citation = @mysql_result($result_date,0,'citation'); //sinon, on affiche la citation du jour.
$fp=fopen("cit.txt","w+");
fputs($fp,"<?\n");
fputs($fp,'$date_fichier = "'.$datedujour.'";'."\n");
fputs($fp,'$citation_fichier = "'.$la_citation.'";'."\n");
fputs($fp,'?>');
fclose($fp);
}
// On affiche :
echo "<font color=\"red\">Ici, la base de données est appelée</font>";
echo "<p>$la_citation</p>";
}
else {
echo "<font color=\"red\">Ici, seul le fichier est appelé</font>";
echo "<p>$citation_fichier</p>";
}
?>
Martin