Probleme d'enregistrement dans la bd

ghisloy Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
j'essaye de mettre le champ newsletters sur mon site afin récupérer les mail pour une éventuelle campagne... voici le code php que j'ai écris mais quand je saisi le mail sur le site, cela ne va pas dans la bd. qu'est ce qui n'a pas marché.Aidez moi à corriger le code


<?php
         
           // Si le formulaire a été envoyé
if (isset ($_POST['OK']))
{
 
 // Si le champs est vide, lancer une erreur
 if (empty ($email))
  $info = 'Veuillez saisir votre adresse mail';
 else
 {
  // Connexion à la bdd
  mysql_connect("localhost", "root","") or die("Echec de connexion au serveur.");; // Connexion à MySQL
  mysql_select_db("feroxmusic") or die("Echec de sélection de la base.");; // Sélection de la base coursphp
 
  // Insertion dans la bdd
  $query = "INSERT INTO newsletters (mail) VALUES('$email')";
 
  if (mysql_query($query))
   $info = 'Inscription fait avec succès';
  else
   $info = 'Erreur lors de votre inscription';
 
  //mysql_close();
 }
}
 
  ?>



et voici le code du champs newsletter:

<p>
                <label for="Abonnement">Abonnez-vous :</label>
                
                <input type="email"  autofocus="autofocus" name="email"  border="2" id="" placeholder="entrez votre mail..."  size="17" maxlength="35" autocomplete="on"/> 
                <input type="submit" name="submit" value="OK" />
                </p>


merci
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Pas mal de choses à corriger, en vrac :
- pas de balise form pour ton formulaire ?
- la variable $_POST['OK'] n'existe pas car l'attribut name de ton input est 'submit' et non 'OK' : à remplacer par $_POST['submit']
- la variable $email n'existera pas (sauf si l'option register_globals est activée, ce qui est fortement déconseillé) : à remplacer par $_POST['email'] (pour récupérer la valeur de ton input avec name="email")
- erreur de syntaxe sur les lignes de connexion à la bdd : tu ne dois avoir qu'un seul point-virgule en fin de ligne
- ta requête comprend un risque d'injection sql, utiliser la fonction mysql_real_escape_string() pour éviter cela :
$query = "INSERT INTO newsletters (mail) VALUES('" . mysql_real_escape_string($_POST['email']) . "')";


Enfin pour t'aider à trouver les erreurs en développement, pense à activer l'affichage des erreurs php.

Bonne journée
0