[RESOLU] probleme zone de commentaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] probleme zone de commentaire

Re: probleme zone de commentaire

par mopolkiio » 28 sept. 2012, 15:28

Merci a tous pour vos réponse, je vien d'essayer ton script sirakawa, et oui j'ai envie d'avancer dans la programmation, un message d'erreur ma été envoyer tel que : Account Resource Limits Reached

The website is temporarily unable to server your request as it exceeded its allocated resource limit.
Please try again later, once the site is using less resources access will be automatically re-allowed

If you are seeing this message regularly this means your site is exceeding limits allowed for a free hosting site, you should consider upgrading at Securesignup.net.

je pense qu'il faut de toute maniere que je change d'hebergeur car c'est de leur coter le probleme.

Merci de toute vos réponse et du temp que vous m'avez conssacré :) je vais essayer d'avancer et de progresser via vos conseil et des site d'apprentissage :)

Re: probleme zone de commentaire

par sirakawa » 28 sept. 2012, 08:41

I Je n'avais pas pris garde à une confusion:
Quand on utilise mysql
mysql_connect() sert à se connecter au serveur mysql dans lequel il existe une ou plusieurs bases de données auxquelles on accède par :
mysql_select_db()
Et ce sont ces bases de données qui contiennent les tables.
========================================================================================================
La syntaxe que tu utilises suppose que tu as une base de données livre_or contenant une table livre_or.
=========================================================================================================

Cependant, il est conseillé de préférer mysqli ou pdo
Peu familier avec pdo, j'ai donc adapté ton script à mysqli.
Tester ce qui suit en modifiant juste les messages et la présentation jusqu'à ce que ça fonctionne aussi bien en local que chez l'hébergeur
jusqu'à être sûr de toi. Après, on verra la consultation.
Chez l'hébergeur, ça m'étonnerait que le user soit 'root'

Ce qui donne cette joyeuse élucubration:
<?php
	// billets est la base de données qui me sert pour les tests; elle contient une table livre_or
	$connect_ok = mysqli_connect("localhost", "utilisateur", "mot_de_passe", "billets");
	
	if ($connect_ok === false)
	{
		print "erreur de connexion".mysqli_connect_error();
		exit;
	}

//mysql_select_db("billets");

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysqli_real_escape_string($connect_ok, htmlspecialchars($_POST['pseudo']));
$message = mysqli_real_escape_string($connect_ok, htmlspecialchars($_POST['message']));
$message = nl2br($message);

	$requete = "INSERT INTO livre_or SET `pseudo` = '$pseudo', `message` = '$message'";
	$resultat = mysqli_query ($connect_ok, $requete);
	if ($resultat === true)
	{
		print "commentaire enregistré";
	}
	else
	{
		print "problème d'enregistrement".mysqli_error($connect_ok);
	}
}	
?>
II Conception de la base de données:
Sauf si n'importe qui peut ajouter un commentaire, il vaudrait mieux avoir :
une table utilisateurs avec CHARACTER SET utf8 COLLATE utf8_bin);
id_utilisateur integer, auto-increment, clef primaire
pseudo : text
une table livre_or
id_commentaire integer auto-increment clef primaire
id_utilisateur recopié depuis la table utilisateur
message : pris depuis le formulaire.

On ne se contenterait pas alors de vérifier que pseudo et message ne sont pas vides. On testerait si le pseudo est présent dans la table utilisateurs.

Re: probleme zone de commentaire

par AB » 28 sept. 2012, 03:56

Quand on est débutant, ou qu'il y a de gros problèmes, faut séparer les problèmes et faire les choses par étapes pour pouvoir avancer.
Dans une page séparée tu fais d'abord des requêtes pour voir si elles fonctionnent. Quand ça marche tu continue en faisant un formulaire, tu fais des tests pour le récupérer et ensuite tu alimente ta base de donnée avec le formulaire, etc.

Et puis bon un livre d'or, si tu veux qu'il ne soit pas trop spammé, il faudra prévoir un chapta... Pour dire que tu n'es pas au bout de tes peines. Si php t'intéresse et que tu veux progresser dans la programmation, continues c'est un bon exercice, mais si c'est juste en passant tu aurais plus intérêt à en prendre un tout fait.

Re: probleme zone de commentaire

par mopolkiio » 27 sept. 2012, 22:20

Merci de toute tes réponse sirakawa, malgré ton aide je n'arrive en rien a faire ce que je veut :( il me reste plus que 3 options soit j'arrête ce projet de livre d'or soit je change d'hebergeur et j'en trouve un gratuit avec cgi-bin et j'installe un livre d'or tout fait (bien que c'est loin de ce que j'ai envi de faire) je voudrait pouvoir le faire seul mais j'ai pas suffisament d'expérience, soit 3 eme option je t'implore a genou de modifier mon script de façon a ce que mon livre d'or fonctionne :$

Re: probleme zone de commentaire

par sirakawa » 27 sept. 2012, 21:18

Non, ce n'est pas un nouveau problème, c'est simplement la visualisation du problème que pose cette partie:
quand à print_r($_GET); il répond array(), ça veut simplement dire que le tableau $_GET est vide.
Parce que tes
echo '<a href="livre_or.php?page=' . $i . '">' . $i . '</a> ';
ne modifient en rien la variable $_GET;
Je le savais en préconisant ce print_r()....;
Explication sommaire tirée de la doc php :(http://php.net/manual/fr/reserved.variables.get.php)
I
soit le script example.com:
<?php
echo 'Bonjour ' . htmlspecialchars($_GET["name"]) . '!';
?>
si on l'appelle par un truc dans le genre de::
http://example.com/?name=Yannick
il donnera:
Bonjour Yannick !

Donc ça ne peut pas fonctionner dans ton cas.

Mais il existe des formulaires dans le genre de
print  "Page : 
<form method = 'post' action ='livre_or.php'>";
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
print "<input type = 'radio' name = 'page_voulue' value = '$i'><br />";
}
print "<button type= 'submit'>Choix fait</button>
</form>"
qui ne permet qu'un seul choix à la fois et que l'on récupère par $var = isset($_POST['page_voulue']) ? ($_POST['page_voulue']: "" ;
Il existe au moins une autre solution avec <un <select>... plus joli au niveau de la présentation et qui permet, selon la programmation un ou plusieurs choix.
En mettant method='post', les valeurs ne passent pas par la ligne où sont les URL, en mettant method = 'get', les valeurs passent par la ligne des URL. On admet en général que post est plus solide que get.

Re: probleme zone de commentaire

par mopolkiio » 27 sept. 2012, 20:41

sa marche toujours pas :s quand on resou un probleme un autre revien de suite le script donne mtn sa :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/tru ... "></script>
<![endif]-->
<link rel="shortcut icon" href="icone.ico" type="image/x-icon"/>
<link rel="icon" href="icone.ico" type="image/x-icon"/>
<title>Commentaires</title>
</head>
<style type="text/css">
form, .pages
{
text-align:center;
}
</style>
</head>
<body>

<form method="post" action="livre_or.php">
<p>Laissez vos commentaires ici :)</p>
<p>
Pseudo (utilisez le meme qu'en jeu pour vous faire reconnaitre) :</br> <input name="pseudo" /><br />
commentaires :<br />
<textarea name="message" rows="8" cols="35"></textarea><br />
<input type="submit" value="Poster" />
</p>
</form>

<p class="pages">

<?php

mysql_connect("sql101.byethost14.com", "b14_11388339", "Mot_de_passe");
mysql_select_db("livre_or");
$connect_ok =mysql_connect("sql101.byethost14.com", "b14_11388339", "Mot_de_passe");
if ($connect_ok === false)
{
print "problème de connexon";
exit;
}
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);

mysql_query("INSERT INTO livre_or VALUES('', '" . $pseudo . "', '" . $message . "')");
}




$nombreDeMessagesParPage = 20;
//$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livre_or');
//plutôt:
$requete = "SELECT COUNT(*) AS nb_messages FROM livre_or";
$resultat = mysql_query($requete);
if ($resultat === false)
{
//il y a un problème dans la requête
}
else
{
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
}


echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livre_or.php?page=' . $i . '">' . $i . '</a> ';
}


//ajoute
print_r($_GET);
//à défaut de résoudre, ça explique


if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}


$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_query ($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a ecrit :<br />' . $donnees['message'] . '</p>';
}

mysql_close();
?>

</body>
</html>


et sur mon livre d'or a coter de 'page : ' est écrit Array () mais plus de signalement de bug sur la page a part sa et quand j'envoi un commentaire pour tester sa marche toujours pas .

Re: probleme zone de commentaire

par sirakawa » 27 sept. 2012, 20:07

j'ai mis ton code et j'ai du retirer <?php et ?> pck il me disait que c'était une erreur et maintenant sa me marque sa Fatal error: Function name must be a string in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 60
la ligne 60 dans mon script correspond a la ligne 5 du tien soit $resultat = $mysql_query($requete); dsl de vous embeter avec sa en plus je comprend pas tres bien puisque avant j'avait jamais essayer de me lancer dans le php sa avait l'air trop compliquer et c'est compliquer lol j'espere un jour je m'en sortirai comme vous ^^'
Je suis au-dessous de tout:
$resultat = mysql_query($requete);

Re: probleme zone de commentaire

par mopolkiio » 27 sept. 2012, 19:07

je me suis rendu compte en postant que j'avait pas mis ^^ j'ai modifier mon post

Re: probleme zone de commentaire

par sirakawa » 27 sept. 2012, 19:06

j'ai mis ton code et j'ai du retirer <?php et ?> pck il me disait que c'était une erreur et maintenant sa me marque sa Fatal error: Function name must be a string in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 60
C'est quoi la ligne 60?

Re: probleme zone de commentaire

par mopolkiio » 27 sept. 2012, 19:02

j'ai mis ton code et j'ai du retirer <?php et ?> pck il me disait que c'était une erreur et maintenant sa me marque sa Fatal error: Function name must be a string in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 60
la ligne 60 dans mon script correspond a la ligne 5 du tien soit $resultat = $mysql_query($requete); dsl de vous embeter avec sa en plus je comprend pas tres bien puisque avant j'avait jamais essayer de me lancer dans le php sa avait l'air trop compliquer et c'est compliquer lol j'espere un jour je m'en sortirai comme vous ^^'

Re: probleme zone de commentaire

par sirakawa » 27 sept. 2012, 16:09

Cette partie a l'air de fonctionner:
$nombreDeMessagesParPage = 20;
//$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livre_or');
//plutôt:
$requete = "SELECT COUNT(*) AS nb_messages FROM livre_or";
$resultat = $mysql_query($requete);
if ($resultat === false)
{
//il y a un problème dans la requête
}
else
{
    $donnees = mysql_fetch_array($retour);
    $totalDesMessages = $donnees['nb_messages'];
    $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
}


echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livre_or.php?page=' . $i . '">' . $i . '</a> ';
}

<?php
//ajoute
print_r($_GET);
//à défaut de résoudre, ça explique


if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
?>

Re: probleme zone de commentaire

par mopolkiio » 27 sept. 2012, 14:04

Merci pour vos réponse, Sirakawa j'ai fait ce que tu as dit et ma paga n'affiche plus le message d'erreur mais tjr rien sur ma page quand je commente...

Re: probleme zone de commentaire

par tymo » 27 sept. 2012, 12:10

Voila ta requête bien formée ^^

Code : Tout sélectionner

$query = "INSERT INTO `nomdetabase`.`livre_or` (`id` ,`pseudo` ,`message`)VALUES (NULL , '$pseudo', '$message');";
(non testé mais ça devrait le faire)

A la place de nomdetabase, tu met le nom de ta DB, ou alors tu supprimes `nomdetabase`.

Et cette requête fonctionne à condition que le champ id soit en auto increment.

Re: probleme zone de commentaire

par sirakawa » 27 sept. 2012, 08:13

Montre le code qui conduit à ce message d'erreur:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$requete = "INSERT INTO livre_or (pseudo, message) VALUES ('$pseudo ', '$message' at line 1
Pour le site:
Il faut tester le résultat de la connexion:
$connect_ok =mysql_connect(....);
if ($connect_ok === false)
{
print "problème de connexon";
exit;
}
//si on est ici c'est que la connexion a fonctionné; on peut sélectionener la table.....

Re: probleme zone de commentaire

par mopolkiio » 27 sept. 2012, 01:13

Merci :) j'ai essayer et sa ma dit sa me dit sa :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$requete = "INSERT INTO livre_or (pseudo, message) VALUES ('$pseudo ', '$message' at line 1

ou bien via mon site je trouve sa :

donc il y a ma zone de commentaire et en dessous ecrit ceci : en gros sa veut dire que j'ai pas les bon ID ? pourtant j'ai mit tout comme marquer dans l'e-mail d'inscription a byethost


Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'b14_11388339' (4) in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 36

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'root'@'localhost' (using password: NO) in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 37

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 37

Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: NO) in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 51

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 51

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 52
Page :


Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: NO) in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 79

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 79

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 81

Warning: mysql_close(): no MySQL-Link resource supplied in /home/vol12/byethost14.com/b14_11388339/htdocs/livre_or.php on line 86