Pb inscription dans base de donnée

Résolu/Fermé
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010 - 5 nov. 2008 à 22:06
avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 - 8 nov. 2008 à 21:31
Bonjour,
Je met en place une newsletter sur mon site. j'ai une page inscription.php qui entre en jeu après la saisie de l'adresse mail, pour la validation et l'inscription sans la base de donnée. Tout semble fonctionner sauf que quand je me rend sur la bdd, elle est vide, aucune adresse mail n'est enregistrée.

Voici la partie du script concerné :

<?php
if($_GET['tru']==1) //si la variable $_GET['tru'] est égale à 1
//on affiche le formulaire
{
?>
<font color="red">Attention, vous avez 25 secondes pour remplir le formulaire. Passé ce délai, celui-ci ne sera plus validePassé ce délai, celui-ci ne sera plus valide.</font>
<form method="post" action="inscription.php?tru=2">
Entrez votre e-mail : <input type="text" name="email" size="25" /><br />
<input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" />
</form>
<?php
}
elseif($_GET['tru']==2) //sinon, si la variable $_GET['tru'] est égale à 2
{
mysql_connect("***", "***", "***");
mysql_select_db("***");
$email_mail = mysql_real_escape_string($_COOKIE['email']);
$email_entre = mysql_real_escape_string($_POST['email']);

if($email_entre==$email_mail) //si les deux adresses e-mail sont identiques
{
mysql_query("INSERT INTO newsletter VALUES('" . $email_entre . "')"); //on l'inscrit dans la base de données MySQL

echo "Vous avez bien été inscrit à la newsletter de Rémunérez-moi.com ! Vous allez être redirigé dans 1 seconde.";

}
else
{

echo "Vous n'avez pas entré la bonne adresse e-mail !";

}
}
else
{
echo "Il y a eu une erreur.";
}
?>


Merci de m'éclairer, je suis novice et ai du mal avec le php
A voir également:

9 réponses

avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
6 nov. 2008 à 00:12
Bonjours.

Moi je mets la requête SQL dans une variable et pas entre les () de mysql_query. Exemple :

$sql = "INSERT INTO newsletter VALUES('','".$champ1."','".$champ2."')";
$req = mysql_query($sql) or die ('Erreur SQL : <br/>'.$sql.'<br/><br/>'.mysql_error());

En espérant que je t'ai aidé ;-)
0
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
6 nov. 2008 à 19:20
Salut!
J'ai bien modifié selon tes conseils et toujours rien, 0 enregistrements dans la bdd...
j'utilise phpmyadmin. Si tu vois autre chose...
Merci
0
avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
6 nov. 2008 à 21:01
Est-tu sur que tu oublie aucun champs dans VALUES ? Par exemple si tu as un champ nommé "id" en auto incrémentation, tu dois comme même le mettre dans la liste VALUES et respecter l'ordre
0
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
7 nov. 2008 à 23:23
voici le code que j'utilise pour inscrire dans la base de donnée :
mysql_query("INSERT INTO newsletter VALUES('" . $email_entre . "')");

Ma base se constitue comme ceci :
Nom : rem_newsletter
Table : newsletter
Champ : email

L'ouverture de ma base est : mysql_select_db("rem_newsletter");
Je dois préciser la table dedans? normalement elle est dans la ligne que je cite plus haut.
Merci
0

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

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
7 nov. 2008 à 23:40
Ok.

Essaye :
<?php
mysql_connect('ton serveur SQL','Ton login','Ton passe');
mysql_select_db('rem_newsletter');

$sql = "INSERT INTO newsletter VALUES('".$email_entre."')";
$req = mysql_query($sql) or die('Erreur SQL : <br/>'.$sql.'<br/><br/>'.mysql_error());

mysql_close();
?>

Soit ça fonctionne : tant mieux
Sinon, SQL doit renvoyer une erreur qui s'affiche à la place du code et donc montre la ...
0
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
7 nov. 2008 à 23:46
Super,ca marche!!!
Est ce que tu peux juste m'expliquer le petit changement?
que je puisse le mettre à profit pour d'autres choses.
En tout cas, merci beaucoup d'avoir pris le temps!!!

Bonne soirée
0
avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
8 nov. 2008 à 01:12
Déjà, j'ai mis la requête SQL dans une variable. La requête est entre les guillemets ("). Dé que je dois mettre une variable dans la requête, j'écris : apostrophe + guillemets + variable (sans oublier le . à gauche et à droite) + guillemets + apostrophe.

Je pense savoir d'où vient le problème dans ta requête :

if($email_entre==$email_mail) //si les deux adresses e-mail sont identiques
{
   mysql_query("INSERT INTO newsletter VALUES('" . $email_entre . "')");
   echo "Vous avez bien été inscrit à la newsletter de Rémunérez-moi.com ! Vous allez être redirigé dans 1 seconde.";
} 


mysql_query doit être dans une variable (du moins je pense) : $req = mysql_query ("ta requête") ...
0
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
8 nov. 2008 à 10:49
OK, je vois.
Merci encore
0
avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
8 nov. 2008 à 21:31
De rien.
Merci à toi d'avoir pensé à mettre le sujet en résolu
0