Cherche script php pour affichage aléatoire

Résolu/Fermé
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 - 3 mars 2009 à 14:51
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 - 4 mars 2009 à 13:24
Bonjour,

je suis à la recherche d'un scrip php pour afficher aléatoirement sur ma page d'accueil un petit texte.
Et je ne suis pas assez douée en php pour le faire moi même, mais je m'y met, enfin j'essaye ;o))

j'ai trouvé des scripts qui correspondrait à peu près, c'est à dire qui affiche une ligne aléatoirement d'un fichier texte, mais moi ce que je voudrais c'est afficher des paragraphe en fait, donc qui font plusieurs lignes (avec renvoi à la ligne).

Idéalement d'avoir aussi, une petite zone d'admin qui permettrais de rajouter simplement des textes sans avoir à éditer un fichier (texte ou autre si on pars sur cette solution) pour le remplir.

est ce que ça existe ? Ou sinon est ce compliqué à faire (surtout la partie admin) ?

Merci
A voir également:

4 réponses

zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
3 mars 2009 à 19:03
Salut, voila un script que j'utilise régulièrement :
Pour cet exemple, il faut créer une table images avec id | description | url


formulaire.html
<form action="reception.php" enctype="multipart/form-data" method="post">
	<input type="file" name="image"/>
	<textarea name="description"></textarea>
	<input type="submit"/>
</form>


reception.php
<?php
	$nom_image = $_FILES['image']['name'];
	$destination = "dossier_image/".$nom_image;
	if (move_uploaded_file($_FILES['image']['tmp_name'], $destination)) {
		if ( mysql_query('INSERT INTO images VALUES("","'.$_POST['description'].'","'.$destination.'")')) {
			echo "Image envoyée avec succès";
		}
	}
	else {
		echo "Erreur lors de l'envoi de l'image";
	}	
?>

Ne pas oublié de mettre le chmod du dossier_image en 777

affichage.php
<?php
	$sql = mysql_query('SELECT * FROM images ORDER BY rand()');
	if ($data = mysql_fetch_array($sql)) {
		echo '<img src="'.$data['url'].'"/><br/>';
		echo $data['description'];
	}
?>


Edit : j'avais pas vu de c'était juste pour du texte, mais le principe reste le même pour l'inscription dans la bdd et l'affichage.
1
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 mars 2009 à 22:50
Euh... Aaaaaah ! Pourquoi mettre le chmod de dossier images en 777 ? Le 777 ne doit être utilisé que dans les cas où c'est indispensable, et dans ce cas là, seul PHP aura besoin d'accéder en écriture au dossier... Il suffit de lui en donner la propriété et a priori ça suffit. Pour les autres, un accès en lecture sera amplement suffisant (pour que le serveur web puisse aller chercher les images).
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199 > pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
3 mars 2009 à 23:04
Ba la le 777 c'est hors sujet vu qu'il n'y a pas d'upload d'image. Mais sur certains serveur j'ai déjà été emmerdé a cause de ca. Donc que l'upload ne fonctionne pas, je met en 777.
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
3 mars 2009 à 23:09
Je sais que c'est plus dans le sujet, pour ça que j'ai re-répondu au-dessus ^^

Pour le 777, désolé, mais ça fait trop pas propre, sûr qu'il y a moyen de faire autrement sans laisser l'accès à tout le monde : suffit de voir qui a besoin d'accéder au répertoire, les mettre dans un groupe et donner à ce groupe la propriété (et les droits) nécessaires, rien de plus.

En même temps, les images sont rarement des ressources critiques mais c'est pour le principe : 777 c'est (99% du temps) le MAL !
0
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 10 > pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
3 mars 2009 à 23:07
lol de toutes façons, je ne peux utiliser que le 755 avec mon hébergeur (777 il veut pas) ;o))

Merci pour vos réponses.

Je vais utiliser une bdd quand même, maintenant que je l'ai faite.
je viens de la créer, j'ai mis 2 champs, id et texte.

et là je suis sur le site du zéro pour avancer pour le reste. ;o))

J'ai compris le principe, il ne me reste plus qu'à appliquer.
Merci pour le modèle de code, je vais m'en inspirer un peu et essayer de le comprendre.

Merci psychopate pour les explications.

je viendrais appeler au secours si je m'en sors pas ;o))

0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010
3 mars 2009 à 23:18
Honnêtement, si tu ne projettes pas d'utiliser la BDD pour autre chose, envisage une autre technique parce que la, c'est un peu comme utiliser un bulldozer pour écraser une mouche : lourd, lent, pas forcément efficace ^^.
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 mars 2009 à 14:55
Tu peux faire ça avec une base de données (id en auto-increment, texte) sur laquelle tu fais un tirage aléatoire. L'interface d'admin constitue simplement en un formulaire dans lequel tu saisis ton texte et qui l'ajoute à la BD.
0
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 10
3 mars 2009 à 18:34
merci pour ta réponse.

Donc, il faut que je crée une base de données et que je trouve le moyen d'y insérer tous mes textes.

après ça se complique, il faut un code qui va chercher un des textes de façons aléatoire pour l'afficher.

et pour terminer, un formulaire avec un code qui va récupérer ce que je vais y écrire pour aller l'insérer dans la bdd.
euh...non, le formulaire d'abord pour remplir la base de données... ;o))

ça a l'air facile présenté comme ça ;o))

Moins évident quand on n'y connait presque rien en php. ;o))

Bon il ne me reste plus qu'à chercher ;o))

Merci
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 mars 2009 à 22:57
Effectivement, si tu n'y connais rien, ça va demander un peu de boulot...

Le formulaire pour remplir est simpliste : un champs texte (textarea) pour saisir ton texte et un bouton submit. À la réception, un tout petit bout de code pour insérer dans la BD (tu trouveras plein d'exemples là-dessus sur le web). Pour l'affichage, tu tires une valeur aléatoire entre 1 et le nombre de tuples dans la base et tu vas chercher le texte d'id correspondant dans la base. Pas si compliqué.

Une autre solution qui t'évite une base de données alors que tu n'en as besoin que pour ça, tu peux utiliser des fichiers : ton formulaire se contente de recopier le contenu de la textarea dans un fichier qu'il numérote par exemple textex, avec x valant initialement 1 et incrémenté à chaque ajout. Pour suivre la valeur de x, tu peux te faire un fichier id par exemple dans lequel tu places l'id du dernier texte rentré.

Ensuite, tu fais un tirage aléatoire de x compris entre 1 et la valeur dans le fichier id et tu affiches textex.

Si tu ne fais pas mumuse avec 4000 textes, ça devrait être bon.

Si tu n'as pas bien compris fais moi signe.
0
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 10
3 mars 2009 à 23:20
C'est qu'à terme, il risque d'y avoir beaucoup, beaucoup de petits textes ;o))

c'est vraiment si lent que ça ?
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 mars 2009 à 23:24
Lent... Pas tant, mais c'est quand même lourd à mettre en place (connection à la BD > requête > calcul du résultat > retour du résultat > traitement du résultat).

Mais je ne dis pas que les performances seraient meilleures avec des fichiers (pis c'est le bordel 350 fichiers dans un répertoire ^^), juste que un BDD pour une table de deux champs, ça fait un peu pitié ;-p.

Après, si quelqu'un avait une solution intelligente et sexy, ce serait bien !
0
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 10 > pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
3 mars 2009 à 23:53
loll, on va dire que c'est pour m'entrainer, 1 table de 2 champs c'est très bien pour un début ;o))

Puis, qui sait, si ça m'inspire, je rajouterai peut être d'autres tables par la suite ;o))

petite question en passant, j'ai crée la page formulaire, si j'ai bien compris, je fais le lien vers ma page "réception" qui elle va écrire dans la base de données... j'ai bon ?

Mais pour ecrire dans la base de données, en fait j'ai pas besoin de grand chose, enfin si j'ai bien compris.....

je dois juste utiliser :

mysql_query ("INSERT INTO bdd value( ' ' , ' ??' ) ");

?? : là je sais pas quoi mettre, comment lui dire d'y mettre mon "message" écrit dans la boite de texte ?


0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010
4 mars 2009 à 00:13
Page ajout_message.php (ta table s'appelle tableMessages(id, msg))
<?php
// On vérifie si le formulaire a été validé
if ( isset( $_POST['message'] ) ) {
  // Connexion à la base de données
  // Contrôle de la validité de message et échappement des caractères interdits
  // Insertion dans la base :
  // INSERT INTO tableMessages ( 'msg' )
  // VALUES ( $_POST['message'] );
  // Si code de retour OK
  echo '<p>Message ajouté.</p>";
  // Si erreur
  echo "<p>Il y a eu une erreur lors de l'ajout du message.</p>';
} else {
// Sinon on affiche le formulaire
?>
<form method="post" action="ajout_message.php">
  <textarea rows="5" cols="50" name="message">
    Saisis ton texte.
  </textarea>
  <input type="submit">
</form>
<?php
}
?>

Tu peux bien sûr améliorer ce script, mais ça devrait déjà faire ce que tu veux...
0
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 10 > pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
4 mars 2009 à 00:16
merci, je vais essayer ça, parce que là j'ai utilisé ça :

$message= $_POST['message'];

mysql_query("insert into astucios_texte values ('' , '$message')") ;

j'ai testé, j'ai ecrit mon texte et j'ai envoyé.
je n'ai pas eu de messages d'erreur, mais il n'y a rien qui est arrivé dans ma base , je sais pas ou ça c'est perdu loll

au moins avec ton code, j'aurai un retour ;o))

merci

Edit : Bon ça fonctionne ce que j'ai fait, mais je voudrais à la fin, renvoyer sur ma page "formulaire", j'ai essayé avec header location mais ça ne fonctionne pas.
0
Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010 10 > Nat_astuciosités Messages postés 128 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 14 janvier 2010
4 mars 2009 à 01:31
C'est bon, j'ai trouvé ;o)))

ça fonctionne avec ob_start et ob_flush, fallait le trouver celui là loll
Pourtant j'avais viré tout le html de la page...

Bon, me reste plus qu'à m'attaquer à l'affichage, mais d'abord rajouter un troisième champ. finalement je vais mettre un titre pour aller avec mes textes ;o))



0