Page 1 sur 1

probléme d'insertion dans une BDD

Posté : 27 déc. 2006, 00:32
par Invité
Salut a tout le monde.
Bon voilà j'ai une BDD que j'ai appellé test et une table liste pour stocker le nombre adhérant d'un petit groupe que je voudrais monter. Le formulaire est composé de 8 champs ( nom, prenom, date et lieu de naissance, profession, email, pays ville). Mais mon probléme c'est quand je remplis le formulaire et que je clik sur envoyer, je ne constate aucune insertion sur la BDD et pourtant je ne reçois auncun message d'erreur. Pourriez vous s'il vous plait jeté un coup d'oeuil sur mon code parce que là je suis vraiment tout éssayé mais rien. Au fait j'ai failli oublier, je fait mes débuts en php. Le voici le code

<?php
	
mysql_connect("localhost", "root", "");
mysql_select_db("test ");
 
// --------------- Etape 1 -----------------
// Si un message est envoyé, ON l'enregistre
// -----------------------------------------
 
if (isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['date']) AND isset($_POST['lieu']) 
AND isset($_POST['profession']) AND isset($_POST['email']) AND isset($_POST['pays']) AND isset($_POST['ville']))
{
    
    $nom = htmlentities($_POST['nom'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
	$prenom = htmlentities($_POST['prenom'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
	$date = htmlentities($_POST['date'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
	$lieu = htmlentities($_POST['lieu'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
	$profession = htmlentities($_POST['profession'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
	$email = htmlentities($_POST['email'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
	$pays = htmlentities($_POST['pays'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
	$ville = htmlentities($_POST['ville'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
        
   
    
    // On peut enfin enregistrer :o)
	 mysql_query("INSERT INTO liste VALUES('', '" . $nom . "', '" . $prenom . "', '" . $date . "', '" . $lieu . "',
	'" . $profession . "', '" . $email . "', '" . $pays . "', '" . $ville  . "')");
}
// --------------- Etape 2 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
 
if (isset($_GET['page']))
{
    $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (liste.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
    $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) * $nombreDeMessagesParPage;
 
$reponse = mysql_query('SELECT * FROM bd_adhesion ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
 
while ($donnees = mysql_fetch_array($reponse))
{
   echo "<b><center>Voici vos données $nom </b> <br> $nom<br>$prenom<br>$date<br>$lieu<br>$profession<br>$email<br>$pays<br>$ville<br>";}
 
mysql_close(); // ON n'oublie pas de fermer la connexion à MySQL ;o)
?>
 



Posté : 27 déc. 2006, 00:38
par Truc
Salut,
Pour voir d'éventuels messages d'erreurs faudrait les afficher avec mysql_error() (par exemple)

Plus d'infos pour débuger.

Regarde aussi la fonction mysql_select_db() tu passes "test" en paramètre avec un espace :-k

SALUT

Posté : 27 déc. 2006, 01:53
par Invité
HONNETEMENT JE NE VOIS PAS COMPRENDS PAS VOS CONSIGNES. POURRIEZ VOUS M'EXPLIQUER UN PEU PLUS CLAIREMENT PARCE QUE COMME JE DISAIS TOUT A L'HEURE JE UN DEBUTANT EN PHP

Posté : 27 déc. 2006, 02:02
par Xenon_54
As-tu suivi les conseils de Truc? Ils font partis de la solution.

Si tu veux des programmeurs pas cher pour faire tes projets, je te réfère à ce site: http://www.scriptlance.com/
Ils se feront un plaisir de coder pour toi moyennant un paiement et ce, même si tu connais rien en PHP.

Re: SALUT

Posté : 27 déc. 2006, 03:40
par Ajoloca
HONNETEMENT JE NE VOIS PAS COMPRENDS PAS VOS CONSIGNES. POURRIEZ VOUS M'EXPLIQUER UN PEU PLUS CLAIREMENT PARCE QUE COMME JE DISAIS TOUT A L'HEURE JE UN DEBUTANT EN PHP
Je ne sais pas si tu es au courant mais écrire en majuscules est un signe d'agressivité.

Je doute que suite à cette intervention tu ais de meilleurs réponses que celles que t'a proposé Truc qui sont ta solution.

Être débutant n'empêche pas, au contraire, de faire un minimum d'efforts pour comprendre.

salut

Posté : 27 déc. 2006, 07:15
par Invité
Désolé j'étais pas au courant pour les majuscules. Quant à l'effort sachez que je mets toute ma chaire sur le php ce qui veut dire que je ne vais pas seulement demander de l'aide et baisser les bras, je m'y mets aussi.

Posté : 27 déc. 2006, 08:00
par Xenon_54
Je vais alors t'aider un peu pour le debug de ton script.

La majorité des fonctions retourne FALSE en cas d'erreur. Les fonctions MySQL que tu utilises n'y font pas exceptions.

Lorsqu'une erreur survient avec MySQL, tu peux récupérer l'erreur avec mysql_error(). Donc dans ton cas, voici comment vérifier:
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test ") or die(mysql_error());
Ainsi la fonction mysql_connect() et mysql_select_db() s'exécuteront normalement s'il n'y a pas d'erreur. Mais dans le cas contraire, die(mysql_error()) s'exécutera, affichant l'erreur et arrêtant le script.

Concernant l'utilisation de htmlentities(), je te recommandes mysql_espace_string() en lieu et place de cette fonction. Il est préférable d'enregistrer la chaine sans entitées HTML afin de faciliter la récupération, affichage et édition:
$nom = mysql_espace_string($_POST['nom']);
N'oublie pas d'ajouter ceci lors de l'exécution de la requête:
mysql_query('.....') or die(mysql_error());
On pourra alors voir ce qui cloche dans la requête.