Vérification si aucun résultat enregistré.

Fermé
Rick - 30 oct. 2017 à 13:50
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 30 oct. 2017 à 20:39
Bonjour, je sollicite vraiment l'aide de cette communautés je tiens déjà à remercier cette forum et ces membres du fait qu'il soit libre donc pas besoin d'inscriptions vraiment merci. Voilà mon problème je suis débutant en PHP, j'ai une page formulaire, et une page de traitement de données. la page formulaire est entièrement en HTML donc je crois avoir réussi tout le code.
Mais le PB est la page traitement qui traite le formulaire. Bon voici mon code.
<?php  

// on échappe les variable avec strip_tags un exemple sur le prénom 

$prenom=strip_tags($_POST['prenom'];

// je vous donne celui du mot de passe en même temps car je doute un peu de ce que j'ai fait 

$passe_hache=sha1(strip_tags($_POST['motDePasse'];

//jusque-là quand je teste ça va

/*La j'aimerai créer un if avec des preg_match

Pour vérifier les valeurs entrées par l'utilisateur. Est-il possible de créer un if avec de preg_match? */

// donc

If(preg_match("#^[A-Z][a-z]{2,}$#", $prenom) AND preg_match("#^[A-Z]([a-z|A-Z]){2,}$#", $nom) AND $sexe==femme OR $sexe==homme AND preg_match("#^([1-2]\d|0[1-9]|3[0-1])[ .-\/]([0][1-9]|[1][0-2])[ .-\/]([1][0-9]\d{2})$#", $dateDeNaissance) AND preg_match("#^[a-z0-9._-]+@[a-z0-9]{2,}\.[a-z]{2,4}$#", $contact) AND $passe_hache==$confirme_passe)

// instructions si tout est OK

{

//on se connecte a la base de données pour chercher si le contact n'existe pas déjà

try {

$bdd=new PDO('mysql:host=localhost; dbname=test', 'root', '', array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));}

catch (Exception $e)

{

 die('erreur:' $e->getMessage());

}

// si il n'ya aucune erreur de connexion à la base 

// on cherche le contact dans la table

$req=bdd->prepare('SELECT contact FROM inscriptions WHERE contact=?');

// variable qui enregistre les réponse

$reponse=$req;

// on teste si on trouve une réponse

If($reponse!=0)

{

$erreur_contact="Ce contact est déjà utilisé "

//rediriger bon j'ai aussi crû que c'était la le problème donc j'enlèvais et remettais pour voir le comportement de la page cible

// renvoyer le formulaire si le contact existe déjà

header('location:index.php');

}

// sinon on enregistré les informations si le contact n'existe pas 

else {

// tester la connexion à la base

// enregistrements des données

$req=bdd->prepare('INSERT INTO inscriptions (prenom, nom, sexe, contact, mot_de_passe) VALUE (:prénom, :nom, :sexe, :contact, : motDePasse)');

$req->excute(array(

'prenom'=>$prenom,

'nom'=>$nom,

'sexe'=>$sexe,

'contact'=>$contact,

'mot_de_passe'=>$motDePasse));

echo " Bienvenue sur la plateforme"

}

/* e sinon relier au principal si donc on est sorti des {}*/

else{ écho "Vous avez mal rempli le formulaire" ;

/* ou encore des if imbriqué pour tester chaque valeur et affiché une erreur */}

?>


Bon, déjà j'aimerai comprendre déjà pourquoi la page qui traite le formulaire est blanche or j'ai intro quelque HTML et deux s'il y'a une alternative plus simple. Et aussi peut-être avoir une explication sur les if imbriqué et leur leur différence s'il y'a avec les elseif
Vraiment merci d'avance pour votre aide.


A voir également:

3 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
30 oct. 2017 à 14:11
Salut,

Tu as plusieurs erreurs de syntaxe dans ton code php, celui-ci ne peut donc pas être exécuté et le serveur retourne alors une page vide.

Pense à regarder le journal d'erreur (error log) de ton serveur web pour identifier et corriger ces erreurs :
- parenthèses manquantes ligne 5 et 10
- guillemets manquants pour les valeurs "homme" et "femme" ligne 21
- point-virgule manquant ligne 62
- function excute inexistante ligne 84
- point-virgule manquant ligne 96
- function écho inexistante et point-virgule manquant ligne 102
- plus celles que je n'ai pas remarqué ...

Bonne journée,
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
30 oct. 2017 à 14:27
0
Merci pour ces liens je vais tout de suite visionné.
Voici quelques modifications apporter à mon code
<?php  

// on échappe les variable avec strip_tags un exemple sur le prénom 

$prenom=strip_tags($_POST['prenom']);

// je vous donne celui du mot de passe en même temps car je doute un peu 

$passe_hache=sha1(strip_tags($_POST['motDePasse']);

//jusque-là quand je teste ça va

/*La j'aimerai créer un if avec de preg_match

Pour vérifier les valeurs entrées par l'utilisateur. Est-il possible de créer un if avec de preg_match? */

// donc

If(preg_match("#^[A-Z][a-z]{2,}$#", $prenom) AND preg_match("#^[A-Z]([a-z|A-Z]){2,}$#", $nom) AND $sexe=="femme" OR $sexe=="homme" AND preg_match("#^([1-2]\d|0[1-9]|3[0-1])[ .-\/]([0][1-9]|[1][0-2])[ .-\/]([1][0-9]\d{2})$#", $dateDeNaissance) AND preg_match("#^[a-z0-9._-]+@[a-z0-9]{2,}\.[a-z]{2,4}$#", $contact) AND $passe_hache==$confirme_passe)

// instructions si tout est OK

{

//on se connecte a la base de données pour chercher si le contact n'existe pas déjà

try {

$bdd=new PDO('mysql:host=localhost; dbname=test', 'root', '', array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));}

catch (Exception $e)

{

 die('erreur:' $e->getMessage());

}

// si il n'ya aucune erreur de connexion à la base 

// on cherche le contact dans la table

$req=bdd->prépare('SELECT contact FROM inscriptions WHERE contact=?');

// la requette 
$req->execute(array ($contact));
$resultat = $req
// recuperation de la variable
while ($resultat = $req->fetch())
{
$erreur_contact="Ce contact est déjà utilisé ";}

//rediriger bon j'ai aussi crû que c'était la le problème donc j'enlèvais et remettais pour voir le comportement de la page cible

// renvoyer le formulaire si le contact existe déjà

header('location:index.php');

}

// sinon on enregistré les informations si le contact n'existe pas 

else {

// tester la connexion à la base

// enregistrements des données

$req=bdd->prepare('INSERT INTO inscriptions (prenom, nom, sexe, contact, mot_de_passe) VALUE (:prénom, :nom, :sexe, :contact, : motDePasse)');

$req->excute(array(

'prenom'=>$prenom,

'nom'=>$nom,

'sexe'=>$sexe,

'contact'=>$contact,

'mot_de_passe'=>$motDePasse));

echo " Bienvenue sur la plateforme"

}

//le sinon relier au principal si donc on est sorti des {}

else{ écho "Vous avez mal rempli le formulaire" ;}

?>

J'espère avoir fait moins d'erreur cette fois-ci et moins de point-virgule oublie :D
0
Rick > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
30 oct. 2017 à 14:53
Merci pour les liens.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 30 oct. 2017 à 14:59
Il en reste encore :
- il manque encore une parenthèse ligne 10 (2 ouvertes, 1 fermé)
- oublie du $ pour la variable bdd ligne 52 et 79
- pas d'accent dans les functions php (prépare, écho)
- fonction excute à corriger en execute
- point virgule manquant à la fin de echo " Bienvenue sur la plateforme"

En plus de regarder le journal d'erreur, tu peux aussi utiliser une IDE pour détecter automatiquement les erreurs de syntaxe.
0
Rick > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
30 oct. 2017 à 15:08
Cher Jordane45 je viens de consulter les liens.sauf que ma page PHP.ini ne s'affiche pas exactement comme sur le lien. J'utilise la version 5.3.4 de PHP. En dirigeant la souris sur configuration PHP track error est coché chez moi, la page PHP.ini affiche About PHP.ini or sur le liens se n'est pas ça.
0
Vraiment merci Pitet j'ai du faire certaines de ces erreur ici en rédigeant le message comme par exemple "homme" or "femme"
Encore merci pour ces remarques et surtout l'attention.
De ce fait je vais essayer de bien vérifier sur mon travail. Juste une autre questions si cela dérangé pas. Donc on peut utiliser des preg_match dans un if? Merci
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
30 oct. 2017 à 14:42
Oui, on peut utiliser preg_match dans un if : https://www.php.net/manual/fr/function.preg-match.php#example-5373
0
Rick > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
Modifié le 30 oct. 2017 à 16:05
Merci pour votre aide monsieur ou madame Pitet, les erreurs s'affichent déjà de nouveau j'ignore quelle a été ma manipulation, pour que ceux-ci ne s'affichent plus.
Jordane45 m'a remit un lien et c'est sur ce lien que j'ai pu avoir la solution. Sauf que sur le lien on me propose deux solutions.
1- écrire un code en tout début de page pour afficher les erreurs, ce que j'ai fait et ça passe bien.
2- faire des modifications sur la page PHP.ini problème les code sur le lien donc la page que Jordan45 m'a remis et les miens sur la PHP.ini ne sont pas identique, donc de peur de créer un autre problème j'hésite à copier leur code et de le coller sur ma page à moi.
Il faut toute fois souligner que les erreurs s'affichaient déjà quand j'avais installé le wamp après plus rien. Donc c'était sûrement du à une mauvaise manipulation de ma part.
Vraiment merci à vous, sans vous je n'aurais pas compris que j'ai moi-même sûrement fait bugguer wamp.
0
Pour l'affichage des erreurs ça va déjà merci cher Jordane45, j'ai dû directement introduire le code
<?php error_reporting(E_ALL); ini_set ('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ?>
sur ma page, ce que je ne comprend pas est que ces erreurs s'affichaient d'abord, j'ignore la manipulation que j'ai fais pour que cela ne s'affiche plus.
Je souhaitais savoir, s'il est possible de recopier le code qui est sur le lien que vous m'avez envoyé et de l'insérer sur ma page PHP.ini, parce que franchement s'il faut à chaque fois écrire le code error_reporting en tout début de code sur toutes mes pages PHP se sera long. Est-ce possible de faire comme suggèrer? Encore merci à tout les deux.
0