Codage PHP réticent
Résolu
Pluck
Messages postés
41
Date d'inscription
Statut
Membre
Dernière intervention
-
Pluck Messages postés 41 Date d'inscription Statut Membre Dernière intervention -
Pluck Messages postés 41 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Codage PHP réticent
- Codage ascii - Guide
- Codage binaire - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Application codage - Guide
19 réponses
if (isset($_POST['pseudo']) AND isset($_POST['mail'] AND isset($_POST['contenu']))
->
If ((isset($_POST['pseudo'])) && (isset($_POST['mail'])) && (isset($_POST['contenu'])))
T'as essayé de cette manière ? il me semble qu'il te manquait des parenthèses
->
If ((isset($_POST['pseudo'])) && (isset($_POST['mail'])) && (isset($_POST['contenu'])))
T'as essayé de cette manière ? il me semble qu'il te manquait des parenthèses
Inutile de mettre autant de parenthèses.
Le problème venait simplement du fait qu'il en manquait une
juste après $_POST['mail'].
Le problème venait simplement du fait qu'il en manquait une
if (isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['contenu']))
juste après $_POST['mail'].
Je me permet de vous redemander votre aide..
Quasiment même code, mais pour mon livre do'r cette fois-ci, on m'affiche une erreur MySQL sans que je ne comprenne pourquoi.
Elle se trouve (Apparement) au niveau de ma boucle : "while ($donnees = mysql_fetch_array($reponse))" (ligne 44)
Quasiment même code, mais pour mon livre do'r cette fois-ci, on m'affiche une erreur MySQL sans que je ne comprenne pourquoi.
Elle se trouve (Apparement) au niveau de ma boucle : "while ($donnees = mysql_fetch_array($reponse))" (ligne 44)
<?php mysql_connect("sql.hostarea.org", "*******", "******"); mysql_select_db("********"); // Si un message est envoyé, on l'enregistre if (isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['message'])) { $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité $mail = mysql_real_escape_string(htmlspecialchars($_POST['mail'])); $date = date( "d/m/Y H:i:s" ); //On met la date $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br /> // On enregistre mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $date . "', '" . $mail . "', '" . $message . "')"); } $nombreDeMessagesParPage = 20; // On récupère le nombre total de messages $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor'); $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages']; $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); ?> <?php if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (niouse.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAAfficher = ($page - 1) * $nombreDeMessagesParPage; $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAAfficher . ', ' . $nombreDeMessageParPage); while ($donnees = mysql_fetch_array($reponse)) { ?> <strong><?php echo $donnees['pseudo']; ?></strong> à <?php echo $donnees['date']; ?> - <em>(<?php echo $donnees['mail']; ?>)</em><br /> <?php echo $donnees['message']; ?><br /> <p><object><hr /></object></p> <div class="center"> <?php } echo ''; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> '; } mysql_close(); ?> <br /><br />
Aucun changement, toujours ce message : "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web/clients/inner-visi0n.hostarea.org/www/livre/livreor.php on line 67"
J'ai pourtant recommencé toute la page deux fois, toujours le même resultat..
EDIT: Par contre, j'ai essayer avec des "mysql_error()", elle se situerais ici :
"
La seconde ligne.
J'ai pourtant recommencé toute la page deux fois, toujours le même resultat..
EDIT: Par contre, j'ai essayer avec des "mysql_error()", elle se situerais ici :
"
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor'); $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages']"
La seconde ligne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon, j'ai laissé tomber pour le livre d'or. J'me suis mis en tête de mettre un système de commentaires sur chaque article, mon code marche..
Mais evidement, je me pose cette question : Sachant que j'ai plus d'une centaine d'articles, comment faire pour ne pas créer cent tables sous PHPmyAdmin ? Ca prendrais trop de temps et, de plus, il faudrait en créer une a chaque parution d'article..
Une idée, peut-être ?
Mais evidement, je me pose cette question : Sachant que j'ai plus d'une centaine d'articles, comment faire pour ne pas créer cent tables sous PHPmyAdmin ? Ca prendrais trop de temps et, de plus, il faudrait en créer une a chaque parution d'article..
Une idée, peut-être ?
Salut !
Pour chaque commentaure, tu enregistre l'ip du commentaire et l'id de l'article lié !
De cette manière, tu pourras facilement n'afficher sous les articles que les commentaires liés à celui-ci.
Pour chaque commentaure, tu enregistre l'ip du commentaire et l'id de l'article lié !
De cette manière, tu pourras facilement n'afficher sous les articles que les commentaires liés à celui-ci.
Pour enregister l'ip du commentaire, je ne vois aps du tout comment preceder a vrai dire..
Par contre, pour l'id de l'article, il suffit juste d'utiliser un "WHERE" (En prennat en compte ll'id de l'article enregister lors du post du commentaire).
Ah, aussi, pour limiter le nombre de pages de commentaires servant a afficher et enregister les commentaires, comment faire ?
Par contre, pour l'id de l'article, il suffit juste d'utiliser un "WHERE" (En prennat en compte ll'id de l'article enregister lors du post du commentaire).
Ah, aussi, pour limiter le nombre de pages de commentaires servant a afficher et enregister les commentaires, comment faire ?
Bjr
Je créerais 2 tables comme ceci par ex
Je créerais 2 tables comme ceci par ex
+-------------+ | COMMENTAIRE | +-------------+ | COM_ID | Identifiant du commentaire | COM_IP | Adresse IP de l'internaute | COM_DATE | Date du commentaire | COM_TXT | Texte du commentaire | COM_ART_ID | Identifiant de l'article +-------------+ +-------------+ | ARTICLE | +-------------+ | ART_ID | Identifiant de l'article | ART_TITRE | Titre de l'article | ART_DATE | Date de parution +-------------+
Hum, je comprend pas trop l'utilité de mettres autant de paramètres, et a vraid rie, je vois même pas comment les aquérir tous Oo..
Un truc plus simple, peut-être ?
Un truc plus simple, peut-être ?
Posté en double lol
PhP
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
PhP
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
Plus simple ?
Hum ...
on peut à la rigueur faire l'impasse sur quelques champs
Maintenant qu'est ce que tu entends exactement par ARTICLE ? Une page HTML ?
PhP
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
Hum ...
on peut à la rigueur faire l'impasse sur quelques champs
+-------------+ | COMMENTAIRE | +-------------+ | COM_ID | Identifiant du commentaire | COM_TXT | Texte du commentaire | COM_ART_ID | Identifiant de l'article +-------------+ +-------------+ | ARTICLE | +-------------+ | ART_ID | Identifiant de l'article | ART_TITRE | Titre de l'article (facultatif mais difficile ensuite de retrouver à quel article correspond chaque identifiant) +-------------+--
Maintenant qu'est ce que tu entends exactement par ARTICLE ? Une page HTML ?
PhP
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
Bon, j'ai reussi de mon coté a faire ce que je voulais, un seul probleme :
Page de commentaires:
Page des articles :
J'ai réussi a avoir un "id_news" différent a chaque fois, maintenant ce que je voudrais c'est afficher par article les commentaires qui lui sont attribués. Comment faire ?
Page de commentaires:
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); $mail = mysql_real_escape_string(htmlspecialchars($_POST['mail'])); $contenu = mysql_real_escape_string(htmlspecialchars($_POST['contenu'])); $id_news = ($_GET['id_news']); // Ensuite on enregistre le message mysql_query("INSERT INTO comments1 VALUES('', '$id_news', '$pseudo', '$mail', '$contenu')"); // On se déconnecte de MySQL mysql_close(); } } ?> <!-- Formulaire --> <form method="post" action="comments.php"> <p><object> <table class="formulaire"> <tr><td><label for="pseudo">Votre Pseudo :</label></td><td><input type="text" name="pseudo" id="pseudo" size="25" tabindex="10" /></td></tr> <tr><td><label for="mail">Votre E-mail :</label></td><td><input type="text" name="mail" id="mail" size="25" tabindex="20" /></td></tr> <tr><td><label for="contenu">Votre Message :</label></td><td colspan="3"><textarea name="contenu" id="contenu" rows="4" cols="40" tabindex="30"></textarea> <input type="submit" value="Envoyer" tabindex="40" /><input type="reset" value="Effacer" tabindex="50" /></td></tr> </table> </object></p> </form><br /><br /> <?php // On se connecte d'abord à MySQL : mysql_connect("sql.hostarea.org", "****", "*****"); mysql_select_db("****"); // On utilise la requête suivante pour récupérer les 10 derniers messages : $reponse = mysql_query("SELECT * FROM comments1 ORDER BY id DESC LIMIT 0,10");
Page des articles :
<table id="art<?php echo $donnees['id']; ?>"> <tr> <th><?php echo $donnees['titre']; ?></th> </tr> <tr> <td><div class=" petititalique right"><a href="../comments.php?id_news=<?php echo $donnees['id']; ?>" onClick="window.open(this.href,'comments', 'width=635, height=700, location=no');return false;">Commentaire(s)</a></div><br /><br /> <?php echo $donnees['contenu']; ?><br /><br /> <?php echo $donnees['video']; ?></td> </tr> </table><p><br /></p>
J'ai réussi a avoir un "id_news" différent a chaque fois, maintenant ce que je voudrais c'est afficher par article les commentaires qui lui sont attribués. Comment faire ?
je te l'ai dit, il suffit d'enregistrer l'id de l'article en même temps que l'enregistrement du commentaire et n'afficher sous l'article que les commentaires dont l'id d'article est celui-ci.
Donc, cela induit de creer autant de pages de commentaires que d'articles ?
Ou bien utiliser un WHERE lors de l'affichage, mais avec quels paramètres ?
J'ai essayé quelques trucs mais sa n'as pas marché, un petit bout de code peut etre ? =/
Ou bien utiliser un WHERE lors de l'affichage, mais avec quels paramètres ?
J'ai essayé quelques trucs mais sa n'as pas marché, un petit bout de code peut etre ? =/
quand tu affiches un article, y'a bien son id dans la barre d'adresse, non ?
tu fais un WHERE id_article = '".$_GET['id']."'"; (par exemple)
tu fais un WHERE id_article = '".$_GET['id']."'"; (par exemple)
Voila, ce que ça donne :
Code de la page des articles :
Code de la page des commentaires :
Mais EVIDEMENT, ça ne marche pas... dans ma table, les "id_news" sont toujours égaux a 0. Comment faire ? ><*
Code de la page des articles :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr_FR" lang="fr_FR"> <head> <title>Inner-Visi0n - Niouses !</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" media="screen" title="Black Skin" href="../styles/style1.css" /> <link rel="alternate stylesheet" type="text/css" media="screen" title="Happy Time" href="../styles/style2.css" /> <script type="text/javascript" src="scripts/Styleswitcher.js"> </script> <link rel="shortcut icon" type="image/x-icon" href="../fichiers/images/favicon.png" /> </head> <body> <!-- Menu --> <p id="menu"> <a href="../index.html">Accueil</a> <a href="niouse6.php">Niouses</a> <a href="../animations.php">Animations</a> <a href="../liens.html">Liens</a> <a href="../proposer.html" >Proposer</a> </p> <div class="descente"><a href="#bas" >descendre</a> ↓</div> <?php mysql_connect("sql.hostarea.org", "******", "*****"); // Connexion à MySQL mysql_select_db("*******"); // Sélection de la base $nombreArticlesParPage = 15; $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM niouses'); $donnees = mysql_fetch_array($retour);$totalDesArticles = $donnees['nb_messages']; $nombreDePages = ceil($totalDesArticles / $nombreArticlesParPage); ?> <?php if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (niouses.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierArticleAAfficher = ($page - 1) * $nombreArticlesParPage; $reponse = mysql_query('SELECT * FROM niouses ORDER BY id DESC LIMIT ' . $premierArticleAAfficher . ', ' . $nombreArticlesParPage); while ($donnees = mysql_fetch_array($reponse)) { ?> <table id="art<?php echo $donnees['id']; ?>"> <tr> <th><?php echo $donnees['titre']; ?></th> </tr> <tr> <td><div class=" petititalique right"><a href="../comments.php?id_news=<?php echo $donnees['id']; ?>" onClick="window.open(this.href,'comments', 'width=635, height=700, location=no');return false;">Commentaire(s)</a></div><br /><br /> <?php echo $donnees['contenu']; ?><br /><br /> <?php echo $donnees['video']; ?></td> </tr> </table><p><br /></p> <?php } ?> <div class="center"> <?php echo ''; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="niouses.php?page=' . $i . '">' . $i . '</a> '; } mysql_close(); // Déconnexion de MySQL ?> <br /><br /> <!-- Début de Publicité --> <?php @include('http://services.hostarea.org/pub/16183.key'); ?></div> <!-- Fin de Publicité --> </body> </html>
Code de la page des commentaires :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr_FR" lang="fr_FR"> <head> <title>Inner-Visi0n - Commentaires !</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" media="screen" title="Black Skin" href="../styles/style1.css" /> <link rel="alternate stylesheet" type="text/css" media="screen" title="Happy Time" href="../styles/style2.css" /> <link rel="shortcut icon" type="image/x-icon" href="../fichiers/images/favicon.png" /> </head> <body> <?php If (isset($_POST['pseudo']) && isset($_POST['mail']) && isset($_POST['contenu'])) // Si les variables existent { if ($_POST['pseudo'] != NULL && $_POST['mail'] != NULL && $_POST['contenu'] != NULL) // Si on a quelque chose à enregistrer { // D'abord, on se connecte à MySQL mysql_connect("sql.hostarea.org", "******", "*******"); mysql_select_db("******"); // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); $mail = mysql_real_escape_string(htmlspecialchars($_POST['mail'])); $contenu = mysql_real_escape_string(htmlspecialchars($_POST['contenu'])); $id_news = $_GET['id_news']; // Ensuite on enregistre le message mysql_query("INSERT INTO comments1 VALUES('', '$id_news', '$pseudo', '$mail', '$contenu')"); // On se déconnecte de MySQL mysql_close(); } } ?> <!-- Formulaire --> <form method="post" action="comments.php"> <p><object> <table class="formulaire"> <tr><td><label for="pseudo">Votre Pseudo :</label></td><td><input type="text" name="pseudo" id="pseudo" size="25" tabindex="10" /></td></tr> <tr><td><label for="mail">Votre E-mail :</label></td><td><input type="text" name="mail" id="mail" size="25" tabindex="20" /></td></tr> <tr><td><label for="contenu">Votre Message :</label></td><td colspan="3"><textarea name="contenu" id="contenu" rows="4" cols="40" tabindex="30"></textarea> <input type="submit" value="Envoyer" tabindex="40" /><input type="reset" value="Effacer" tabindex="50" /></td></tr> </table> </object></p> </form><br /><br /> <?php // On se connecte d'abord à MySQL : mysql_connect("sql.hostarea.org", "******", "******"); mysql_select_db("******"); // On utilise la requête suivante pour récupérer les 10 derniers messages : $reponse = mysql_query("SELECT * FROM comments1 WHERE id_news='".$_GET['id_news']."' ORDER BY id DESC LIMIT 0,10"); // Puis on fait une boucle pour afficher tous les résultats : while ($donnees = mysql_fetch_array($reponse) ) { ?> <p><strong><?php echo $donnees['pseudo']; ?></strong> - <span class="petititalique"><?php echo $donnees['mail']; ?></span><br /> <?php echo $donnees['contenu']; ?></p> <?php } mysql_close(); // On se déconnecte de MySQL ?> </body> </html>
Mais EVIDEMENT, ça ne marche pas... dans ma table, les "id_news" sont toujours égaux a 0. Comment faire ? ><*
Bon, après des jours et des jours de recherches et de reflexion, j'ai enfin trouvé !
Enfait, dans le code de mon formulaire figurais :
Ce qui rechargeais la page SANS la variable id_news.
Arrivée sur la page -> [...]niouses/comments.php?id_news=XX
Envoi des données (donc rechargement de la page) -> [...]niouses/comments.php
Voila pourquoi lorsque je faisait un $_GET, le champ restait 0 !
Merci de votre aide, tout de même
Enfait, dans le code de mon formulaire figurais :
<form method="post" action="ajocomments.php?id_news=<?php echo $_GET['id_news']; ?>">
Ce qui rechargeais la page SANS la variable id_news.
Arrivée sur la page -> [...]niouses/comments.php?id_news=XX
Envoi des données (donc rechargement de la page) -> [...]niouses/comments.php
Voila pourquoi lorsque je faisait un $_GET, le champ restait 0 !
Merci de votre aide, tout de même
Mais pourquoi autant de parenthèses ?