Livre d'or (site du zero)

Résolu
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008 - 9 juil. 2008 à 22:14
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008 - 11 juil. 2008 à 21:08
Bonjour à tous. Je voudrais mettre un livre d'or sur le site que je suis en train de faire. J'ai suivi le TP du site du zero dont voici le code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<htmlxmlns= "http://www.w3.org/1999/xhtml"xml:lang="fr">
<head>
<title>Livre d'or</title>
<metahttp-equiv="Content-Type"content="text/html; charset=iso-8859-1"/>

<style type="text/css">
form,.pages
{
text-align:center;
}
</style>
</head>

<formmethod="post"action="livreor.php">
Mon site vous plaît ? Laissez-moi un message !

Pseudo : name="pseudo"/>
/>
Message :
/>
<textareaname="message"rows="8"cols="35"></textarea>
/>
type="submit"value="Envoyer"/>

</form>

class="pages">

<?php
mysql_connect("localhost","sdz","mot_de_passe");
mysql_select_db("coursphp");

// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if(isset($_POST['pseudo'])ANDisset($_POST['message']))
{
$pseudo=mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));// On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$message=mysql_real_escape_string(htmlspecialchars($_POST['message']));// De même pour le message
$message=nl2br($message);// Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des

// On peut enfin enregistrer :o)
mysql_query("INSERT INTO livreor VALUES('', '".$pseudo."', '".$message."')");
}

// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage=20;// Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour=mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees=mysql_fetch_array($retour);$totalDesMessages=$donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages=ceil($totalDesMessages/$nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo'Page : ';
for($i=1;$i<=$nombreDePages;$i++)
{
echo'[livreor.php?page='$i.'">'.$i.'] ';
}
?>

<?php

// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if(isset($_GET['page']))
{
$page=$_GET['page'];// On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else// La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page=1;// On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher=($page-1)*$nombreDeMessagesParPage;

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

while($donnees=mysql_fetch_array($reponse))
{
echo' '.$donnees['pseudo'].' a écrit :
'.$donnees['message'].'

';
}

mysql_close();// On n'oublie pas de fermer la connexion à MySQL ;o)
?>

</html>

au niveau de cette ligne mysql_connect("localhost","sdz","mot_de_passe"); je l'ai remplacé par mysql_connect("localhost", "root", "");
et au niveau de cette ligne mysql_select_db("coursphp") j'ai mis le nom de ma BDD en place de "coursphp"

et j'obtiens le message d'erreur suivant :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\****\pages\livreor.php on line 89

Voici la ligne 89 :
while($donnees =mysql_fetch_array($reponse))
{

}

Sinon je peux taper un message et je le retrouve bien dans ma BDD, ms je ne peux pas le voir sur la page. Quelqu'un aurait une idée. Désolé pour la longueur du post. Merci

11 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
9 juil. 2008 à 23:57
remplace ton mysql_query(...) par mysql_query(...) or die ("Erreur sql" . mysql_error())
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
10 juil. 2008 à 13:49
Lu',

D'après l'erreur ... "Erreur sqlChamp 'id' inconnu dans order clause" le champ id n'existe pas dans ta table livreor ...
Verifie le nom de id (majuscule/minuscule, nom entier, ...) dans ta table

Sinon, le or die(mysql_error()); est à mettre à toutes tes fonctions mysql_query(), et celà à chaque fois. Cela te eprmettra d'avoir une meilleur gestion des erreurs, et un gain de temps non négligeable :p
<hr />Si ma reponse te convient, merci de l'accepter ! 
3
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
11 juil. 2008 à 10:41
width: 300px;

Tout texte plus large que 300px ira a la ligne automatiquement.


3
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
10 juil. 2008 à 11:38
Bonjour Bling 182. Merci de venir encore m'aider, mais le php j'ai vraiment du mal...

A quelle ligne je dois faire la modif? J'ai essayé d'echanger au niveau de l'etape 1:


 // On peut enfin enregistrer :o)
    mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");


et j'ai le meme message d'erreur


ensuite j'ai essayé d'echanger au niveau de l'étape 3 :
$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

et j'ai le message d'erreur suivant :
Erreur sqlChamp 'id' inconnu dans order clause

Une idée






 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
10 juil. 2008 à 13:57
Ca y est ça marche!!!!!! Dans ma table j'avais mis id_livreor!!!! Ca y c'est modifié et ça fonctionne nickel. C'est un livre d'or simple mais bon ca me suffit. Encore merci Blink 182 et Jojo738!!!!
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
10 juil. 2008 à 17:03
Je reviens!!! LOL! Pourriez vous me dire comment je peux faire pour afficher la date et l heure a laquelle le message a été ecrit? Actuellement ça met juste:
pseudo a écrit: message

J'aimerai mettre :
pseudo a écrit le 09 juillet 2008 à 17h02: message


 


Et je voudrais également savoir comment faire pour qu'il y ai retour a la ligne automatiquement pour éviter qu'il y ai une scrollbar horizontale?


Merci
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
10 juil. 2008 à 17:19
Si t'as un champ 'timestamp' dans ta table, tu peux.
Sinon... Ca va etre plus compliqué.
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
10 juil. 2008 à 17:32
et si je rajoute un champ 'timestamp' comment je dois faire?


et pour ce qui est du retour a la ligne automatique tu sais comment je dois faire?


Merci
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
10 juil. 2008 à 18:34
Bah avec un champ timestamp, suffit d'utiliser la fonction date() avec les bon parametres.
Pour le retour a la ligne, il faut fixer la largeur en CSS, le retour devrait se faire automatiquement.
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
11 juil. 2008 à 10:08
je crois que je vais mettre le 'timestamp' de coté car ça a l'air trop compliqué pour moi. Par contre comment je dois faire pour le retour à la ligne automatique. Quelle fonction en CSS je dois appliquer?
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
11 juil. 2008 à 21:08
Merci de ton aide tout fonctionne bien. Bon week end!
0
Rejoignez-nous