pb envoi bdd

jimix
Invité n'ayant pas de compte PHPfrance

09 mai 2010, 12:15

bonjour à tous,
je suis novice et je cherche à envoyer des éléments saisie sur une 2ème page et envoi simultanément sur bdd.
et cela ne fonctionne pas ci-dessous la prog utilisée:
j'ai créé 2 fichier
sur le 1er :
<html><body>
<form action='pageb.php' method='post'>
Nom : <input type='text' name='nom'>
Prénom : <input type='text' name='prenom'>
<input type="submit" value="OK">
</form></body></html>


et le 2ème
<?php
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
print("<center>$prenom $nom</center>");
>?
and
<?php
$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());

$sql = "INSERT into clients (nom, prénom) VALUES ('.$_POST['nom']."','".$_POST['prénom']."');";
mysql_query($sql);
>?

cela me met ce message d'erreur et rien sur la bdd :Parse error: syntax error, unexpected '>' in C:\Program Files\EasyPHP-5.3.1\www\pageb.php on line 5

par avance merci pour votre aide

Eléphant du PHP | 109 Messages

09 mai 2010, 12:38

Bonjour,

en effet, je vois quelques erreurs de base dans ton script.
La première se situe ici :
print("<center>$prenom $nom</center>");
>?
and
La balise fermante de PHP est ?> et non >?.
La deuxième est celle-ci :
$sql = "INSERT into clients (nom, prénom) VALUES ('.$_POST['nom']."','".$_POST['prénom']."');";
Tes apostrophes et guillemets s'emmêlent un peu les pinceaux. Pourquoi ne pas faire simplement avec les variables que tu as créées au début de ton script?
Comme ceci :
$sql = "INSERT into clients (nom, prénom) VALUES ('$nom', '$prenom')";
Ceci est, je pense, beaucoup plus clair. D'autant plus (et tu le dis toi même) que tu est un novice ;)
Enfin, si tu as une quelconque erreur qui apparait, fait en nous part. :)

Voici à quoi devrait ressembler le code final de ta deuxième page :
<?php
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
print("<center>$prenom $nom</center>");
?>
and
<?php
$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());

$sql = "INSERT into clients (nom, prénom) VALUES ('$nom', '$prenom')";
mysql_query($sql);
?>
Bonne journée :D

PS : pour revoir les bases, rien ne vaut une bonne lecture de tutoriel. (notemment celui-ci : http://www.siteduzero.com/tutoriel-3-14 ... c-php.html)
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

jimix
Invité n'ayant pas de compte PHPfrance

09 mai 2010, 12:47

merci pour votre réponse. c sur c'est plus claire toutefois cela ne fonctionne toujours pas il me met cette erreur
Parse error: syntax error, unexpected '}' in C:\Program Files\EasyPHP-5.3.1\www\paged.php on line 9
je ne trouve pas l'erreur je pense que cela vient de a liaison entre les 2 demandes.
par avance merci pour votre aide

Eléphant du PHP | 109 Messages

09 mai 2010, 13:02

Je pensais que tu m'avais donné un bout de ton code.
Bref, le message est assez clair :
Une accolade fermante "inattendue" à la ligne 9. Que fais elle là? Lorsque tu as une accolade fermante quelque part dans un script, cela veut forcément dire qu'il y en a une ouvrante en amont. Or ici, il n'y en a visiblement pas. (en tout les cas si tu m'as donné le script complet dès le départ).

Même combat pour le
catch(Exception $e)
{

Il faut la fermer avant la fin de ton script.
Donc vérifie ton script complet, et à chaque fois que tu ouvre une accolade, il doit y avoir une fermante plus bas.

Bonne chance ;)
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

jimix
Invité n'ayant pas de compte PHPfrance

09 mai 2010, 14:02

encore merci ça avance.

voici mon code
<?php
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
print("<center>$prenom $nom</center>");
?>

<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
$sql = "INSERT into clients (nom, prenom) VALUES ('$nom', '$prenom')";
mysql_query($sql);
?>


toutefois il me met cette erreur. "Erreur : SQLSTATE[42000] [1049] Base 'clients' inconnue"

je pense qu'il y un pb de lien avec la bdd, mais je vois pas d'où cela vient. doit on mettre quelque chose de spécifique dans la bdd. je l'ai créé et appelé clients.

par avance merci pour votre aide. c sympa

jimix
Invité n'ayant pas de compte PHPfrance

09 mai 2010, 14:04

pour info ma bdd s'appelle news et la table clients. et c'est dans cette table que j'ai mis les champs nom et prénom..

Eléphant du PHP | 109 Messages

09 mai 2010, 15:14

Re,

donc ta base a pour nom "news" et la table que tu as créé s'appelle "clients"?
Si tel est le cas, je pense que l'erreur est simplissime et aurait très bien pu être réglée en cherchant un peu sur le net. :(

Si ta base s'appelle "news", pourquoi as tu mis "clients" à dbname sur cette ligne ?
$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '');

Encore une fois, se sont des bases fondamentales ; je te conseille vivement d'aller lire un tutoriel. (http://www.siteduzero.com/tutoriel-3-14 ... nnees.html)

Donc en conclusion, si ta base s'appelle réellement "news", remplace "clients" par "news" à la ligne ci-dessus.

Bonne journée. :wink:
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

jimix
Invité n'ayant pas de compte PHPfrance

09 mai 2010, 17:37

encore merci pour votre patience. pour le nom de la bdd j'avais essayé avec les 2.

voici le code d'erreur que cela m'affiche :Erreur : SQLSTATE[28000] [1045] Acc�s refus� pour l'utilisateur: 'jimix'@'@localhost' (mot de passe: OUI)
comme si il n'arrivé pas à se connecter à la bdd.

je suis allé sur différents forum et je n'ai pas trouvé comment le résoudre.

que faire????, c 'est dure pour un débutant encore des heures devant l'ordi.

ViPHP
ViPHP | 5462 Messages

10 mai 2010, 13:33

normale tu mélanges 2 extension : PDO et mysql, tu te connecte avec PDO mais tu fais une requête avec l'extension mysql

jimix
Invité n'ayant pas de compte PHPfrance

10 mai 2010, 18:44

et que faut il faire alors???
PAR AVANCE MERCI

ViPHP
ViPHP | 5462 Messages

10 mai 2010, 18:45

et que faut il faire alors???
PAR AVANCE MERCI
au lieu de faire
mysql_query($sql);
faire
$bdd->query($sql);
#-o :wink:

jimix
Invité n'ayant pas de compte PHPfrance

10 mai 2010, 19:04

merci, il n y a plus de message d'erreur. par contre rien n'est reporté sur la table.je comprends pas!!
vISIBLEMENT VOUS ËTES UN EXPERT SI VOUS POUVIEZ ME DONNER UN COUPR DE MAIN çA SERAI COOL

jimix
Invité n'ayant pas de compte PHPfrance

10 mai 2010, 19:08

ça fonctionne avec wampserver mais pas avec easyphp?
pourquoi aussi non je travaille avec wap.
qu'en penser lorsqu'on est novice

ViPHP
ViPHP | 5462 Messages

10 mai 2010, 20:46

je te conseil d'afficher les erreur PDO

suffis de rajouter dans ton try
$bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

JIMIX93
Invité n'ayant pas de compte PHPfrance

10 mai 2010, 22:23

ENCORE MERCIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII =D>