Page 1 sur 2

livre d'or

Posté : 07 sept. 2011, 10:17
par icemanricard
bonjour a tous,
je viens seulement de m'inscrire donc je ne sais pas trop si je poste au bonne endroit.

cela fait 2 mois que je me suis mis au html pour crée un site et une semaine au php pour certain fonctionabilité.

voici mon souci :

donc j'aimerais crée une livre d'or sur base de donnée SQL, car actuellement je l'ai crée via un ficher text ..( plus simple) ^^

donc poru crée via uen base de donnée j'ai 3 fichier php

mon premier qui ai ' livredor.php" avec une base html car c'est une pa ge de mon site .. voici le code ( enfin seulement la parti php)
{livredor.php}
//avant ce code ce trouve mon formulaire en html qui l'orsque que l'on fait envoyer sur (message.php)


<?php
fopen(connection.php);
$sql = 'SELECT pseudo,message,date FROM livreor ORDER BY date DESC';
$reponse = mysql_query($sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>'.$donnees['pseudo'].'</strong> a écrit le '.$donnees['date'].'/:<br />'</p>';
echo '<p>'.$donnees['message'].'</p>';
}
mysql_close($bd);
$bd=0;
?>

ensuite j'ai le fichier (message .php)
<?php
//récupération des données et les formater un peu
$pseudo = addslashes($_POST["pseudo"]);
$message = addslashes($_POST["message"]);
$date = date ( "d/m/Y H:i:s" );

//Insertion de données

fopen(connection.php);
if($bd<>0)
{
$requete="insert into livreor VALUES ('', '".$pseudo."','".$date.'",'".$message."')";
$resultat=mysql_query($requete,$bd);
if($resultat<>FALSE)
{
echo "<b>$pseudo</b> à écrit le - $date :<br>$message<br><hr>\n";
}
else
{
echo "Echec de l'enregistrement, désolé";
}
}
else
{
header('Location:livredor.php');
exit();
}

mysql_close($bd);
$bd=0;

header('Location:livredor.php');
exit();

?>
et mon 3 ieme fichier qui me sert a la connexion a mon sql (connection.php)
<?
$dbhost="xxx";
$dblogin="xxx";
$dbpassword="xxx";
$dbname="livreor";
$bd=mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname,$bd);
?>
et voici ma base de donnée sql que j'ai crée
Image


donc avec tout cela mon livre d'or ne marche pas j'ai des erreur de syntaxe, mais je ne comrpend pas ou :( si quelqu'un peut m'aider car je susi perdu j'ai beau chercher je m'intruie a chaque fois mais je n'arrive pas a analyser les erreur

Re: livre d'or

Posté : 07 sept. 2011, 10:53
par moogli
salut,

quel est le message d'erreur ?

au pif je dirais qu'il indique qu'il indique une string non attendu et une constant non existante ?

tu fait : fopen(connection.php); <= mais il faut passer une chaine de caractère à la fonction fopen : fopen('connection.php')
d’ailleurs fopen demande un second paramètre obligatoire donc tu doit / peux avoir une erreur a ce sujet, plus d'info dans la doc de la fonction.

pour résoudre ton problème complètement il faut que tu comprenne bien l'utilisation de fopen qui permet de lire le contenu de fichier mais pas de l'executer donc ce n'est pas fopen('connection.php'); mais include 'connection.php'; :D

pour plus d'info doc de la fonction include

@+

Re: livre d'or

Posté : 07 sept. 2011, 11:15
par Mazarini
Bonjour,

Si je peux me permettre un conseil, il faudrait ajouter un champs numérique id en auto-incrément. Ce champ te permettra d'identifier facilement les enregistrements pour les manipuler. Plus facilement que le pseudo et la date.
Après l'insert, il y a la fonction mysql_insert_id qui permet de connaitre sa valeur sachant qu'on met NULL dans l'insert.

Re: livre d'or

Posté : 07 sept. 2011, 11:38
par icemanricard
moogli

merci pour cette info je vais aller voir les doc, pour le include et bien c'est ce que j'avais mis avant, mais j'avais cru lire que c'etait plus pour inclure des donnée dans un fichier, tout comme je fait actuellement avec ma version en fichier texte sans base de donnée , mais je vais voir cela :)

mazarini

ton idée est interesant, mais comment fait tu pour mettre en aut- incrementation dans la base sql? de plus l' ID se fait automatiquement pas pseudo? je veux dire n'y as t'i lpas un risque pour que un pseudo est plusieur ID?
donc mo navanage si je fait cela, c'est surtout pour la gestion des message dans ma base...?


sinon en general, j'aimerais également un avis sur ma construction et je suis bien entendu ouvert a toute idée qui pourais ameliorer mes connaissance :)
merci en tout cas :)

Re: livre d'or

Posté : 07 sept. 2011, 11:43
par icemanricard
oups moogli je t'ai dit une erreur ^^^ j'utilise pour mon fichier texte fopen mais en ecriture , donc je me suis bien planté sur cela ^^ merci de m'avoir rediriger sur la bonne voie

Re: livre d'or

Posté : 07 sept. 2011, 11:57
par Mazarini
L'auto incrémentation est une option qu'il est possible de mettre lors de la création d'une colonne avec phpmyadmin.

En général, je trouve bien d'avoir un identifiant technique pour toutes mes tables. Cela simplifie pas mal de chose puisque tout les accès à un seul enregistrement se font via cette identifiant. Effectivement, tu as déjà le pseudo et la date comme identifiant unique, sauf que tu n'es pas sur que le même pseudo ne sera pas utilisé 2 fois à la même date (même si improbable). L'aspect simplification de la programmation (id présent sur toutes les tables avec toujours le même nom) me semble le plus important en permettant d'éviter de se poser des questions.

Re: livre d'or

Posté : 07 sept. 2011, 15:28
par icemanricard
voici mes 3 fichier corriger ainsi que ma base de donnée

[img]http://manoir.des.dolls.perso.sfr.fr/livreor/sql.jpg
fichier connection.php

<?
$dbhost="xxx
$dblogin="xxx
$dbpassword="xxx
$dbname="livreor";
$bd=mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname,$bd);
?>
fichier message.php


<?php
$pseudo = addslashes($_POST["pseudo"]);
$message = addslashes($_POST["message"]);
$date = date ( "d/m/Y H:i:s" );

include 'connection.php';
if($bd<>0)
{
$requete="INSERT INTO livreor (id,pseudo,date,message) VALUES ('',"$pseudo","$date","$message")";
mysql_query($requete,$bd);
}

mysql_close($bd);
$bd=0;

header('Location:livredor.php');
exit();

?>
dans ma page livredor.php apres mon formulaire en html


<?php
include 'connection.php';
$select = "SELECT pseudo,message,date FROM livreor ORDER BY id DESC";
$requete = mysql_query($select)or die ("erreur de connexion au serveur $host");
while ($donnees = mysql_fetch_array($requete));
if ($donnees<>0)
{
echo '<p><strong>'.$donnees['pseudo'].'</strong> a écrit le '.$donnees['date'].'/:<br />'</p>';
echo '<p>'.$donnees['message'].'</p>';
echo '<hr align="center" color="rgb(255, 255, 255)" size="2" width="100%" /><br />';
}
else
{
echo 'pas de message';
}

mysql_close($bd);
$bd=0;
?>

voici ce que sa donne apres les correction proprosée, mais toujours uen erreur grrrrr
donc si vous la voyezn'hésitépas :)

Re: livre d'or

Posté : 07 sept. 2011, 16:02
par moogli
voici ce que sa donne apres les correction proprosée, mais toujours uen erreur grrrrr
donc si vous la voyez n'hésitépas :)
ça serait bien de nous filer les messages d'erreur les devinettes c'est pas mon fort :mrgreen:

Au vu de ton code je te conseil de revoir la définition d'une chaine :
http://www.phpdebutant.org/article14.php
ou http://www.lephpfacile.com/cours/2-decl ... -variables

ou simplement la doc officielle :) http://fr2.php.net/manual/fr/language.types.string.php

Ceci dit le problème que je vois vient peut être d'un copier / coller foireux XD

plus d'info quand on verra le message d'erreur ;)

@+

Re: livre d'or

Posté : 08 sept. 2011, 08:35
par icemanricard
LOL dsl moogli c'est vrai j'aurais du commencer par la ^^..
voici le message
Parse error: syntax error, unexpected '/' in /var/www/m/ma/man/manoir.des.dolls.perso.sfr.fr/public_html/livreor/livredor.php on line 101
mais pour moi ces messages se ressemble tous, :).. pour la ligne 101 du code ça se situe ici :
$select = "SELECT pseudo,date,message FROM livreor ORDER BY id DESC";
$requete = mysql_query($select);
while ($donnees = mysql_fetch_array($requete));
pour ce qui est du copier coller foireux et bien j'ai lu ligne par ligne, essayer de supprimer les espaces ou petit bug qui pourrai faire des erreurs. j'ai meme ecrit des lignes manuellement.. mais je ne suis que novice ..
je vais deja allée faire un tour sur tes lien pour voir si je trouve quelque chose poru em faire avancer :)

Re: livre d'or

Posté : 08 sept. 2011, 09:04
par Mazarini
Vu le message; il est question d'un caractère / vers la ligne 101.

J'ai vu :
echo '<p><strong>'.$donnees['pseudo'].'</strong> a écrit le '.$donnees['date'].'/:
il manque une quote après le le /

+ erreur similaire 3 lignes en dessous.

Tu devrais utiliser un éditeur qui fait de la coloration syntaxique et permet de voir ce genre d'erreur plus facilement.

Re: livre d'or

Posté : 08 sept. 2011, 11:04
par icemanricard
merci Mazarini
je vais essayer de voir cela alor :)

oui je pense qu'un editeur serait le mieux car la je taf avec le bloc note ^^ c'est pas ce qu'il y a de mieux je te l'accorde
en connais tu un editeur facile et gratuit? cela me permetrais de faire moins d'erreur sans doute, car je sais que pour le html j'utilise nvu et il corrige les petite erreur de syntaxe

Re: livre d'or

Posté : 08 sept. 2011, 11:37
par Mazarini
Personnellement j'utilise NetBeans, mais je ne suis pas trop convaincu. Finalement, je préfère ultraedit qui est payant.

Re: livre d'or

Posté : 08 sept. 2011, 12:17
par icemanricard
mazarin merki merki j'ai pris note

Moogli, je viens de jeter un oei la tes lien et mdr....je comprend mieux ce que tu voulais me dire :), j'aurais du commencé par lire les base au lieu de m'attaquer au requin loool .

je referais un essaye avec ces modifs et croisons les doigt :)...

Re: livre d'or

Posté : 08 sept. 2011, 12:21
par moogli
Perso j'aime bien netbeans en gratuit, en payant zend studio est sympa, le problème des deux c'est qu'ils sont Tres lourds.

Sinon en éditeur simple qui fait juste la colorisation syntaxique y a notepad++ il permet la colorisation de tout un tas de language dont php html css Sql pour les courants en web ;)

@+

Re: livre d'or

Posté : 09 sept. 2011, 16:05
par icemanricard
:) me revoila :),

apres analyse je viens de m'apercevoir que c'est ma connection a la base qui foire

voici mon fichier de connection :
<?php
$dbhost="sqladmin.sfr.fr";
$dblogin="manoir-des-dolls";
$dbpassword="*******";
$dbname="livreor";
$db=mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname,$db);

?>
et voici les erreurs :
Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'sqladmin.sfr.fr' (4) in /var/www/m/ma/man/manoir.des.dolls.perso.sfr.fr/public_html/livreor/connection.php on line 6

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /var/www/m/ma/man/manoir.des.dolls.perso.sfr.fr/public_html/livreor/connection.php on line 7
grrr la je ne comprend vraiment pas c'est limite le plus simple a faire ce fichier de connection et c'est celui qui ne marche pas