Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2006, 13h35   #1
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Par défaut [SQL] aucun ajout dans la base de donnée impossible

Bonjour a tous , voila j'ai un souçis avec un script de commentaire sur des news.
le probleme ici ce n'est pas les messages d'erreur car je n'en ai pas .
je vais dire c'est plutôt un script qui ne fais rien du tout lol .
En fait lorsque je veux ajouter un commentaire et que j'ouvre la fenetre contenant le formulaire , je le remplis et j'envoi .
Mais ensuite je veux voir les commentaires et il sont toujours indiquer a 0 .
je me suis dit c'est peut etre un probleme d'affichage mais apperement je n'ecris rien dans la base de donnée et je me demande pour quel raison .
La requête me semble correct ?
Pour vous mettre sur la piste voici le script d'ajout de commentaire .

ajout_commentaire.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
se_connecter();
if (isset($_POST['pseudo'], $_POST['message'], $_POST['id_news']) AND !empty($_POST['pseudo']) AND !empty($_POST['message']) AND !empty($_POST['id_news']))
{
        // On asseptise les infos transmises par le formulaire
        $id_news = intval($_POST['id_news']);
        $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
        //$message = htmlentities($_POST['message'], ENT_QUOTES);
        $message = htmlentities(addslashes($_POST['message']));
        // On insère le nouveau commentaire dans la BDD, en précisant l'id de la news à laquelle le commentaire appartient
        mysql_query('INSERT INTO commentaires (pseudo, message, idnews, timestamp) VALUES ("'.$pseudo.'", "'.$message.'", "'.$id_news.'", "'.time().'")') or die(mysql_error().__LINE__);
}
$id_news = intval($_GET['id_news']);
mysql_close();
?>
<h1>Ajouter votre commentaire</h1>
<div style="padding-top:0%; padding-left:5%">
<form method="post" action="ajout_commentaire.php">
<table border="1">
        <tr><td style="background:#0099CC ">Pseudo : <input type="text" name="pseudo" size="30"/><br /></tr></td>
        <tr><td style="background:#0099CC "><textarea name="message" rows="5" cols="50"></textarea><br/></tr></td>
        <tr><td><input type="hidden" name="id_news" value="<?php echo $id_news; ?>" /></tr></td>
        <tr><td style="background:#0099CC "><input type="submit" value="Envoyer" />
        <input type="button" value="fermer" onClick="self.close()"></td></tr>
</table>
</form>
</div>
maintenant le script pour voir les commentaires associer a la news :
commentaire.php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
// ================================
// Affichage de la news à commenter
// ================================
$id_news = intval($_GET['id_news']); // cette variable contient l'id de la news sur laquelle on veut voir les commentaires
 
$requete = mysql_query('SELECT id, titre, contenu, pseudo, timestamp_validation FROM news WHERE id='.$id_news);
$donneesnews = mysql_fetch_assoc($requete);
 
/*
Pareil que les autres fois, vous affichez ce que vous voulez concernant la news
*/
// ======================
// Début de la pagination
// ======================
$limit_par_page = 15; // On définit une variable pour dire combien de commentaires on veut par page
if (isset($_GET['page']) && !empty($_GET['page']))
{
        $page = intval($_GET['page']);
}
else
{
        $page = 1;
}
$from = ($page - 1) * $limit_par_page;
// =======================
// Boucle des commentaires
// =======================
$requete = mysql_query('SELECT id, pseudo, message, timestamp FROM commentaires WHERE idnews='.$id_news.' LIMIT '.$from.', '.$limit_par_page);
while($donnees = mysql_fetch_assoc($requete))
{
        /*
        Vous affichez ce que vous voulez concernant les commentaires
        */
        print '<b>'.$donnees['pseudo'].'</b><br>';
        print $donnees['message'];
}
// ================================
// Dernière partie de la pagination
// ================================
$requete = mysql_query('SELECT COUNT(id) AS nb_commentaires FROM commentaires WHERE idnews='.$id_news);
$donnees = mysql_fetch_assoc($requete);
 
$nb_pages = ceil($donnees['nb_commentaires'] / $limit_par_page);
 
for ($i=1 ; $i<=$nb_pages ; $i++)
{
        if ($i == $page)
        {
                echo '['.$i.']';
        }
        else
        {
                echo '<a href="commentaires.php?id_news='.$id_news.'&amp;page='.$i.'">'.$i.'</a>';
        }
}
 
mysql_close();
?>
<script>
function ouvrirfenetre(nomdefenetre){
mafenetre=window.open(nomdefenetre,"nominterne","toolbar=no,directories=no,menubar=yes,status=no,height=300px,width=500px,top=200px,left=500px");
mafenetre.focus()}//ou mettre fullscreen=yes
</script>
<a class="info" onclick="ouvrirfenetre('ajout_commentaire.php?id_news=<?php echo $id_news; ?>')">Ajouter un commentaire<span>Ajouter un commentaire</span></a>
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 14h05   #2
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
ptete que ça marche avec c'que t'as fait mais t'as testé en remplaçant ton "bouton" par un submit ?
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 14h12   #3
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
mais ce n'est pas un bouton , c'est bien un submit
Citation:
ptete que ça marche avec c'que t'as fait mais t'as testé en remplaçant ton "bouton" par un submit ?
Citation:
<input type="submit" value="Envoyer" />
le bouton indiquer me sert pour fermer la fenêtre et non pour envoyer c'est pour cela que sa me tracasse de ne rien envoyer
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 14h23   #4
Membre actif
 
Inscription : mai 2004
Messages : 478
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 478
Points : 154
Points : 154
Envoyer un message via MSN à maysa
salut,

déjà

Code :
 if (isset($_POST['pseudo'], $_POST['message'], $_POST['id_news']) AND !empty($_POST['pseudo']) AND !empty($_POST['message']) AND !empty($_POST['id_news']))
je pense qu'il faut mieux mettre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 if (isset($_POST['pseudo']) AND ($_POST['message']) AND ($_POST['id_news']))
                      { if (!empty($_POST['message']) AND !empty($_POST['message']) AND !empty($_POST['id_news']))
                          {
                                // On asseptise les infos transmises par le formulaire
        $id_news = intval($_POST['id_news']);
        $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
        //$message = htmlentities($_POST['message'], ENT_QUOTES);
        $message = htmlentities(addslashes($_POST['message']));
        // On insère le nouveau commentaire dans la BDD, en précisant l'id de la news à laquelle le commentaire appartient
        mysql_query('INSERT INTO commentaires (pseudo, message, idnews, timestamp) VALUES ("'.$pseudo.'", "'.$message.'", "'.$id_news.'", "'.time().'")') or die(mysql_error().__LINE__);
                          }
}
c'est peut etre pour ça que rien n'est inséré..
maysa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 14h27   #5
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
Citation:
Envoyé par gtraxx
mais ce n'est pas un bouton , c'est bien un submit
toutes mes confuses, j'ai lu trop vite

t'es sûr que c'est bien l'insertion qui se fait mal, et pas la lecture ?

'SELECT id, titre, contenu, pseudo, timestamp_validation FROM news WHERE id='.$id_news

en général je mets des quotes autour de la valeur du paramètre, essaie
"SELECT id, titre, contenu, pseudo, timestamp_validation FROM news WHERE id='$id_news'"
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 14h53   #6
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Ben pour etre sur je verifie a chaque fois dans phpmyadmin si la base se remplis et je n'ai aucune donnée d'inscrite
pour ce faire il y as dans le script un code pour afficher le nombre de commentaire et bien entendu j'ai toujours 0 qui s'affiche
pensez vous que c'est a cause de l'ordre dans ma table sql ??
j'ai d'abord id,idnews,pseudo,message,timestamp Doit je modifier la requête sql

Code :
mysql_query('INSERT INTO commentaires (pseudo, message, idnews, timestamp) VALUES ("'.$pseudo.'", "'.$message.'", "'.$id_news.'", "'.time().'")') or die(mysql_error().__LINE__);
Et changer l'ordre des INSERT ????
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h49   #7
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Apres quelque test je me rend compte que je n'arrive pas a ecrire dans la base de donnée et non plus a lire les commentaires .
En gros il se passe quelque chose avec les requetes ou les variables
En mettant manuellement dans la base de donnée , un commentaire je n'ai rien qui s'affiche mais l'incrementation se fais bien .....????????
Donc j'ai un souçis avec l'envoi et la lecture des commentaires
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h00.


 
 
 
 
Partenaires

Hébergement Web