Création formulaire php, mysql... [Résolu/Fermé]

Signaler
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
-
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
-
Bonsoir à tous,

Alors voilà je me suis lancer il n'y a pas longtemps dans le php enfin plutôt mysql...
Voici le site où je m'entraine.

=> http://netoall.org/farnem

Tout en bas de cette page d'accueil vous pouvez voir un bloc blanc, avec écris "pseudo" , "message"... Avec les pseudos et les messages.

Pour le moment je dois faire ça manuellement depuis PMA (PhpMyAdmin)
Je voudrais savoir si quelqu'un pourrais m'aider sur le code que je devrais insérer dans ma page pour avoir un formulaire enfin deux espace texte où quand l'ont rentre son pseudo et un message les informations vont directement dans la base de données...

- - - - - - - - - - - - - -

Ma table dans la base de données s'appelle : vdb
Les champs à l'intérieur :

- ID (Pour l'id de l'enregistrement...)
Type : int(11)
Extra : Auto increment

- Pseudo (Ba le pseudo de la personne...)
Type : varchar(15)
Interclassement : latin_swedish_ci

- Message (Ba le message de la personne...)
Type : varchar(255)
Interclassement : latin_swedish_ci

- - - - - - - - - - - - - -

Donc voilà j'aimerai donc que quand la personne post son message une fois qu'elle ai entré un pseudo + message, dans la base de données l'id se mette automatiquement... (Enfin normal quoi ^o^)

Merci à tous ceux qui m'aideront, avoir un formulaire comme ça par quelqu'un me permetterait de voir comment cela est construit pour ensuite la prochaine fois savoir.

:)

21 réponses

Messages postés
18444
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mai 2020
4 182
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Merci pour ce commentaire, qui ne m'aide pas.
Messages postés
18444
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mai 2020
4 182
Comment ça il ne t'aide pas ?
Désolé, mais pour moi aider ce n'est pas donner des scripts tout faits.
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Oui, mais le tuto indique comment créer un formulaire qui renvoi les données sur un .php et je ne vois pas où c'est citer comment faire pour que cela s'enregistre sur la bdd mysql...

Donc, cela ne m'aide pas. ;)
Messages postés
18444
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mai 2020
4 182
Désolé, je pensais que tu connaissais déjà le PHP.
Pour apprendre ce langage :
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Je n'y arrive pas, j'ai fait un petit truc...

sur index.php

(le formulaire) :

<form action="cible.php" method="post">
<p>
   Pseudo <input type="pseudo" name="pseudo" />
   Message <input type="message" name="message" />
    <input type="submit" value="Valider" />
</p>
</form>


Cible.php qui répond au formulaire :

<?php
prepare('INSERT INTO vdb(pseudo, message) VALUES(:nom, :possesseur, :console, :prix, :nbre_joueurs_max, :commentaires)');
execute(array(
	'pseudo' => $pseudo,
	'message' => $message
	
	));

echo 'Le message a bien été ajouté !';
?>


Help, please... :)
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
12
dans le cible.php

tu sécurises et crées deux variables qui vont te servir pour le INSERT
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST["pseudo"]));
$message = mysql_real_escape_string(htmlspecialchars($_POST["message"]));


tu insères dans ta table vdb le psuedo et le message envoyé
$bdd->exec('INSERT INTO vdb(pseudo, message) VALUES('$speudo', '$message'));
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Donc dans cible.php

je dois retrouver :

<?php
prepare('INSERT INTO vdb(pseudo, message) VALUES(:pseudo, :message)');
execute(array(
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST["pseudo"]));
$message = mysql_real_escape_string(htmlspecialchars($_POST["message"]));

$bdd->exec('INSERT INTO vdb(pseudo, message) VALUES('$speudo', '$message'));
));

echo 'Le message a bien été ajouté !';
?>




Si oui, cela ne marche pas...
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
12
il faut déjà que tu lui indique quel est ta bdd
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>

et tu n'a pas besoin d'une requête préparé donc pas de prepare ni de execute, il faut virer ces lignes
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Donc je met juste :

<?php 



$pseudo = mysql_real_escape_string(htmlspecialchars($_POST["pseudo"])); 
$message = mysql_real_escape_string(htmlspecialchars($_POST["message"])); 

 $bdd->exec('INSERT INTO vdb(pseudo, message) VALUES('$speudo', '$message')); 



?>



Message d'erreur : Parse error: syntax error, unexpected T_VARIABLE in /home/scryaa/domains/netoall.org/public_html/farnem/cible.php on line 19
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
12
corrige le $speudo en $pseudo dans VALUES
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Toujours le même problème :(


Parse error: syntax error, unexpected T_VARIABLE in /home/scryaa/domains/netoall.org/public_html/farnem/cible.php on line 19
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
12
$bdd->exec('INSERT INTO vdb(pseudo, message) VALUES('$pseudo', '$message')');

il manque un '
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
En ayant ça dans cible.php :


<?php 



$pseudo = mysql_real_escape_string(htmlspecialchars($_POST["pseudo"])); 
$message = mysql_real_escape_string(htmlspecialchars($_POST["message"])); 

$bdd->exec('INSERT INTO vdb(pseudo, message) VALUES('$pseudo', '$message')');



?>


avec biensur les infos de connexion a la bdd avant,

Le même message d'erreur apparait!
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Peut-être car il n'y a rien qui signale de créer dans le champ "id" de la bdd l'id qui suit le précédent...

Enfin je ne pense pas, ce message d'erreur est pour un problème d'une , ou d'un ' ou autre je crois..
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
12
sans passer par pdo ça donne ça;
<?php
mysql_connect("localhost","root","");
mysql_select_db("vdb");
mysql_query('SET NAMES UTF8');

$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));

$sql= "INSERT INTO vdb (pseudo, message) VALUES('$pseudo', '$message')";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

?>
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
SUPER !!!!! Ca marche.

Comment mettre un message de reussite "Votre message a bien été mis"
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
12
tu mets cela a la suite:
echo 'Le message a bien été ajouté !';


ensuite tu va devoir sans doute redirigé puisque maintenant l'internaute se trouve dans la page cible.php
donc la dernière ligne sur cible est :

header("Location: index.php"); //le lien ou se trouve le formulaire
Messages postés
143
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
7 décembre 2010
3
Just super!

Un grand merci à toi!!!
Messages postés
18444
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mai 2020
4 182
@gabbermaniac : le problème n'est pas de PDO, autant l'utiliser plutôt que les fonctions "mysql_". Le problème c'est que dans la requête SQL tu entoures les chaines par des guillemets simples, hors, ta requête SQL est elle-même entre guillemets simples.

Voilà mon script avec PDO :
<?php
$formulaire = <<<END
<form method="post" action="">
	<p>
		<label for="pseudo">Pseudo :</label><br/>
		<input type="text" name="pseudo" id="pseudo" />
	</p>
	
	<p>
		<label for="message">Message :</label><br/>
		<textarea name="message" id="message" cols="45" rows="8"></textarea>
	</p>
	
	<p>
		<input type="submit" value="Envoyer" />
	</p>
</form>
END;

if(!empty($_POST)) {
	$pseudo = trim($_POST['pseudo']);
	$message = trim($_POST['message']);
	
	if(empty($pseudo) || empty($message))
		echo $formulaire;
	else {
		try {
			$pdo = new PDO('mysql:host=localhost;dbname=vdb','root','');
			
			$sql = 'INSERT INTO 'vdb'('Pseudo','Message') VALUES('.$pdo->quote($pseudo).','.$pdo->quote($message).')';
			$pdo->exec($sql);
			echo 'Le message a bien été ajouté !';
		} catch(PDOException $e) {
			echo 'Une erreur s\'est produite';
		}
	}
} else
	echo $formulaire;
?>