Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop
Salut a tous, tout d´abord désolé pour ce titre long et pas très compréhensible, je vais commencer par me présenter : je vien de finir d´apprendre les bases du php 4 et je me lance dans mon premier site réalisé dans ce langage (ce qui me permet de me tester tout en faisant quelquechose de constructif), or j´ai un peu de mal a réalisé la fonctionalité prinsipal je m´explique : le concepte de mon site "5minute" est un peu comparable à celui du site anglais "9 minutes of fame" (pour ceux qui connaissent) sauf qu´il n´est ici nul question de blog, en bref il s´agit d´un site ou tout les 5 minutes les uttilisateurs doivent se ruer sur un formulaire qui apparait afin d´entrer un message qui, pour l´uttilisateur qui sera le plus rapide, apparaitera pendant 5 minutes dans le header du site, idéal pour déclarer ca flame, pour faire passé un message, pour faire de la pub pour son site perso ou juste pour profité de ces 5 minutes de célébrité. (Bon je me rend bien compte que je suis entrain de raconter ma vie mais vous allez voir que ce n´est pas en vain).
Donc maintenant que vous avez compris (ou pas) le concepte voici mon problème : je n´arrive tout simplement pas a faire en sorte que la table sql sur laquelle seront stoqué les messages n´en prenne qu´un seul (le plus rapide) toute les 5 minutes.
La piste que j´ai exploré pour l´instant est celle ci :
<code type="php"> if (date(´i´) == 05 OR date(´i´) == 15 OR date(´i´) == 20 OR date(´i´) == 25 OR date(´i´) == 30 OR date(´i´) == 35 OR date(´i´) == 40 OR date(´i´) == 45 OR date(´i´) == 50 OR date(´i´) == 55 OR date(´i´) == 00)
{
print ´<form method="post" action="index.php?page=send">
<textarea name="message" rows="8" cols="45">
Tape vite ton message ici pour gagné tes 5 minutes de célébrités.
</textarea>
<input type="submit" value="Valider" />
</form>´;
} </code>
(pour ce qui est du "index.php?page=send" sachez que ma page prinsipale qu´est index.php inclue (avec les "include") la page send.php)
Voila merci beaucoup aux grands sages qui auront pris le temps de me lire et celui de me repondre pour m´eclairer.
Euh déja c´est pas <code type="php"></code> ^^ mais <? ton code en php ?>
Tu peux te servir du timestamp, la fonction doit être time() normalement.
En gros, tu prend un seul utilisateur (le premier qui vient), tu remplace le vieux message par le nouveau dans une bdd et il ne se passe rien, lorsqu´un autre utilisateur se présente, on regarde si le temps est écoulé ou pas etc...
C´est partie
<?
// recup du timestamp
$nouveau_timestamp = time();
//connexion à la bdd
mysql_connect("identifiants", "identifiants", "identifiants");
mysql_select_db("base_de_donnee");
// On va chercher l´ancien timestamp pour savoir si les 5minutes sont passées
$sql = mysql_query("SELECT * FROM table");
while ($donnees = mysql_fetch_array($sql))
{
$ancien_timestamp = $donnees[´timestamp´];
//le champ de la bdd doit s´appeller timestamp
}
//on soustrait pour trouver le temps qu´il s´est passé entre maintenant
//et avant, attention, le résultat est en seconde !
$difference_timestamps = $nouveau_timestamp - $ancien_timestamp;
// si le temp est plus petit que 5 minutes (300 secondes)
if ($difference_timestamps < 300)
{
?>
<!--on affiche le formulaire-->
<form method="post" action="index.php?page=send">
<textarea name="message" rows="8" cols="45">
Tape vite ton message ici pour gagné tes 5 minutes de célébrités.
</textarea>
<input type="submit" value="Valider" />
</form>
<?
}
//sinon (si les 5min ne sont pas passées)
else
{
echo ´Désolé mais tu n´est pas le premier à venir te présenter ici´;
}
?>
Voila déjà ta page pour voir si l´on peut poster ou pas
PS : ta table doit avoir 3champs minimum : pseudo, message, timestamp
Au fait n´oublie pas de déconnecter mysql ^^ (moi j´ai oublié)
maintenant, j´attaque la page send.php.
<?
mysql_connect("toto", "toto", "toto");
mysql_select_db("base_de_donnee); //je me connecte tout de suite
//recup´ des variables à poster (message/pseudo/timestamp)
$message = $_POST[´message´];
$pseudo = //Je sais pas, à toi de mettre
$timestamp = time();
mysql_query("UPDATE table SET pseudo=$pseudo , message=$message , timestamp=$timestamp" WHERE id=1);
/* IMPORTANT : dans la requete si dessus, WHERE indique la ligne sur la
quelle on veut changer quelque chose, sachant que nous on aura qu´une ligne puisque on fait toujours des remplacements, on s´en fou, mais j´ai vu que sans WHERE, le script ne marche pas, alors il suffit d´aller rajouter un champ qui s´appellera ´id´ et qui vaudrait 1 */
?>
Voila, pour que ce script marche, je pense qu´il faut qu´il y ai déjà les champs remplis
PS : je n´ai pas essayé ce script, alors fait moi savoir si il fonctionne ou pas
Merci beaucoup de m´avoir repondut (j´aurais jamais pensé a ca perso ^^)
Je vais le tester et je te dit si ca marche.
J´ai un message d´erreur :
Parse error: syntax error, unexpected T_STRING, expecting ´,´ or ´;´ in /home/olympe-network/5minutes/minutes.php on line 39
la ligne 39 étant :
echo ´Désolé mais tu n´est pas le premier à venir te présenter ici´;
echo ´Désolé mais tu n\´est pas le premier à venir te présenter ici´;
ou
echo "Désolé mais tu n´est pas le premier à venir te présenter ici";
ah oui j´avais pas vu ^^
bon maintenant j´ai des problèmes avec ma base de donné ^^
je cite :
"
Warning: mysql_connect() [function.mysql-connect]: Can´t connect to local MySQL server through socket ´/var/run/mysqld/mysqld.sock´ (2) in /home/olympe-network/5minutes/minutes.php on line 6
Warning: mysql_select_db() [function.mysql-select-db]: Can´t connect to local MySQL server through socket ´/var/run/mysqld/mysqld.sock´ (2) in /home/olympe-network/5minutes/minutes.php on line 7
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/olympe-network/5minutes/minutes.php on line 7
Warning: mysql_query() [function.mysql-query]: Can´t connect to local MySQL server through socket ´/var/run/mysqld/mysqld.sock´ (2) in /home/olympe-network/5minutes/minutes.php on line 10
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/olympe-network/5minutes/minutes.php on line 10
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/olympe-network/5minutes/minutes.php on line 11
Warning: mysql_close(): no MySQL-Link resource supplied in /home/olympe-network/5minutes/minutes.php on line 19
Désolé mais tu n´est pas le premier à venir te présenter ici"
Ca vient surment ce que j´ai entré connecté mysql. Non ?
Tu es sur de tes identifiants ?
bah je penses,
voila ce qu´il me donne dans le mail
Accès MySQL :
Serveur : sql.olympe-network.com / Port : 3306
Nom d´utilisateur : 5minutes
Mot de passe : s*****0
Base de données : 5minutes
et voici ce que j´ai mit :
mysql_connect("ftp.olympe-network.com:3306", "5minutes", "s*****0");
mysql_select_db("5minutes");
C´est bien comme ça quon se connect non ?
test sans le :3306
Je peus pas on dirait que le serveur de mon hebergeur a planté (oui oui j´ai vraiment une chance de fou moi ^^).
J´espere que ce sera vite rétablit.
5minutes ?! c´est bizard, c´est pas un pseudo ? T´es sur que c´est le bon ?
Ba essaye le sur ton ordi déjà, pour mac j´ai MAMP comme logiciel, sinon pour PC ya easyPHP
http://www.siteduzero.com/tuto-3-66-1-un-programme-utile-easyphp.html merci ô grand site du zero ^^, n´oublie pas d´adapter les autres requetes sql à ta base de donnees
Ca marche avec easy php ^^
´fin presque pasque sur la page send.php il me dit :
Notice: Undefined index: message in c:\users\acer\desktop\site web\5 minutes\send.php on line 6
la ligne 6 étant $message = $_POST[´message´];
Bon déjà c´est que tes identifiants ne sont pas bon auprès de ton hébergeur, mais le code marche.
D´après ce que je voie, la variable n´est pas définie, verifie si $_POST[´message´] a été envoyer avec la methode GET par exemple
"D´après ce que je voie, la variable n´est pas définie, verifie si $_POST[´message´] a été envoyer avec la methode GET par exemple"
C´est a dire ?
Entoucas le truc c´est que le textarea (placé sur la page minute.php elle même inclu dans index.php) renvois les info vers index.php?page=send mais comme j´ai sur mon index.php ceci :
if ($_GET[´page´] == ´send´)
{include("send.php");
}
en fin de compte j´arrive sur une page index.php dans laquelle est inclu send.php.
Bref est-ce que la variable peu suivre se chemain ou est-ce que je dois changer quelquechose ?
Ah oui peut-être que si elle est inclue, ça peut compliquer les choses, pourquoi veut tu inclure cette page ? Essaye sans include, juste de faire un echo de la variable $_POST[´message´]
Sinon pour le post en get :
Change <form method="post" action="index.php?page=send">
en <form method="get" action="index.php?page=send">
replace methode="post" par "get", ça ne va faire marcher en aucun cas le code, mais on poura savoir si la variable a bien été envoyé : lorsque tu appuie sur submit, si la variable est bien envoyer, tu vera dans la barre d´adresse : index.php?page=send&message=le+message
Après quelque corection mon site marche !
(Du moins sur mon pc j´ai eu quelque problème avec mon hebergeur ^^)
Merci beaucoup a vous deux !