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 17/08/2011, 01h31   #1
Invité de passage
 
Inscription : août 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 1
Points : 0
Points : 0
Par défaut système news avec commentaires

bonjour,

Je fais en ce moment un système de commentaire sur une news et j'ai une erreur que j'ai du mal à résoudre.
donc en gros je suis sur un page d’accueil avec mes news , là quand on clique sur une news on arrive a ça fiche entière et en dessous y'a un formulaire pour les commentaires .
mais à chaque fois que je clique sur envoyer le formulaire rentre bien dans ma base de données mais j'ai toujours ce message d'erreur:
Notice: Undefined variable: id in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\TFE\voir.php on line 104

Pourtant je fais des test avec echo et voila ça m'indique bien le n° de l'id

merci d'avance,

Au revoir

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<?php 
session_start();
require('config.php');
 
if(!empty($_POST))
{
  extract($_POST);
  $valid = true; 
 
  if(empty($login))
  {
    $valid = false;
    $erreurpseudo = 'Renseignez ce champs';
  }
 
  if(!empty($login) && strlen($login)<3)
  {
    $valid = false;
    $erreurlogin = '3 caractères minimum';
  }
 
  if(empty($email))
  {
    $valid = false;
    $erreurmail = 'Renseignez ce champs';
  }
 
  if(!empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL) === false)
  {
    $valid = false;
    $erreurmail = 'Adresse e-mail invalide';
  }
 
  if(!empty($url) && filter_var($url, FILTER_VALIDATE_URL) === false)
  {
    $valid = false;
    $erreururl = 'Url invalide';
  }
 
  if(empty($commentaire))
  {
    $valid = false;
    $erreurcommentaire = 'Renseignez votre commentaire';
  }
 
  if(!empty($commentaire) && strlen($commentaire)<15)
  {
    $valid = false;
    $erreurcommentaire = '15 caractères minimum';
  }
  if($valid)
  {
    $login = strip_tags($login);
    $email = strip_tags($email);
    $url = strip_tags($url);
    $commentaire = strip_tags($commentaire);
 
	$req = $bdd->prepare('INSERT INTO commentaire (login,email,url,commentaire) VALUES (:login,:email,:url,:commentaire)');
    $req->execute(array(
      'login'=>$login,
      'email'=>$email,
      'url'=>$url,
      'commentaire'=>$commentaire
    ));
    $req->closeCursor();
 
    unset($login);
    unset($email);
    unset($url);
    unset($commentaire);
  }
}
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hof-ten-berg</title>
<link href="css/design.css" rel="stylesheet" type="text/css" media="screen" />
<?php include('script.php'); ?>
</head>
 
<body>
 
    <!--début container-->
    <div id="container">
 
    	<?php include('banner.php'); ?>
 
        <!--début main-->
        <div id="main">
 
        	<!--début content-->
            <div id="content">
 
				<?php
				if(!empty($_GET['id']))
				{
					$id = $_GET['id'];
					echo $id;
				}
				$req = $bdd->prepare('SELECT * FROM news WHERE id=:id');
    			$req->execute(array('id'=>$id));
   	 			while($data = $req->fetch(PDO::FETCH_OBJ))
    			{
 
				?>
 
                <!--news1-->
            	<div class="news-complet">
 
                    	<div class="topic-complet">
 
                        	<h2><?php echo $data->titre; ?></h2>
                        	<p class="post">Posté le <?php echo date('d/m/Y',strtotime($data->date)); ?> à <?php echo date('H:i',strtotime($data->date)); ?></p>
                        	<hr/>
 
                        	<img class="illustration" src="images/img-article1.png" alt="illustration" />
 
                        	<p class="text"><?php echo $data->contenu; ?></p>
 
                        </div>
 
				</div>
                <!--fin news1-->
 
                <?php
				}
    			$req->closeCursor();
    			?>
 
                <div id="form">
 
      				<h3>Laissez un commentaire</h3>
 
      				<form action="voir.php" method="post" id="formulaire">
 
        				<label for="pseudo">Pseudo :</label>
        				<div class="error"><?php if(isset($erreurlogin)) echo $erreurlogin;?></div>
        				<input type="text" name="login" id="login" value="<?php if(isset($login)) echo $login;?>" />
 
        				<label for="email">E-mail :</label>
        				<div class="error"><?php if(isset($erreurmail)) echo $erreurmail;?></div>
        				<input type="text" name="email" id="email" value="<?php if(isset($email)) echo $email;?>" />
 
        				<label for="pseudo">Site Web :</label>
        				<div class="error"><?php if(isset($erreururl)) echo $erreururl;?></div>
        				<input type="text" name="url" id="url" value="<?php if(isset($url)) echo $url;?>" />
 
        				<label for="pseudo">Commentaire:</label>
        				<div class="error"><?php if(isset($erreurcommentaire)) echo $erreurcommentaire;?></div>
        				<textarea name="commentaire" id="commentaire"><?php if(isset($commentaire)) echo $commentaire;?></textarea>
 
        				<input type="submit" value="Envoyer" />
 
      				</form>
 
    			</div>
 
            </div>
            <!--fin content-->
 
            <?php include('sidebar.php'); ?>
 
        </div>
        <!--fin main-->
 
        <?php include('footer.php'); ?>
 
    </div>
    <!--fin container-->
 
</body>
</html>
saeba87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 01h34   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
visiblement $_GET['id'] n'existe pas verifie tes valeurs et met ta requête dans ta condition :


ps : je te déconseille d'utiliser extract
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 13h06   #3
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Remplaces
Code :
if(!empty($_GET['id']))
par

Code :
if(isset($_GET['id']) && !empty($_GET['id']))
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 17/08/2011, 14h10   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
Envoyé par Thes32 Voir le message
Remplaces
Code :
if(!empty($_GET['id']))
par

Code :
if(isset($_GET['id']) && !empty($_GET['id']))
La directive empty est un surensemble de isset, il n'est pas nécéssaire de mettre les deux.

Attention: isset vérifie l'existence d'une référence alors que empty vérifie en plus la non-nullité de sa valeur. Les valeurs interprétées comme vides sont:
- chaine vide
- zéro (entier ou flotant)
- chaine contenant uniquement un zéro (entier)
- tableau vide
- null
- false

Dans le doute: testez.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 10h52   #5
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Code :
1
2
3
4
5
6
7
8
 
if(!empty($_GET['id']))
{
   $id = $_GET['id'];
   echo $id;
}
$req = $bdd->prepare('SELECT * FROM news WHERE id=:id');
$req->execute(array('id'=>$id));
Dans ton code, tu valorises la variable $id si $_GET['id'] existe.
Donc si $_GET['id'] n'éxiste pas, tu valorises jamais $id et ta ligne
Code :
$req->execute(array('id'=>$id));
plante.

pour moi tu devrais faire :

Code :
1
2
3
4
5
6
7
8
if(!empty($_GET['id']))
{
   $id = $_GET['id'];
   echo $id;
 
   $req = $bdd->prepare('SELECT * FROM news WHERE id=:id');
   $req->execute(array('id'=>$id));
}
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 11h00   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
gare à l'id 0 quand même, ça peut arriver
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 15h40   #7
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Citation:
Envoyé par Benjamin Delespierre Voir le message
gare à l'id 0 quand même, ça peut arriver
Ah bah oui du coup il faudra utiliser :

Code :
1
2
3
4
5
6
7
8
if((isset($_GET['id'])) && (is_int($_GET['id'])))
{
   $id = $_GET['id'];
   echo $id;
 
   $req = $bdd->prepare('SELECT * FROM news WHERE id=:id');
   $req->execute(array('id'=>$id));
}
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 16h22   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Ou plus simplement utiliser filter_input:
Code :
1
2
3
if ($id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, array('min_range' => 0))) { 
  // do something...
}
C'est d'ailleurs un poil plus rapide que isset, la validation du range en prime
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre 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 06h47.


 
 
 
 
Partenaires

Hébergement Web