Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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/04/2011, 14h44   #1
Invité de passage
 
Inscription : février 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 2
Points : 0
Points : 0
Par défaut Problème système de commentaire

Bonjour,
Pour un projet scolaire, je dois créer un site avec pour but de pouvoir commenter différentes vidéos ou autres.

J'utilise une page de commentaire nommée "testcom.php" et une page pour récupérer
mes informations qui se nomme "recupcom.php".

Le soucis c'est qu'avec ses deux pages mon commentaire ne s'enregistre pas dans ma Base de données, alors que si j'utilise en une seule page mon commentaire s'enregistre mais avec des erreurs "normales" dût à l'if isset. D'ou l'utilité de deux pages.

testcom.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
66
67
<?php
SESSION_start();
// Connexion au serveur mysql
$connect = mysql_connect("localhost", "root", "")
 
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db('bds', $connect);
 
if ( isset($_SESSION['identifiant']) )
{
	$result=mysql_query("select pseudo_client from client where pseudo_client='".$_SESSION['identifiant']."'");
 
	$res = mysql_fetch_array($result);
	$nom = $res[0];
}
else
	$nom = '';
 ?>
 
<html>
<head>
 
<script>
function verif(){
if (document.form.contenue.value=='') {
alert("Vous n'avez pas écrit pas de commentaire");
}else{
document.form.submit();
}
}
</script>
 
</head>
<body>
 
<img src="montagne.jpg"> 
<br />
<br />
 
<br />
<br /> 
<br /> 
 
 
 
<?php 
				if (isset ($_SESSION['identifiant'])){
				 print('
				  <form name="form" method="post" action="recupcom.php"> <table border="1">
<title> COM </title>
<tr> <td> '.$nom.' </td> <td> </td>
<tr><td> Commentaire: <br/><TEXTAREA name="contenue" rows="5" COLS="60"></TEXTAREA></td></tr>
<tr><td align="center"> <br><input type="button" value="Enregistrer" onClick="verif();"> </td></tr>
</table> </form>');
				 }else{
 
				 print('
				Vous devez vous connecter pour poster un commentaire!				
				');
				}
  ?>
 
 
<body>
</body>
</html>

recupcom.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
<?
SESSION_start();
 
// Connexion au serveur mysql
$connect = mysql_connect("localhost", "root", "")
or die('Impossible de se connecter : ' . mysql_error());
 
// sélection de la base de données
mysql_select_db('bds', $connect);
 
//Récupérer les données 
$contenue=$_POST['contenue'];
 
// puis faire la requete
	$sql = "INSERT INTO commentaire (contenue_com) VALUES ('".$contenue."')";
	$res = mysql_query($sql, $connect);
 
 
 ?>
<html>
<head>
   <script type="text/javascript">
<!--
window.location.replace("testcom.php");
-->
</script>
</head>
<body>
</body>
</html>
Je ne vois vraiment pas d'où vient l'erreur, pourriez-vous m'éclairer svp?
Car après quelques heures de recherche, je stagne toujours.

Je vous remercie d'avance de vos réponses futures.
Cordialement,
diEkk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 17h53   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il n'y a pas de necessité d'avoir 2 pages ; d'ailleurs ici tu fais la vérification de l'utilisateur sur le formulaire mais plus sur la requête d'insertion alors que c'est la qu'elle serait essentielle.

Mais sinon ton code ne comporte pas d'erreur qui empecherait l'insertion.

Il faut par contre échapper les valeurs:
Code :
$contenue= mysql_real_escape_string($_POST['contenue']);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 18h45   #3
Invité de passage
 
Inscription : février 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 2
Points : 0
Points : 0
Si je le met en une seule page,

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
 <?php
SESSION_start();
// Connexion au serveur mysql
$connect = mysql_connect("localhost", "root", "")
 
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db('bds', $connect);
 
//Récupérer les données 
$contenue= mysql_real_escape_string($_POST['contenue']);
 
// puis faire la requete
	$sql = "INSERT INTO commentaire (contenue_com) VALUES ('".$contenue."')";
	$res = mysql_query($sql, $connect);
 
if ( isset($_SESSION['identifiant']) )
{
	$result=mysql_query("select pseudo_client from client where pseudo_client='".$_SESSION['identifiant']."'");
 
	$res = mysql_fetch_array($result);
	$nom = $res[0];
}
else
	$nom = '';
	?>
 
<html>
<head>
 
<script>
function verif(){
if (document.form.contenue.value=='') {
alert("Vous n'avez pas écrit pas de commentaire");
}else{
document.form.submit();
}
}
</script>
 
</head>
<body>
 
<img src="montagne.jpg"> 
<br />
<br />
 
<br />
<br /> 
<br /> 
 
 
 
<?php 
				if (isset ($_SESSION['identifiant'])){
				 print('
				 <table border="1">
				  <form name="form" method="post">
 
<title> COM </title>
<tr> <td> '.$nom.' </td> <td> </td>
<tr><td> Commentaire: <br/><TEXTAREA name="contenue" rows="5" COLS="60"></TEXTAREA></td></tr>
<tr><td align="center"> <br><input type="button" value="Enregistrer" onClick="verif();"> </td></tr>
</table> </form>');
				 }else{
 
				 print('
				Vous devez vous connecter pour poster un commentaire!				
				');
				}
  ?>
 
 
<body>
</body>
</html>
Si je saisis un commentaire, ma BDD reçoit le contenue du commentaire + un commentaire avec un contenue vide.

Et là non plus, je ne vois pas le "pourquoiducomment" de cette erreur.
En tous cas merci de ta réponses

Cordialement,
diEkk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 19h13   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pour l'erreur "undefined" il faut comme tu le sais pourtant, utiliser isset() pour controler si tu as reçu la valeur attendue ou non.

Pour la double insertion, cela peut se produire quand on a de mauvaises définition CSS comme url="" ou link=""
sabotage 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 06h02.


 
 
 
 
Partenaires

Hébergement Web