Aide - Recherche - Membres - Calendrier
Version complète : Ajout de commentaires
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Thefanatics
Bonjour à tous, j'ai repris plusieurs bouts de codes, et recréer quelques trucs, pour arriver a mes fin et créer un script d'ajout de news. En faite, il fonctionne très bien, le seul problème est que lorsque l'on appuis sur le bouton "envoyer" la page ne bouge pas, c'est à dire qu'il n'y a pas de "redirection" sur la page pour voir ce commentaire, pour le voir on est obligé de faire précédent ou revenir sur la page.
Voici mon code :

PHP


<?
// Include de la connexion sql
include('sql.php') ;
// Requete sql pour récupérer les news
$requete_news = mysql_query("SELECT * FROM news ORDER BY id DESC",$connexion);
$news = mysql_num_rows($requete_news);
?>
<h4>Vos Commentaires :</h4>
<br><br>
<?
$i = 0;
while ($i < $news) {
// Variables date
$date = mysql_result($requete_news,$i,"date");
$annee = date("Y", $date);
$mois = date("m", $date);
$jour = date("d", $date);
$heure = date("H", $date);
$minute = date("i", $date);
$date = $jour."/".$mois."/".$annee." à ".$heure."h".$minute;
// Autres variables
$titre = mysql_result($requete_news,$i,"titre");
$source = mysql_result($requete_news,$i,"source");
$texte = mysql_result($requete_news,$i,"texte");
// Affichage de la news //
// Titre

echo '<table width="550" border="0" cellpadding="0" cellspacing="0" background="commentaires.jpg"><tr><td height="50" colspan="3" valign="top" align="left">Posté par <b><a href="mailto:'.$source.'" style="text-decoration:none; color:#000000;">'.$titre.'</a></b>, le '.$date.'</td></tr>
<tr>
<td width="22"></td>
<td width="506"></td>
<td width="22"></td>
</tr>
<tr>
<td width="22"></td>
<td valign="top" align="left" height="150" width="506">'.nl2br($texte).'</td>
<td width="22"></td>
</tr>
</table>
';
$i++; }
?>
<?
// Include de la connexion sql
include('sql.php') ;
?>
<fieldset id="mesComs"><legend><h3>Ajouter un commentaire</h3></legend>
<?
/// Début formulaire ///
$act = $_GET['act'];
if ($act == 'sub')
{
// Variables //
$date = time();
// Variables du formulaire déjà remplies
$titre = isset($_POST['titre']) ? $_POST['titre'] : '';
$titre = get_magic_quotes_gpc() ? stripslashes($titre) : $titre;
$source = isset($_POST['source']) ? $_POST['source'] : '';
$source = get_magic_quotes_gpc() ? stripslashes($source) : $source;
$texte = isset($_POST['texte']) ? $_POST['texte'] : '';
$texte = get_magic_quotes_gpc() ? stripslashes($texte) : $texte;
// Vérification des variables !
if (empty($titre)) { echo("<center>Vous n'avez pas mis de titre pour votre news !</center><hr>"); }
if (empty($texte)) { echo("<center>Vous n'avez pas mis de texte pour votre news !</center><hr>"); }
// Ajout de la news en fonction des vérification
if ($titre != "" and $texte != "")
{
$result = mysql_query("insert into news values ('','$titre','$texte','$source','$date')",$connexion);
echo("<center>Votre news a été ajoutée avvec succès !</center><hr>");
}
}
?>

<div align="left">
<form method="post" name="form" action="news_novel2.php?act=sub">

<label for="form_pseudo"><em>Nom ou pseudo&nbsp;:</em></label><br />

<input name="titre" value="" size="30" maxlength="120">
<br /></p>

<label for="form_email"><em>Email (facultatif) :</em></label><br />
<input name="source" value="" id="form_email" size="40" maxlength="120">
<br /></p>
<label for="form_commenaires"><em>Votre commentaire :</em></label><br>
<textarea name="texte" cols="35" rows="7"></textarea>
<br />
<input type="submit" name="Submit" value="Poster"></p>
</form></div> </fieldset>


Que faudrait-il que je rajoute pour que dès que j'ai appuyé sur le bouton envoyer, celui renvoit sur ma page, avec la commentaire ?
Merci d'avance
Thefanatics
Personne pour m'aider ? ...
Florian_
Avez-vous essayé de faire un header Localtion: afin qu'il recharche votre page icon_mrgreen.gif ?
Ldo
Bonjour,

le header() ne marchera pas puisqu'il affiche du code html avant

le plus simple c'est de placer la partie du code qui ajoute en base en début de fichier, avant la requête qui sélectionne les commentaires tout bêtement ...
Thefanatics
Salut, qu'entends tu par ceci ?
Merci d'avance
Ldo
suivant la numérotation du code du forum, tu prend de la ligne 49 jusqu'à 73, et tu le met en tout début de fichier entre la ligne 4 et la ligne 6

sinon les lignes 44 à 47 ne servent à rien, sql.php est déjà inclus en haut du fichier
Thefanatics
Salut, j'ai effectué ce que tu m'a dit, en effet, j'avais mis deux fois la même include pour le même fichier. Voici donc le nouveau code :

PHP

<?
// Include de la connexion sql
include('sql.php') ;
// Requete sql pour récupérer les news
$requete_news = mysql_query("SELECT * FROM news ORDER BY id DESC",$connexion);
$news = mysql_num_rows($requete_news);
?>
<h4>Vos Commentaires :</h4>
<br><br>
<?
$i = 0;
while ($i < $news) {
// Variables date
$date = mysql_result($requete_news,$i,"date");
$annee = date("Y", $date);
$mois = date("m", $date);
$jour = date("d", $date);
$heure = date("H", $date);
$minute = date("i", $date);
$date = $jour."/".$mois."/".$annee." à ".$heure."h".$minute;
// Autres variables
$titre = mysql_result($requete_news,$i,"titre");
$source = mysql_result($requete_news,$i,"source");
$texte = mysql_result($requete_news,$i,"texte");
// Affichage de la news //
// Titre

echo '<table width="550" border="0" cellpadding="0" cellspacing="0" background="commentaires.jpg"><tr><td height="50" colspan="3" valign="top" align="left">Posté par <b><a href="mailto:'.$source.'" style="text-decoration:none; color:#000000;">'.$titre.'</a></b>, le '.$date.'</td></tr>
<tr>
<td width="22"></td>
<td width="506"></td>
<td width="22"></td>
</tr>
<tr>
<td width="22"></td>
<td valign="top" align="left" height="150" width="506">'.nl2br($texte).'</td>
<td width="22"></td>
</tr>
</table>
';
$i++; }
?>
<?
/// Début formulaire ///
$act = $_GET['act'];
if ($act == 'sub')
{
// Variables //
$date = time();
// Variables du formulaire déjà remplies
$titre = isset($_POST['titre']) ? $_POST['titre'] : '';
$titre = get_magic_quotes_gpc() ? stripslashes($titre) : $titre;
$source = isset($_POST['source']) ? $_POST['source'] : '';
$source = get_magic_quotes_gpc() ? stripslashes($source) : $source;
$texte = isset($_POST['texte']) ? $_POST['texte'] : '';
$texte = get_magic_quotes_gpc() ? stripslashes($texte) : $texte;
// Vérification des variables !
if (emptyempty($titre)) { echo("<center>Vous n'avez pas mis de titre pour votre news !</center><hr>"); }
if (emptyempty($texte)) { echo("<center>Vous n'avez pas mis de texte pour votre news !</center><hr>"); }
// Ajout de la news en fonction des vérification
if ($titre != "" and $texte != "")
{
$result = mysql_query("insert into news values ('','$titre','$texte','$source','$date')",$connexion);
echo("<center>Votre news a été ajoutée avvec succès !</center><hr>");
}
}
?>
<fieldset id="mesComs"><legend><h3>Ajouter un commentaire</h3></legend>

<div align="left">
<form method="post" name="form" action="news_novel2.php?act=sub">

<label for="form_pseudo"><em>Nom ou pseudo&nbsp;:</em></label><br />

<input name="titre" value="" size="30" maxlength="120">
<br /></p>

<label for="form_email"><em>Email (facultatif) :</em></label><br />
<input name="source" value="" id="form_email" size="40" maxlength="120">
<br /></p>
<label for="form_commenaires"><em>Votre commentaire :</em></label><br>
<textarea name="texte" cols="35" rows="7"></textarea>
<br />
<input type="submit" name="Submit" value="Poster"></p>
</form></div> </fieldset>


Maintenant, cela m'affiche :
Fatal error: Call to undefined function emptyempty() in /home/thefanatics/www/news_novel2.php on line 260

Et cela n'effctue pas une "redirection".
Merci d'avance
Ldo
t'as pas déplacé le code comme je l'avais demandé :


PHP

<?
// Include de la connexion sql
include('sql.php') ;

/// Début formulaire ///
$act = $_GET['act'];
if ($act == 'sub')
{
// Variables //
$date = time();
// Variables du formulaire déjà remplies
$titre = isset($_POST['titre']) ? $_POST['titre'] : '';
$titre = get_magic_quotes_gpc() ? stripslashes($titre) : $titre;
$source = isset($_POST['source']) ? $_POST['source'] : '';
$source = get_magic_quotes_gpc() ? stripslashes($source) : $source;
$texte = isset($_POST['texte']) ? $_POST['texte'] : '';
$texte = get_magic_quotes_gpc() ? stripslashes($texte) : $texte;
// Vérification des variables !
if (emptyempty($titre)) { echo("<center>Vous n'avez pas mis de titre pour votre news !</center><hr>"); }
if (emptyempty($texte)) { echo("<center>Vous n'avez pas mis de texte pour votre news !</center><hr>"); }
// Ajout de la news en fonction des vérification
if ($titre != "" and $texte != "")
{
$result = mysql_query("insert into news values ('','$titre','$texte','$source','$date')",$connexion);
echo("<center>Votre news a été ajoutée avvec succès !</center><hr>");
}
}




// Requete sql pour récupérer les news
$requete_news = mysql_query("SELECT * FROM news ORDER BY id DESC",$connexion);
$news = mysql_num_rows($requete_news);
?>
<h4>Vos Commentaires :</h4>
<br><br>
<?
$i = 0;
while ($i < $news) {
// Variables date
$date = mysql_result($requete_news,$i,"date");
$annee = date("Y", $date);
$mois = date("m", $date);
$jour = date("d", $date);
$heure = date("H", $date);
$minute = date("i", $date);
$date = $jour."/".$mois."/".$annee." à ".$heure."h".$minute;
// Autres variables
$titre = mysql_result($requete_news,$i,"titre");
$source = mysql_result($requete_news,$i,"source");
$texte = mysql_result($requete_news,$i,"texte");
// Affichage de la news //
// Titre

echo '<table width="550" border="0" cellpadding="0" cellspacing="0" background="commentaires.jpg"><tr><td height="50" colspan="3" valign="top" align="left">Posté par <b><a href="mailto:'.$source.'" style="text-decoration:none; color:#000000;">'.$titre.'</a></b>, le '.$date.'</td></tr>
<tr>
<td width="22"></td>
<td width="506"></td>
<td width="22"></td>
</tr>
<tr>
<td width="22"></td>
<td valign="top" align="left" height="150" width="506">'.nl2br($texte).'</td>
<td width="22"></td>
</tr>
</table>
';
$i++; }
?>



<fieldset id="mesComs"><legend><h3>Ajouter un commentaire</h3></legend>

<div align="left">
<form method="post" name="form" action="news_novel2.php?act=sub">

<label for="form_pseudo"><em>Nom ou pseudo&nbsp;:</em></label><br />

<input name="titre" value="" size="30" maxlength="120">
<br /></p>

<label for="form_email"><em>Email (facultatif) :</em></label><br />
<input name="source" value="" id="form_email" size="40" maxlength="120">
<br /></p>
<label for="form_commenaires"><em>Votre commentaire :</em></label><br>
<textarea name="texte" cols="35" rows="7"></textarea>
<br />
<input type="submit" name="Submit" value="Poster"></p>
</form></div> </fieldset>


de cette manière pas besoin de redirection

sinon emptyempty() n'existe pas comme fonction donc le message d'erreur est normal
la fonction c'est empty()
Thefanatics
Super, merci de coup de main ça marche !
Thefanatics
Mais par contre j'ai une autre question, je veux garder une table commune a tous les commentaires (j'ai un formulaire sur différentes page allant à la même page). Ma question est donc :
Comment peux-t-on introduire un id afin de ne pas créer une table différente pour chaque formulaire ?
Merci d'avance
Ldo
tu rajoute une colone discu_id tout simplement

dans le select tu n'aura qu'a ajouter une condition WHERE discu_id = ...
Thefanatics
J'essaye et je vous tient au courrant icon_smile.gif
Thefanatics
Bonjour, je suis allé dans PhpMyAdmin, et j'ai voulu créer une nouvelle colonne de la façon suivante:
ALTER TABLE coms
ADD dicu_id


Dites moi l'erreur puisque cela ne marche pas (je ne connais quasiment pas le MYSQL)
Merci d'avance.
PS : Comment introduire le where dicu_id dans le code php s'il vous plait ?

Ldo
utilise phpmyadmin pour créer la colonne

dans l'onglet "structure" de la table
tu as une ligne "Ajouter [__] champ(s) o En fin de table o En début de table o Après [__]"

utilise ce moyen plutôt que d'essayer de faire la requête à la main

++
Thefanatics
Je n'ai jamais utilisé de cette manière la, que faut-il que je mette dans les formulaire ?
Bonne soirée
Ldo
dans la case tu met le nombre de champ que tu souhaite ajouter
dans ton cas, tape 1
la position à moins que ça ai une importance pour toi sinon tu touche pas, et tu fait "exécuter"

tu arrivera ensuite sur l'assistant pour insérer le champ, tu donne nom, type, valeur par default etc...
Thefanatics
Oui oui, mais justement c'est quand j'arrive au formulaire où il faut mettre valeur, etc que je ne vois pas trop ce qu'il faut mettre, je n'ai jamais procédé de cette manière la ! Si vous pourriez me guider s'il vous plaît. gourou.gif
Ldo
tu rajoute une colonne qui contiendra un identifiant de discutions c'est ça ? donc une valeur numérique

donc :
type SMALLINT (65535 discu possible ça devrait être suffisant je pense ...)
attributs : UNSIGNED
et tu coche la case INDEX, l'icône avec un éclair

le reste pas besoin de toucher ou remplir
t'as plus qu'a valider


pour les types sql de base, en lien une page récapitulative assez complète et facile à comprendre :
http://www.toutestfacile.com/sql/cours/pri...com%5Dtypes.php

++
Thefanatics
Pourquoi lorsque que j'ai fini de remplir les cases telles que tu me l'as dit, et que j'appuie sur Exécuter, phpMyAdmin m'affiche un deuxième formulaire :

Champs remplis :



Commande éxécuter appliquée :



Merci de votre aide !
Ldo
parce que tu as cliqué sur "exécuter" au lieu de "sauvegarder"
Thefanatics
Okay, c'est bon ça fonctionne.
Dans le code php, la colone discu_id aurra pour id 1,2, 3... ?
C'est à dire que à la place de SELECT * FROM news ORDER BY id DESC
Je met
SELECT * FROM news WHERE discu_id='1' ?
Bonne soirée
Ldo
oui voila, c'est exactement ça wink.gif
Thefanatics
Petit problème que j'avais pas vu avant :
Quand j'ai créé la colone discu_id, le formulaire d'ajout ne fonctionne plus => il dit que le commentaire a été enregistré avec succès, mais rien ne s'affiche !
En revanche si j'essaie sans la colonne, cela fonctionne... une idée ?
Ldo
fait voir le code
Thefanatics
Voici le code :

PHP


<?
// Include de la connexion sql
include('sql.php') ;

/// Début formulaire ///
$act = $_GET['act'];
if ($act == 'sub')
{
// Variables //
$date = time();
// Variables du formulaire déjà remplies
$titre = isset($_POST['titre']) ? $_POST['titre'] : '';
$titre = get_magic_quotes_gpc() ? stripslashes($titre) : $titre;
$source = isset($_POST['source']) ? $_POST['source'] : '';
$source = get_magic_quotes_gpc() ? stripslashes($source) : $source;
$texte = isset($_POST['texte']) ? $_POST['texte'] : '';
$texte = get_magic_quotes_gpc() ? stripslashes($texte) : $texte;
// Vérification des variables !
if (empty($titre)) { echo("<center>Vous n'avez pas mis de titre pour votre news !</center><hr>"); }
if (empty($texte)) { echo("<center>Vous n'avez pas mis de texte pour votre news !</center><hr>"); }
// Ajout de la news en fonction des vérification
if ($titre != "" and $texte != "")
{
$result = mysql_query("insert into news values ('','$titre','$texte','$source','$date')",$connexion);
echo("<center>Votre news a été ajoutée avvec succès !</center><hr>");
}
}




// Requete sql pour récupérer les news
$requete_news = mysql_query("SELECT * FROM news WHERE discu_id='1'",$connexion);
$news = mysql_num_rows($requete_news);
?>
<h4>Vos Commentaires :</h4>
<br><br>
<?
$i = 0;
while ($i < $news) {
// Variables date
$date = mysql_result($requete_news,$i,"date");
$annee = date("Y", $date);
$mois = date("m", $date);
$jour = date("d", $date);
$heure = date("H", $date);
$minute = date("i", $date);
$date = $jour."/".$mois."/".$annee." à ".$heure."h".$minute;
// Autres variables
$titre = mysql_result($requete_news,$i,"titre");
$source = mysql_result($requete_news,$i,"source");
$texte = mysql_result($requete_news,$i,"texte");
// Affichage de la news //
// Titre

echo '<table width="550" border="0" cellpadding="0" cellspacing="0" background="commentaires.jpg"><tr><td height="50" colspan="3" valign="top" align="left">Posté par <b><a href="mailto:'.$source.'" style="text-decoration:none; color:#000000;">'.$titre.'</a></b>, le '.$date.'</td></tr>
<tr>
<td width="22"></td>
<td width="506"></td>
<td width="22"></td>
</tr>
<tr>
<td width="22"></td>
<td valign="top" align="left" height="150" width="506">'.nl2br($texte).'</td>
<td width="22"></td>
</tr>
</table>
';
$i++; }
?>



<h3>Ajouter un commentaire</h3>

<div align="left">
<form method="post" name="form" action="news4.php?act=sub">

<em>Nom ou pseudo :</em><br />

<input name="titre" value="" size="30" maxlength="120" />
<br /></p>

<em>Email (facultatif) :</em><br />
<input name="source" value="" id="form_email" size="40" maxlength="120" />
<br /></p>
<em>Votre commentaire :</em><br>
<textarea name="texte" cols="35" rows="7"></textarea>
<br />
<input type="submit" name="Submit" value="Poster" /></p>
</form></div>
Ldo
pense à rajouter un champ hidden contenant ton dicsu_id dans le formulaire
et modifie la requête INSERT en conséquence
Thefanatics
Super, tout fonctionne, merci beaucoup !
Ldo
ok super smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.