[AIDE] Aide PHP
Résolu
mister-gwada97one
Messages postés
110
Date d'inscription
Statut
Membre
Dernière intervention
-
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai une erreur et je voudrais de l'aide svp:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/lilkey/public_html/wi/forum/postok.php on line 313
Ligne 313:
La page:
Cordialement
j'ai une erreur et je voudrais de l'aide svp:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/lilkey/public_html/wi/forum/postok.php on line 313
Ligne 313:
SET topic_last_post = $data4['post_id']
La page:
<?php //Cette fonction doit être appelée avant tout code html session_start(); //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php $titre = "Poster"; include("includes/debut.php"); ?> <?php function verif_auth($auth_necessaire) { //Dans un premier temps, on vérifie si le membre est connecté if(isset($_SESSION['id'])) $auth = intval($_SESSION['level']); else $auth = 1; if ($auth_necessaire < $auth) return true; else return false; } ?> <body> <div id="banniere"></div> <div id="corps_forum"> <?php //Maintenant, on se connecte à la base de données include("includes/identifiants.php"); mysql_connect($adresse, $nom, $motdepasse); mysql_select_db($database); //On récupère la valeur de la variable action $action = htmlspecialchars($_GET['action']); // Si le membre n'est pas connecté, il est arivé ici par erreur if (!isset($_SESSION['pseudo'])) { echo'<p>Erreur : Vous n êtes plus connecté</p>'; } else //Sinon on lance la suite { ?> <?php switch($action) { //Premier cas : nouveau topic case "nouveautopic": if (!verif_auth($data1['auth_annonce']) && isset($_POST['mess'])) { exit('</div></body></html>'); } //On passe le message dans une série de fonction $message = mysql_real_escape_string($_POST['message']); $mess = mysql_real_escape_string($_POST['mess']); //Pareil pour le titre $titre = mysql_real_escape_string($_POST['titre']); //ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable f $forum = (int) $_GET['f']; $temps = time(); if (empty($message) || empty($titre)) { echo'<p>Votre message ou votre titre est vide, cliquez <a href="./poster.php?action=nouveautopic&f='.$forum.'">ici</a> pour recommencer</p>'; } else //Si jamais le message n'est pas vide { ?> <?php //On entre le topic dans la base de donnée en laissant //le champ topic_last_post à 0 mysql_query("INSERT INTO forum_topic (forum_id, topic_titre, topic_createur, topic_vu, topic_time, topic_genre, topic_last_post, topic_post) VALUES('".$forum."', '".$titre."', '".intval($_SESSION['id'])."', '1', '".$temps."','".$mess."', '0', '0' )") or die ("Un problème est survenu lors de l'envoi du message"); $nouveautopic = mysql_insert_id(); //Puis on entre le message mysql_query("INSERT INTO forum_post (post_id, post_createur, post_texte, post_time, topic_id, post_forum_id) VALUES(',' ,'".intval($_SESSION['id'])."', '".$message."', '".$temps."', '".$nouveautopic."', '".$forum."')") or die ("Un problème est survenu lors de l'envoi du message"); $nouveaupost = mysql_insert_id(); //Ici on update comme prévu la valeur de topic_last_post et de topic_first_post mysql_query("UPDATE forum_topic SET topic_last_post = '".$nouveaupost."', topic_first_post = '".$nouveaupost."' WHERE topic_id = '".$nouveautopic."'") or die ("Un problème est survenu lors de l'envoi du message"); //Enfin on met à jour les tables forum_forum et forum_membres mysql_query("UPDATE forum_forum SET forum_post = forum_post + 1 , forum_topic = forum_topic + 1, forum_last_post_id = '".$nouveaupost."' WHERE forum_id = '".$forum."'") or die ("Un problème est survenu lors de l'envoi du message"); mysql_query("UPDATE forum_membres SET membre_post = membre_post + 1 WHERE membre_id = '".intval($_SESSION['id'])."'") or die ("Un problème est survenu lors de l'envoi du message"); //Et un petit message echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />Cliquez <a href="./voirtopic.php?t='.$nouveautopic.'">ici</a> pour le voir</p>'; } break; //Houra ! ?> <? //Deuxième cas : répondre case "repondre": //On passe le message dans une série de fonction $message = mysql_real_escape_string($_POST['message']); //ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable t $topic = (int) $_GET['t']; $temps = time(); if (empty($message)) { echo'<p>Votre message est vide, cliquez <a href="./poster.php?action=repondre&t='.$topic.'">ici</a> pour recommencer</p>'; } else //Sinon, si le message n'est pas vide { //On récupère l'id du forum $requete2 = mysql_query('SELECT forum_id, topic_post FROM forum_topic WHERE topic_id = "'.$topic.'"'); $data2= mysql_fetch_assoc($requete2) or die ("Une erreur semble être survenue lors de l'envoi du message"); $forum = $data2['forum_id']; //Puis on entre le message mysql_query("INSERT INTO forum_post (post_id, post_createur, post_texte, post_time, topic_id, post_forum_id) VALUES(',' ,'".intval($_SESSION['id'])."', '".$message."', '".$temps."', '".$topic."', '".$forum."')") or die ("Une erreur semble avoir survenu lors de l'envoi du message"); $nouveaupost = mysql_insert_id(); //On change un peu la table forum_topic mysql_query("UPDATE forum_topic SET topic_post = topic_post + 1, topic_last_post = '".$nouveaupost."' WHERE topic_id ='".$topic."'") or die ("Une erreur semble avoir survenu lors de l'envoi du message"); //Puis même combat sur les 2 autres tables mysql_query("UPDATE forum_forum SET forum_post = forum_post + 1 , forum_last_post_id = '".$nouveaupost."' WHERE forum_id = '".$forum."'") or die ("Une erreur semble avoir survenu lors de l'envoi du message"); mysql_query("UPDATE forum_membres SET membre_post = membre_post + 1 WHERE membre_id = '".intval($_SESSION['id'])."'") or die ("Une erreur semble avoir survenu lors de l'envoi du message"); //Et un petit message $nombreDeMessagesParPage = 15; $nbr_post = $data2['topic_post']+1; $page = ceil($nbr_post / $nombreDeMessagesParPage); echo'<p>Votre message a bien été ajouté!<br /><br /> Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br /> Cliquez <a href="./voirtopic.php?t='.$topic.'&page='.$page.'#p_'.$nouveaupost.'">ici</a> pour le voir</p>'; } break; ?> <?php case "edit": //Si on veut éditer le post //On récupère la valeur de p $post = (int) $_GET['p']; //On check le message $message = mysql_real_escape_string($_POST['message']); //Ensuite on vérifie que le membre a le droit d'être ici (soit le créateur soit un modo/admin) $requete2 = mysql_query(' SELECT post_createur, post_texte, post_time, topic_id, auth_modo FROM forum_post LEFT JOIN forum_forum ON forum_post.post_forum_id = forum_forum.forum_id WHERE post_id='.$post.''); $data2 = mysql_fetch_assoc($requete2); $topic = $data2['topic_id']; //On récupère la place du message dans le topic (pour le lien) $requete3 = mysql_query('SELECT COUNT(*) AS nbr FROM forum_post WHERE topic_id = '.$topic.' AND post_time < '.$data2['post_time']); $data3 = mysql_fetch_assoc($requete3); if (!verif_auth($data2['auth_modo'])&& $data2['post_createur'] != $_SESSION['id']) { // Si cette condition n'est pas remplie ça va barder :o echo'<p>Vous n\'avez aucun droit d\'être ici</p></div></body></html>'; exit(); } else //Sinon ça roule et on continue { mysql_query("UPDATE forum_post SET post_texte = '".$message."' WHERE post_id = '".$post."'"); $nombreDeMessagesParPage = 15; $nbr_post = $data3['nbr']+1; $page = ceil($nbr_post / $nombreDeMessagesParPage); echo'<p>Votre message a bien été édité!<br /><br /> Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br /> Cliquez <a href="./voirtopic.php?t='.$topic.'&page='.$page.'#p_'.$post.'">ici</a> pour le voir</p>'; } break; ?> <?php case "delete": //Si on veut supprimer le post //On récupère la valeur de p $post = (int) $_GET['p']; $requete1 = mysql_query(' SELECT post_createur, post_texte, forum_id, topic_id, auth_modo FROM forum_post LEFT JOIN forum_forum ON forum_post.post_forum_id = forum_forum.forum_id WHERE post_id='.$post.''); $data1 = mysql_fetch_assoc($requete1); $topic = $data1['topic_id']; $forum = $data1['forum_id']; //Ensuite on vérifie que le membre a le droit d'être ici //(soit le créateur soit un modo/admin) if (!verif_auth($data1['auth_modo'])) { // Si cette condition n'est pas remplie ça va barder :o echo'<p>Vous n\'avez aucun droit d\'être ici</p></div></body></html>'; exit(); } else //Sinon ça roule et on continue { //Ici on vérifie plusieurs choses : //est-ce un premier post ? Dernier post ou post classique ? $requete_first_post = mysql_query("SELECT COUNT(*) AS first_post FROM forum_topic WHERE topic_first_post = $post"); $requete_last_post = mysql_query("SELECT COUNT(*) AS last_post FROM forum_topic WHERE topic_last_post = $post"); $first_post = mysql_fetch_assoc($requete_first_post); $last_post = mysql_fetch_assoc($requete_last_post); //On distingue maintenant les cas if ($first_post['first_post'] != 0) //Si le message est le premier { //Les autorisations ont changé ! if (!verif_auth($data1['auth_modo'])) { echo'<p> Vous n\'avez aucun droit d\'être ici</p></div></body></html>'; exit(); } //Il faut s'assurer que ce n'est pas une erreur echo'<p>Vous avez choisi de supprimer un post. Cependant ce post est le premier du topic. Voulez vous supprimer le topic ? <br /> <a href="./postok.php?action=delete_topic&t='.$topic.'">oui</a> - <a href="./voirtopic.php?t='.$topic.'">non</a></p>'; } elseif ($last_post['last_post'] != 0) //Si le message est le dernier { //On supprime le post mysql_query("DELETE FROM forum_post WHERE post_id = '".$post."'"); //On modifie la valeur de topic_last_post pour cela on //récupère l'id du plus récent message de ce topic $requete4 = mysql_query('SELECT post_id FROM forum_post WHERE topic_id = '.$topic.' ORDER BY post_id DESC LIMIT 0,1'); $data4 = mysql_fetch_assoc($requete4); //On fait de même pour forum_last_post_id $requete5 = mysql_query('SELECT post_id FROM forum_post WHERE post_forum_id = '.$forum.' ORDER BY post_id DESC LIMIT 0,1'); $data5 = mysql_fetch_assoc($requete5); //On met à jour la valeur de topic_last_post mysql_query("UPDATE forum_topic SET topic_last_post = $data4['post_id'] WHERE topic_last_post = $post"); //On enlève 1 au nombre de messages du forum et on met à //jour forum_last_post mysql_query("UPDATE forum_forum SET forum_post = forum_post - 1, forum_last_post_id = $data5['post_id'] WHERE forum_id = $forum"); //On enlève 1 au nombre de messages du topic mysql_query("UPDATE forum_topic SET topic_post = topic_post - 1 WHERE topic_id = $topic"); //On enlève 1 au nombre de messages du membre mysql_query("UPDATE forum_membres SET membre_post = membre_post - 1 WHERE membre_id = $data1['post_createur']"); //Enfin le message echo'<p>Le message a bien été supprimé !<br /> Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour retourner au topic<br /> Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>'; } elseif ($last_post['last_post'] == 0 && $first_post['first_post'] == 0) // Si c'est un post classique { //On supprime le post mysql_query("DELETE FROM forum_post WHERE post_id = $post"); //On enlève 1 au nombre de messages du forum mysql_query("UPDATE forum_forum SET forum_post = forum_post - 1 WHERE forum_id ='".$forum."'"); //On enlève 1 au nombre de messages du topic mysql_query("UPDATE forum_topic SET topic_post = topic_post - 1 WHERE topic_id = $topic"); //On enlève 1 au nombre de messages du membre mysql_query("UPDATE forum_membres SET membre_post = membre_post - 1 WHERE membre_id = $data1['post_createur']"); //Enfin le message echo'<p>Le message a bien été supprimé !<br /> Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour retourner au topic<br /> Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>'; } } break; ?> <?php case "delete_topic": $topic = (int) $_GET['t']; $requete1 = mysql_query(' SELECT forum_topic.forum_id, auth_modo FROM forum_topic LEFT JOIN forum_forum ON forum_topic.forum_id = forum_forum.forum_id WHERE topic_id='.$topic.''); $data1 = mysql_fetch_assoc($requete1); $forum = $data1['forum_id']; //Ensuite on vérifie que le membre a le droit d'être ici //c'est-à-dire si c'est un modo / admin if (!verif_auth($data1['auth_modo'])) { // Si cette condition n'est pas remplie ça va barder :o echo'<p>Vous n\'avez aucun droit d\'être ici</p></div></body></html>'; exit(); } else //Sinon ça roule et on continue { //On compte le nombre de post du topic $requete_count_post = mysql_query("SELECT COUNT(*) AS nombre_post FROM forum_post WHERE topic_id = $topic"); $data_nombrepost = mysql_fetch_assoc($requete_count_post); $nombrepost = $data_nombrepost['nombre_post']; //On supprime le topic mysql_query("DELETE FROM forum_topic WHERE topic_id = $topic"); //On enlève le nombre de post posté par chaque membre dans le topic $requete_postparmembre = mysql_query('SELECT post_createur, COUNT(*) AS nombre_mess FROM forum_post WHERE topic_id = '.$topic.' GROUP BY post_createur'); while($data_postparmembre = mysql_fetch_assoc($requete_postparmembre)) { mysql_query('UPDATE forum_membres SET membre_post = membre_post - '.$data_postparmembre['nombre_mess'].' WHERE membre_id = '.$data_postparmembre['post_createur']); } //Et on supprime les posts ! mysql_query("DELETE FROM forum_post WHERE topic_id = $topic"); //Dernière chose, on récupère le dernier post du forum $requete_forum = mysql_query('SELECT post_id FROM forum_post WHERE post_forum_id = '.$forum.' ORDER BY post_id DESC LIMIT 0,1'); $data_forum = mysql_fetch_assoc($requete_forum); //Ensuite on modifie certaines valeurs : mysql_query("UPDATE forum_forum SET forum_topic = forum_topic - 1, forum_post = forum_post - $nombrepost, forum_last_post_id = $data_forum['post_id'] WHERE forum_id = $forum"); //Enfin le message echo'<p>Le topic a bien été supprimé !<br /> Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>'; } break; ?> <? default; echo'<p>Cette action est impossible</p>'; } //Fin du Switch } //Fin du else, le membre est connecté mysql_close(); ?> </div> </body> </html>
Cordialement
A voir également:
- [AIDE] Aide PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
8 réponses
Essaye avec
mysql_query('UPDATE forum_topic'. ' SET topic_last_post = '.$data4['post_id']. ' WHERE topic_last_post = '.$post);Au lieu de
mysql_query("UPDATE forum_topic SET topic_last_post = $data4['post_id'] WHERE topic_last_post = $post");
J'ai essayé ça:
au lieu de:
Et ça marche merci^^
Maintenant un autre PB:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/lilkey/public_html/wi/forum/amis.php on line 173
ligne 173:
mysql_query("UPDATE forum_topic SET topic_last_post = $data4('post_id') WHERE topic_last_post = $post");
au lieu de:
mysql_query("UPDATE forum_topic SET topic_last_post = $data4['post_id'] WHERE topic_last_post = $post");
Et ça marche merci^^
Maintenant un autre PB:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/lilkey/public_html/wi/forum/amis.php on line 173
ligne 173:
if (mysql_num_rows($requete) == 0)
oulah ton script me parait bien compliquer pour ce que tu veut en faire...
je viens de passe 1/a d'heure a demeler les les if les ?> <?PHP et j'ai pas trouvé, à mon avis tu a du oublier une " ou un ' quelquepart
je viens de passe 1/a d'heure a demeler les les if les ?> <?PHP et j'ai pas trouvé, à mon avis tu a du oublier une " ou un ' quelquepart
Stockes le nombre dans une variable avant la condition et $requete doit être une ressource après mysql_query, pas la requête SQL (SELECT champ FROM ...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En faite je m'inspire d'un tuto sur le sit du zéro pour le forum..
Mais j'ai tout le temps des erreurs que j'arrive à régler pour la pluspart, mais là 0 je ne comprend plus rien^^
Mais j'ai tout le temps des erreurs que j'arrive à régler pour la pluspart, mais là 0 je ne comprend plus rien^^
Je récapitules :
1. $requete doit contenir le résultat d'un mysql_query, pas une requête SQL (le texte "SELECT ...").
2. Essaye en stockant dans $nb (par exemple) le résultat de mysql_num_rows($requete) avant de faire la condition
3. Si ça ne marche toujours pas, ajoute @ devant mysql_num_rows parce que si je ne me trompe pas, PHP affiche une erreur si il n'y a pas d'entrée.
1. $requete doit contenir le résultat d'un mysql_query, pas une requête SQL (le texte "SELECT ...").
2. Essaye en stockant dans $nb (par exemple) le résultat de mysql_num_rows($requete) avant de faire la condition
3. Si ça ne marche toujours pas, ajoute @ devant mysql_num_rows parce que si je ne me trompe pas, PHP affiche une erreur si il n'y a pas d'entrée.