Bonjour,
Je sais qu’un sujet équivalent a déjà été posté mais cela n’a pas répondu à mon problème.
J’obtiens le message “no database selected” lorsque je charge ma page. J’ai vérifié mes informations de connection et la base est créée. C’est un script pour valider une adresse mail en PHP.
Merci à ceux qui prendront 2 minutes pour se pencher sur mon problème.
<?php
include "config.php";
$db=mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbbase, $db);
$email = nl2br($_POST['email']);
$verif = "!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
if(!empty($email) && preg_match($verif,$email)){
mysql_query('INSERT INTO newsletter (email) VALUES ("'.$email.'")')or die ('Erreur SQL !'.$sql.' '.mysql_error());
echo "Votre email a été enregistré.";}
elseif(!empty($email) && !preg_match($verif,$email)){
echo "Votre email est invalide.";}
mysql_close();
?>
Ca veut dire ce que ça veut dire : il n’y a pas de base de données sélectionnée. Vérifie ce que tu passes à la fonction mysql_select_db($dbbase, $db).
Au passage, ta regexp te protège, certes mais :
si c’est un email, tu n’as pas à faire du nl2br (ie: remplacer \n par /n)
l’injection SQL dans ta requête:
mysql_query(‘INSERT INTO newsletter (email) VALUES ("’.$email.’")’)or die (‘Erreur SQL !’.$sql.’ ’.mysql_error());
echo “Votre email a été enregistré.”;}
Si tu ne vérifiais pas que c’est un email, tu aurais une possible injection SQL, où l’on pourrait par exemple effacer toute ta base de données.
–> mysql_query(‘INSERT INTO newsletter (email) VALUES (’’.mysql_real_escape_string($email).’’)’)or die (‘Erreur SQL !’.$sql.’ ’.mysql_error());
echo “Votre email a été enregistré.”;}
Et fait aussi attention à ta requête, tu as je pense inversé les quotes.
bonjour et merci de te pencher sur mon pb…
alors j’ai commencé par vérifier si les paramètres de connexion étaient bon en passant par un echo et c’est tout bon.
Par contre qu’est ce que tu entends par “inverser les quotes” dans la requête ? … je débute dans la programmation en php et il y a encore un certains nombres de trucs que j’ai du mal à comprendre.
1- essaye de mettre “nomdetabase” dans mysql_connect au lieu de $dbbase
2- il veut dire qu’au lieu d’ecrire “… VALUES (”’.$email.’")’)or die …" il faudrait écrire “… VALUES (’”.$email."’)’)or die …"
1 - j’avais déjà essayé mais ça ne change rien, toujours le même message d’erreur
2 - j’ai remplacé ("’.$email.’") par ce qu’il m’a donné (’’.mysql_real_escape_string($email).’’) et toujours pareil