[RESOLU] probleme zone de commentaire

Eléphanteau du PHP | 10 Messages

26 sept. 2012, 16:56

Bonjour a tous voila j'ai voulu créer une zone de commentaire pour mon site une espece de livre d'or quoi, mais j'ai beau vérifier mon script ligne par ligne rien n'y fait sa ne marche pas... voici le script j'espere que vous pourrez m'aider je suis vraiment débutant et j'ai un peu de mal avec tout 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("username", "sdz", "password");
mysql_select_db("livre_or");

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');
$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> ';
}
?>

</p>

<?php



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_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}

mysql_close();
?>

</body>
</html>

Mammouth du PHP | 2278 Messages

26 sept. 2012, 17:43

Ce n'est pas la syntaxe de INSERT:
soit:
INSERT INTO nom_de_table (col1,col2) VALUES(15,36);
soit:
insert into mots set mot="truluku", categorie ="POIL";
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 10 Messages

26 sept. 2012, 20:37

Merci de repondre aussi vite :) mais je suis vraiment nul et je sais pas comment modifier de la bonne façon la ligne (sans faire encore plus de conneries)

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

dans ma table 'livre_or' j'ai 3 colonne 1=id (type = int(10), atribut = unsigned, null = non, defaut = aucune, extra = auto_incremant)
2=pseudo (type = varchar(255), inclassement = latin1_swedish_ci , null = oui, defaut =null,)
3=message (type =text, inclassement = latin1_swedish_ci , null = oui, defaut =null,)

y a t-il d'autre chose a modifier ? et si oui comment ? :s

Mammouth du PHP | 2278 Messages

26 sept. 2012, 20:46

Merci de repondre aussi vite :) mais je suis vraiment nul et je sais pas comment modifier de la bonne façon la ligne (sans faire encore plus de conneries)

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

dans ma table 'livre_or' j'ai 3 colonne 1=id (type = int(10), atribut = unsigned, null = non, defaut = aucune, extra = auto_incremant)
2=pseudo (type = varchar(255), inclassement = latin1_swedish_ci , null = oui, defaut =null,)
3=message (type =text, inclassement = latin1_swedish_ci , null = oui, defaut =null,)

y a t-il d'autre chose a modifier ? et si oui comment ? :s
on peut alors afficher la requête si ça ne marche pas:
$requete = "INSERT INTO livre_or (pseudo, message) VALUES ('$pseudo ', '$message')";
mysql_query ($requete);
ou plus facile quand _il y a beaucoup de champs:
$requete = "INSERT INTO livre_or set pseudo='$pseudo' , message = '$message'";
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 10 Messages

26 sept. 2012, 21:25

Je vien d'essayer ce que tu m'a dit, soit c'est moi qui est mal fait (surement sa) soit sa marche pas, les commentaire ne s'affiche toujours pas sur ma page :'( sa reload la page mais sa nettoie juste les zone de texte et rien de plus, rien ne va dans ma base de donner qui reste a 0 o, et rien ne vas sur ma page... de temps en temps en modifiant la ligne mysql_query("INSERT INTO livre_or VALUES('', '" . $pseudo . "', '" . $message . "')"); plus rien ne s'affiche Oo je suis complétement perdu (c'est ma premiere action utilisant du php et c'est pas très concluant )

merci quand meme pour tes reponse qui sont rapide. :)

ViPHP
AB
ViPHP | 5818 Messages

26 sept. 2012, 23:28

sirakawa t'a donné une méthode pour débugguer mais il faut faire afficher le résultat pour voir si ta requête est bien formée.
$requete = "INSERT INTO livre_or (pseudo, message) VALUES ('$pseudo ', '$message')"
echo $requete;
mysql_query($requete) or die(mysql_error());
Ensuite tu pourras copier le résultat du echo et le coller dans une fenêtre mysql de phpmyadmin pour voir comment ta requête est exécutée.

Tu peux aussi avoir des informations en faisant afficher les erreurs pendant la phase de développement avec mysql_error() comme indiqué ci dessus (ou plutôt que d'utiliser or die(mysql_error()) il y a d'autres méthodes ici)

Eléphanteau du PHP | 10 Messages

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

Mammouth du PHP | 2278 Messages

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.....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 1 Messages

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.

Eléphanteau du PHP | 10 Messages

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...

Mammouth du PHP | 2278 Messages

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;
}
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 10 Messages

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 ^^'
Modifié en dernier par mopolkiio le 27 sept. 2012, 19:06, modifié 1 fois.

Mammouth du PHP | 2278 Messages

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?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 10 Messages

27 sept. 2012, 19:07

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

Mammouth du PHP | 2278 Messages

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);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD