Creation d'un livre d'or

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)

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

15 réponses

chrisKey Messages postés 108 Statut Membre 3
 
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 !
0
Arkan
 
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
0
chrisKey Messages postés 108 Statut Membre 3
 
Maintenant qu'on est sur que c'est là :

mysql_query("INSERT INTO livreor VALUES('', '" . $Name . "','" . $Message . "')") or die(mysql_error());
0
Arkan
 
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?
0

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

Posez votre question
chrisKey Messages postés 108 Statut Membre 3
 
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.
0
Arkan
 
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
0
Arkan
 
Petite remarque:
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!
0
chrisKey Messages postés 108 Statut Membre 3
 
Tu geres ta BDD avec quoi ? MySQL? Dans tout les cas tu pourrais exporter la structure de la table et l'afficher ici?
0
Arkan
 
Oui bien sur, mais euh quel fichier serai le mieu pour etre exporté ici? PDF?
0
Arkan
 
Sans doute mieu comme ça:

-- phpMyAdmin SQL Dump
-- version 3.1.1
-- https://www.phpmyadmin.net/
0
Arkan
 
Aucune idée quelconque? :(
0
chrisKey Messages postés 108 Statut Membre 3
 
Essais de passer ton mediumint en int :(
0
Arkan
 
-_-' 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 :)
0
chrisKey Messages postés 108 Statut Membre 3
 
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 ?
0
Arkan
 
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)
0
Arkan
 
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 :

$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?
0