Creation d'un livre d'or
Arkan
-
Arkan -
Arkan -
Bonjour,
Voila je doit créer un livre d'or pour le site d'un client (je suis stagiaire). n'ayant aucun connaissance en PHP (mais en C++, ça va je suis sauvé ^^) je me suis aidé des Tutoriels sur internet pour le concevoir.
Voici le code en php: (je met tout puisque je n'ai pas le choix)
Voila, mon problème ici est que je n'arrive pas a enregistrer a l'envoie du pseudo et du message dans la base de donnée. ça ne fait strictement rien.
Si quelqu'un pouvais m'aider, je vous en serais vraiment reconnaissant.
Arameya
Voila je doit créer un livre d'or pour le site d'un client (je suis stagiaire). n'ayant aucun connaissance en PHP (mais en C++, ça va je suis sauvé ^^) je me suis aidé des Tutoriels sur internet pour le concevoir.
Voici le code en php: (je met tout puisque je n'ai pas le choix)
<div id="mainPage">
<form method="post" action="livreor.php">
<p>
Name : <input name="Name" /><br />
Message : <textarea name="Message" rows="8" cols="35"></textarea><br />
<input type="submit" value="Send" />
</p>
</form>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("*nomdetablecensuré");
//On recupere le nom de l'entreprise dans une variable ainsi que le message et on rentre ça dans la BDD
if (isset($_POST['nameMess']) AND isset($_POST['Mess']))
{
$Name = mysql_real_escape_string(htmlspecialchar($_POST['Name']));
$Message = mysql_real_escape_string(htmlspecialchar($_POST['Message']));
$Message = nl2br($Message);
mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')");
}
//On s'arrange pour organiser les messages par 5 et par pages tant que cela reste peut.
$retour = mysql_query('SELECT COUNT(*) AS nb_mess FROM livreor');
$donnees = mysql_fetch_array($totalMessage);
$totalMess = $donnees['nbr_mess'];
if($totalMess < 30)
{
$nbreMess = 5;
}
else { $nbreMess = 10; }
$nbrePage = ceil($totalMess / $nbreMess);
for($i = 1; $i <= $nbrePage; $i++)
{
echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a>';
}
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
{
$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) * $nbrePage;
$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nbrePage);
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong>' . $donnees['message'] . '</p>';
}
mysql_close();
?>
Voila, mon problème ici est que je n'arrive pas a enregistrer a l'envoie du pseudo et du message dans la base de donnée. ça ne fait strictement rien.
Si quelqu'un pouvais m'aider, je vous en serais vraiment reconnaissant.
Arameya
A voir également:
- Creation d'un livre d'or
- Creation compte gmail - Guide
- Création site web - Guide
- Création d'un compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Creation compte vinted - Guide
15 réponses
Remplaces
if (isset($_POST['nameMess']) AND isset($_POST['Mess']))
{
$Name = mysql_real_escape_string(htmlspecialchar($_POST['Name']));
$Message = mysql_real_escape_string(htmlspecialchar($_POST['Message']));
$Message = nl2br($Message);
mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')");
}
par
if (isset($_POST['nameMess']) AND isset($_POST['Mess']))
{
$Name = mysql_real_escape_string(htmlspecialchar($_POST['Name']));
$Message = mysql_real_escape_string(htmlspecialchar($_POST['Message']));
$Message = nl2br($Message);
echo "Name :".$Name;
echo "Message :".$Message;
if(mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')")) {echo "mysql_query ok !";}
else {echo "mysql_query not ok !";}
}
else {
echo "Probleme premier else";
}
On va surement y voir un peu plus clair !
if (isset($_POST['nameMess']) AND isset($_POST['Mess']))
{
$Name = mysql_real_escape_string(htmlspecialchar($_POST['Name']));
$Message = mysql_real_escape_string(htmlspecialchar($_POST['Message']));
$Message = nl2br($Message);
mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')");
}
par
if (isset($_POST['nameMess']) AND isset($_POST['Mess']))
{
$Name = mysql_real_escape_string(htmlspecialchar($_POST['Name']));
$Message = mysql_real_escape_string(htmlspecialchar($_POST['Message']));
$Message = nl2br($Message);
echo "Name :".$Name;
echo "Message :".$Message;
if(mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')")) {echo "mysql_query ok !";}
else {echo "mysql_query not ok !";}
}
else {
echo "Probleme premier else";
}
On va surement y voir un peu plus clair !
Hum je te remercie pour ton aide, mais je bloque encore...
Effectivement, j'ai un mysql not ok... Le message s'affiche sur la fenetre mais seulement grace aux variable. Rien ne veux s'enregistrer dans mysql
Effectivement, j'ai un mysql not ok... Le message s'affiche sur la fenetre mais seulement grace aux variable. Rien ne veux s'enregistrer dans mysql
Maintenant qu'on est sur que c'est là :
mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')") or die(mysql_error());
mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')") or die(mysql_error());
Je te remercie infiniment pour ton aide... tu me sauve "presque" la vie :) (désolé d'ailleurs si j'ai pas put répondre hier, j'avais fini le boulot, et j'ai pas d'internet chez moi... étudiant quand tu nous tient :p)
Bon alors, voici l'erreur retrouvé:
Column count doesn't match value count at row 1
Donc j'ai une base de donnée avec : ID (mediumint), Date(TimeDate), Name(charvar) et Message(text)
Count donc correspond ici a ID bien sur... enfin c'est ce que j'aimerai qu'il corresponde!
J'ai tenté par hasard de mettre une valeur dans mon tableau, ID:1 , le reste au PifAuMetreJ'T'Embrouille mais j'ai tjs la même erreur. J'en déduit que je n'atteint ni ID, ni mon tableau.
Car que je fasse 'SELECT COUNT(ID) ...' ou 'SELECT COUNT(*)...' ça fait la même chose.
Tu (vous?) aurais une idée?
Bon alors, voici l'erreur retrouvé:
Column count doesn't match value count at row 1
Donc j'ai une base de donnée avec : ID (mediumint), Date(TimeDate), Name(charvar) et Message(text)
Count donc correspond ici a ID bien sur... enfin c'est ce que j'aimerai qu'il corresponde!
J'ai tenté par hasard de mettre une valeur dans mon tableau, ID:1 , le reste au PifAuMetreJ'T'Embrouille mais j'ai tjs la même erreur. J'en déduit que je n'atteint ni ID, ni mon tableau.
Car que je fasse 'SELECT COUNT(ID) ...' ou 'SELECT COUNT(*)...' ça fait la même chose.
Tu (vous?) aurais une idée?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Essais,
mysql_query("INSERT INTO livreor (ID, Date, Name, Message) VALUES('', NOW(), '" . $Name . "','" . $Message . "')") or die(mysql_error());
Verifis que ton id est auto_increment.
mysql_query("INSERT INTO livreor (ID, Date, Name, Message) VALUES('', NOW(), '" . $Name . "','" . $Message . "')") or die(mysql_error());
Verifis que ton id est auto_increment.
Ca doit me marquer quoi? Parce que là j'ai absolument rien...
J'ai aussi supprimer mon champ date qui apparement bloquais un peu vu qu'elle n'etait pas utilisé et du coup ça posais problème, mon erreur donc c'est transformée en: Incorrect integer value: '' for column 'ID' at row 1 Ceci dit, lorsque je change par ton code et donc que je rajoute la fonction NOW(), l'erreur se rechange par l'autre précedente, donc: Column count doesn't match value count at row 1
J'ai aussi supprimer mon champ date qui apparement bloquais un peu vu qu'elle n'etait pas utilisé et du coup ça posais problème, mon erreur donc c'est transformée en: Incorrect integer value: '' for column 'ID' at row 1 Ceci dit, lorsque je change par ton code et donc que je rajoute la fonction NOW(), l'erreur se rechange par l'autre précedente, donc: Column count doesn't match value count at row 1
Petite remarque:
Ceci-dit, je n'ai plus de message d'erreur! peut être un plus grand pas? Mais tjs aucun enregistrement d'effectué.
Autre bon point, je lis très bien ma base de donnée (ou presque) car il s'affiche sur ma page PHP le dernier champ avec ID le plus gros... Mais pas les premiers... donc ça signifie bien que je peut atteindre ma BDD!
mysql_query("INSERT INTO livreor SET Name=$Name, Message=$Message or die(mysql_error())"); ne fait rien non plus....
Ceci-dit, je n'ai plus de message d'erreur! peut être un plus grand pas? Mais tjs aucun enregistrement d'effectué.
Autre bon point, je lis très bien ma base de donnée (ou presque) car il s'affiche sur ma page PHP le dernier champ avec ID le plus gros... Mais pas les premiers... donc ça signifie bien que je peut atteindre ma BDD!
Tu geres ta BDD avec quoi ? MySQL? Dans tout les cas tu pourrais exporter la structure de la table et l'afficher ici?
-_-' C'est a n'y rien comprendre... j'avais déjà testé de passer de l'un a l'autre et ca n'avais rien donné et là ça marche...
Bon ben maintenant que ça marche je n'y touche plus ... :)
Merci pour tout en tout cas ^^, le plus dur reste a faire... le chef veux que je fasse une solution pour que le message du livre d'or arrive directement dans sa boite mail afin qu'il le valide. Je sais pas encore comment m'y prendre mais je vais y réfléchir :)
Bon ben maintenant que ça marche je n'y touche plus ... :)
Merci pour tout en tout cas ^^, le plus dur reste a faire... le chef veux que je fasse une solution pour que le message du livre d'or arrive directement dans sa boite mail afin qu'il le valide. Je sais pas encore comment m'y prendre mais je vais y réfléchir :)
Si tu souhaites un petit coup de main pour la suite, n'hésites pas j'ai déjà implémenté ce genre de solution.
@+ et bon courage pour ton stage ;)
PS : Tu fais quoi comme diplome ?
@+ et bon courage pour ton stage ;)
PS : Tu fais quoi comme diplome ?
Informatique industriel (ça n'a rien a voir) je préfère tout de même la programmation en C++ (j'aime pas le web)
Je continu donc sur ce sujet, tant qu'a faire, inutile de surcharger pour rien la BDD de ccm :)
Bon alors, je bloque sur quelque chose de tout bête (pour changer -_-")... voila, j'ai lancé la commande toute bête :
mon adresse perso utilise ce smtp ci, donc j'ai pensé pouvoir envoyer quelques choses...
j'ai cette erreur qui apparait:
1
Warning: mail() [function.mail]: Failed to connect to mailserver at "smtp-msa.orange.fr" port 587, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\EasyPHP 3.0\www\Philips\livreor.php on line 132
la 132 étant la fonction mail();
J'essayerai bien en local de me faire un serveur propre debian mais j'ai pas l'autorisation de mettre un debian sur le pc boulot, ni de connecter mon ordi perso sur le réseau de l'entreprise...
Sauriez vous m'aider?
Bon alors, je bloque sur quelque chose de tout bête (pour changer -_-")... voila, j'ai lancé la commande toute bête :
$to = "michael@......"; $subject = "Livre d'or - **"; $msg = $donnees['Name']; $msg = $donnees['Message']; $header = 'From: site web Philips-Chalon **-**@server.com'."\r\n"; mail($to, $subject, $msg, $header); j'ai configuré le fichier php.ini avec SMTP = smtp-msa.orange.fr smtp_port = 587
mon adresse perso utilise ce smtp ci, donc j'ai pensé pouvoir envoyer quelques choses...
j'ai cette erreur qui apparait:
1
Warning: mail() [function.mail]: Failed to connect to mailserver at "smtp-msa.orange.fr" port 587, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\EasyPHP 3.0\www\Philips\livreor.php on line 132
la 132 étant la fonction mail();
J'essayerai bien en local de me faire un serveur propre debian mais j'ai pas l'autorisation de mettre un debian sur le pc boulot, ni de connecter mon ordi perso sur le réseau de l'entreprise...
Sauriez vous m'aider?