Affichage aléatoire de texte en fonction d'une date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage aléatoire de texte en fonction d'une date

par zeus » 20 juin 2006, 14:10

Je te donnerais des codes qui marchent pas, des requêtes qui mettent des heures à s'exécuter, t'auras des messages d'erreur en japonnais, le téléphone sonnera quand tu iras sous la douche et tu auras des p'tits crabes blancs quand tu commanderas des moules au restaurant ! ;p
:shock: tout ça avec un code PHP qui ne fonctionne pas :langue:

par Invité » 20 juin 2006, 13:14

Naaaaan !!!! ouiiiiiiiiin :cry:
Je parle du grade hein !
:wink:
Alors je dirais Ryle futur Ganesha :agenouille:

par Ryle » 20 juin 2006, 12:54

:agenouille: merciiiii oh mamouth !
:P
oups
J'me vengerais !! :x

Je te donnerais des codes qui marchent pas, des requêtes qui mettent des heures à s'exécuter, t'auras des messages d'erreur en japonnais, le téléphone sonnera quand tu iras sous la douche et tu auras des p'tits crabes blancs quand tu commanderas des moules au restaurant ! ;p

par coxine » 20 juin 2006, 12:36

rhooo !
Top cette fonction !!
:agenouille: merciiiii oh mamouth !
:P
oups

par Ryle » 20 juin 2006, 12:31

Rhoooo Ryle tu es mamouth !!! :shock:

:afraid:
Non mais hé ?! on reste polie sinon moi j'aide plus hein ! ;)

Pour la conversion du 07 en 7 (et autre nombre du même genre) tu peux utiliser la fonction intval() qui te donne la valeur numérique d'une chaine de caractères :)

par coxine » 20 juin 2006, 12:25

Rhoooo Ryle tu es mamouth !!! :shock:

:afraid:

par coxine » 20 juin 2006, 12:22

Argg j'ai un petit souci mais d'un autre ordre !
Je gère l'affichage de mon calendrier sur la base d'un format de dates $mois=date('n') donc 1,2,3,4,5,6,7,8,9 au lieu de 01,02,03,etc....
Su rl'affichage aléatoire que je suis arrivée à créer, je fais un lien
agenda.php?mois=<?php echo $mois;?>
Or, la mise au format de ma date US au format français, bousille tout.
Dans l'url si le mois correspondant à l'événement est en juillet : je me retrouve avec dans l'url : agenda.php?07 au lieu de agenda.php=7

Comment faire pour faire la mise au format français de la date avec un mois au format ('n') et non ('m') ](*,) #-o

Ché pas si vous suivez, je suis super compliquée dans mes questions ! :langue:
<?php//mise au format français de la date
		$date_us = $row_session['date_debut']; 
		$annee = substr($date_us,0,4); 
		$mois = substr($date_us,5,2); 
		$jour = substr($date_us,8,2); 
		$numJour = date("w", mktime(0, 0, 0, $mois, $jour, $annee));
		$jours = Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
		$jourday = $jours[$numJour];
		$date_fr = $jour ."-". $mois ."-". $annee;
		?>

<?php echo $jourday;?> <?php echo $date_fr;?> 
C'est à cause de ça que le mois change de format.

par coxine » 20 juin 2006, 11:42

youpi pourquoi faire compliqué quand on peut faire simple !!! ](*,) \:D/
Ca fonctionne thank's !! :wink:
Je te revaudrais ça ! :wink:

par Ryle » 20 juin 2006, 11:38

A vot' service ;)

Sinon juste une remarque par rapport au code que j'ai donné, le "where month() and year()" est à revoir sinon tu n'aurais que les derniers mois quelle que soit l'année... faudrait quelque chose du genre "where maDate >= '01/moisEnCours/anneeEnCours'" :)

par coxine » 20 juin 2006, 11:23

Bonjour vous :)

En résumé tu as
- une condition : date supérieure ou égale au mois en cours (WHERE)
- un ordre : n'importe lequel, c'est du hazard (ORDER)
- une restriction : tu n'as besoin que d'un seul élément (LIMIT)

Tu peux ainsi tout faire directement dans ta requête en utilisant par exemple :

Code : Tout sélectionner

SELECT ... FROM ... WHERE MONTH(maDate) >= MONTH(NOW()) // mois supérieur au mois en cours AND YEAR(maDate) >= YEAR(NOW()) // idem pour l'année, vu que les événements de juillet 2001 on s'en cogne... ;) ORDER BY RAND() // trié aléatoirement LIMITE 0, 1 // ne ramene que le premier enregistrement
... ou du moins quelque chose dans le genre ;)
Hello Mister Ryle !! Sympa de me lire et venir m'aider !
J'ai un peu laché le péhachepé ces derniers temps et me revoilou !
Je ne savais pas qu'on peut faire un ORDER BY RAND !
Je vais essayer dans cette voie !
Merci bcp !!!

par coxine » 20 juin 2006, 11:11

Petite précision :
$cours = mysql_num_rows($resulth); 
$hasard = rand(1,$cours);
//Affichage du bandeau
$query = "SELECT * FROM sessions, cours WHERE sessions.ID_cours=cours.ID_cours AND sessions.ID_session = ".$hasard." "; 
Comment es-tu sur que $hasard est contenu dans ID_cours rien qu'a partir d'un num_rows() ?
Tu es (absolument) sur que tes ID seront tous de 1 à X et non (par exemple) 1, 12 ,46 , 55" ? Dans ce dernier cas, le random est inefficace :?
Oui tu as raison, les ID qui sont autoincrémentés ne sont pas des suites fixes...car j'ai du detruire qques enregistrements etc....
Merci pour ta réponse !

par Orni » 20 juin 2006, 11:08

Tiens je ne connaissais pas le ORDER BY RAND(), ça peut être utile un jour :]

par Ryle » 20 juin 2006, 11:05

Bonjour vous :)

En résumé tu as
- une condition : date supérieure ou égale au mois en cours (WHERE)
- un ordre : n'importe lequel, c'est du hazard (ORDER)
- une restriction : tu n'as besoin que d'un seul élément (LIMIT)

Tu peux ainsi tout faire directement dans ta requête en utilisant par exemple :

Code : Tout sélectionner

SELECT ... FROM ... WHERE MONTH(maDate) >= MONTH(NOW()) // mois supérieur au mois en cours AND YEAR(maDate) >= YEAR(NOW()) // idem pour l'année, vu que les événements de juillet 2001 on s'en cogne... ;) ORDER BY RAND() // trié aléatoirement LIMITE 0, 1 // ne ramene que le premier enregistrement
... ou du moins quelque chose dans le genre ;)

par Orni » 20 juin 2006, 11:02

Petite précision :
$cours = mysql_num_rows($resulth); 
$hasard = rand(1,$cours);
//Affichage du bandeau
$query = "SELECT * FROM sessions, cours WHERE sessions.ID_cours=cours.ID_cours AND sessions.ID_session = ".$hasard." "; 
Comment es-tu sur que $hasard est contenu dans ID_cours rien qu'a partir d'un num_rows() ?
Tu es (absolument) sur que tes ID seront tous de 1 à X et non (par exemple) 1, 12 ,46 , 55" ? Dans ce dernier cas, le random est inefficace :?

Affichage aléatoire de texte en fonction d'une date

par coxine » 20 juin 2006, 10:42

Bonjour à tous.
Je voudrais afficher des infos de ma base de façon aléatoire sur la page d'accueil de mon site en fonction d'une date.
Pour ceux qui avaient un peu suivi mes "essais" j'ai créé un agenda, qui affiche les événements du mois en cours.
Sur la page d'accueil, je voudrais afficher les événements enregistrés dans ma base qui sont >= au mois en cours.

J'ai utilisé la fonction rand()
Mais j'ai un souci :
Lorsque je fais la requête dans la base en incluant la variable
$mois = date('n') ;
rien ne s'affiche.
Alors que si j'enlève ce filtre de sélection, les valeurs s'affichent...mais pas comme je le voudrais : c'est à dire, TOUTES les dates à partir du mois en cours....

Je vous donne un bout de mon code, si quelqu'un a une idée pour m'éclairer..... merci ! :wink:
<?php 
	//recherche des sessions existantes //
		 mysql_select_db($database, $connexion);
		$queryh = "SELECT * FROM sessions, cours WHERE sessions.ID_cours=cours.ID_cours" ;
		$resulth = mysql_query($queryh) or die('Erreur SQL : '.mysql_error());
		$cours = mysql_num_rows($resulth);
		$hasard = rand(1,$cours);
		//Affichage du bandeau
		$query = "SELECT * FROM sessions, cours WHERE sessions.ID_cours=cours.ID_cours AND sessions.ID_session = ".$hasard." ";
		// Execute la requete precedente
		$result = mysql_query($query) or die('Erreur SQL : '.mysql_error());
		while ($row_session = mysql_fetch_array($result)){

        // affichage des sessions agenda //

        <?
		}
		?>
Pour l'affichage du mois en cours :
//affichage du calendrier sur le mois en cours //
if(!isset($_GET['mois'])) 
  $mois = date('n') ;
else
  $mois = $_GET['mois'];
//recherche des sessions existantes //
mysql_select_db($database, $connexion); 
$query_session = "SELECT * FROM sessions, cours WHERE sessions.ID_cours=cours.ID_cours AND (MONTH(date_debut) = $mois) 
ORDER BY date_debut, horaires ASC ";
$session = mysql_query($query_session, $connexion) or die(mysql_error());
$row_session = mysql_fetch_assoc($session);
$totalRows_session = mysql_num_rows($session);
Il faut faire une jointure ?
Un order by ?
Limit ?
J'avoue que je suis perplexe :lol: :-k
:oops: