IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher des données en fonction d'une vérification dans la base de données


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut Afficher des données en fonction d'une vérification dans la base de données
    bonjour,

    Voila j'ai crée un formulaire d'inscription à un voyage (nom, prénom.. un classique quoi). une fois validé les infos sont transférés à la base de donnée.

    J'aimerais savoir comment faire pour que :

    Si une personne est déjà inscrite on affiche la possibilité de modifier ses informations

    Sinon les infos saisies sont ajoutés à la base et on affiche un récapitulatif.

    En gros on vérifie que le nom et prénom saisi ne figure pas déjà dans la base de donnée et on affiche selon cette vérification une page différente (même si je pense qu'on doit écrire les 2 alternatifs dans la même page : celle du fichier de récupération).

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En gros on vérifie que le nom et prénom saisi ne figure pas déjà dans la base de donnée et on affiche selon cette vérification une page différente
    Etant donné que tu dis déjà tout, tu n'as pas besoin de nous en fait.
    Simplement, tu peux faire ton traitement sur une page ou sur des fichiers multiples, c'est selon ton goût.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut
    Bien sur que si j'ai besoin de vous : comment on fait ça en php, je sais ce qu'il faut faire mais pas écrire le code approprié.

    je sais même pas si il faut utilisé du javaScript ou php pour faire ça même.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    1 formulaire nom, prenom
    2 execution d'une requete SELECT pour trouver le nom et le prenom recu
    3 si rien de trouvé, requete INSERT
    4 si trouvé, affichage d'un formulaire pour modifier

    Quel point de pose probleme ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut
    Le formulaire est déjà fait dans un fichier html avec des contrôle de saisie ect..
    Une fois validé il renvoi au fichier de récupération qui contient ces ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    $nomCollege=@$_REQUEST["college"];
    $nomProf=@$_REQUEST["nom"]; /*variable à vérifier */
    $prenomProf=@$_REQUEST["prenom"];/*variable à vérifier */
     
     
    /*si je te suis je dois avoir une requête de ce genre : */
     
    $req = "SELECT *  FROM Inscription WHERE nomProf='$nomProf' AND prenomProf='$prenomProf'" ;
     
    $resultat = mysql_query($req) or die("Problème avec la requête de selection");
     
    if  /*.. c'est la ou je bloque */
     
    {
    /*affichage des modif;*/
    }
    else 
     
    {
     
    $sql = "INSERT INTO Inscription VALUES (
    '',
     
    '$nomCollege',
    '$nomProf',
    '$prenomProf'";
    c'est dans le
    si rien de trouvé
    ou je bloque comment avec cette requête in écrire "si rien est trouvé.."

    (mes champs de table s'intitule : nomProf, prenomProf...)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise mysql_num_rows()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php session_start();
    // --------------------------------
    // connexion a la BD
    // ..... (parametres de connexion)
    // --------------------------------
    // recuperation des donnees transmises par le formulaire
    $nomCollege = mysql_real_escape_string (@$_REQUEST["college"]);
    $nomProf = mysql_real_escape_string (@$_REQUEST["nom"]);
    $prenomProf = mysql_real_escape_string (@$_REQUEST["prenom"]);
    // --------------------------------
    // verification si les nom et prenom figurent deja dans la BD
    $req = "SELECT * FROM Inscription WHERE nomProf='".$nomProf."' AND prenomProf='".$prenomProf."'" ;
    $resultat = mysql_query($req) or die("Probleme avec la requete de selection");
    $nombreSELECT = mysql_num_rows($resultat);
    // si deja presents :
    if ($nombreSELECT != 0)
    {
    	// .... (affichage du formulaire de modification) ....
    }
    // sinon : insertion dans la BD
    else 
    {
    	$listechamps = "nomCollege,nomProf,prenomProf";
    	$listevaleurs = "'".$nomCollege."','".$nomProf."','".$prenomProf."'";
    	$requeteNEW = "INSERT INTO Inscription (".$listechamps.") VALUES(".$listevaleurs.")";
    	$resultNEW = mysql_query($requeteNEW)  or die('Erreur SQL !<br />'.$requeteNEW.'<br />'.mysql_error());
    	echo 'Votre inscription a été enregistrée';
    }
    ?>

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut
    OK, je connaissais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_real_escape_string
    et
    Je viens de pensé, si on utilise un count à la place de select* pour compter les personnes ayant déjà leur nom dans la base, ça revient au même ou l'autre méthode est meilleur ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Avec ce que j'ai mis, la requete est deja faite pour le cas de l'affichage du formulaire de modification.
    Avec count, tu n'auras que le count ! ...

    mysql_real_escape_string : http://fr.php.net/manual/fr/function...ape-string.php
    pour eviter que des gens mal-intentionnés "pourrissent" ta BD.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut
    OK merciii je vais tester ça.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut
    Haa sii la structure fonctionne, super MERCI.

    Mais pour afficher les modification j'avais l'habitude de le faire en HTML comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Nom <input name="nomAdh" type="text" value=<?echo $nombreSELECT['nomProf'];?>>
    et dans le php il dois surement y'avoir des quottes ou autres mais je ne sais pas où les placer

    sinon quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $nombreSELECT['nomProf'];
    ça ne m'affiche rien c'est normal ?

    Ou sinon étant donnée que dans le formulaire de modification j'aurais besoin de refaire des contrôles de saisies en JavaScript(et je sais pas si on peut en mettre dans du PHP), est ce possible de rediriger vers une autre page dans le traitement du "If". cette page serait le fichier de modif mais la encore fonctionnera t il étant donnée que la requête sera dans le fichier de récupération ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    OUI ! c'est normal que ca n'affiche rien
    Tu confonds mysql_fetch_array($resultat) et mysql_num_rows($resultat)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    if ($nombreSELECT != 0)
    {
    	// affichage du formulaire de modification
    	while ($val = mysql_fetch_array($resultat)) 
    	{
    ?>
    	<form method="POST" action="traiter-la-modif.php">
    	college <input type="text" name="college" size="20" value="<?php echo $val['nomCollege']; ?>" />
    	nom <input type="text" name="nom" size="20" value="<?php echo $val['nomProf']; ?>" />
    	prenom <input type="text" name="prenom" size="20" value="<?php echo $val['prenomProf']; ?>" />
    	<input type="submit" value="MODIFIER" name="MODIFIER" />
    	</form>
    <?php
    }
    // sinon : insertion dans la BD
    else 
    {
    	// ...........
    ?>

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut
    ouiii je pensais que mysql_num_rows remplaçait mysql_fetch_array.

    En tous cas merci pour la syntaxe j'avais pas pensé à écrire le formulaire entre une fermeture et une ouverture de balise PHP, j'espère que ces réflexes vont venir un jour, demain je vais m'acheter "PHP5 avancé 5e edition" j'espère qu'il va m'aider à y parvenir. On me la recommander sur ce site.

    enfin bref je vais tester tous ça merciii

  14. #14
    Invité
    Invité(e)
    Par défaut
    Remarque :
    il existe une polemique des "pour" et des "contre" le fait de mettre du code html a l'interieur, ou a l'exterieur du code PHP !

    Pour ma part, j'ai choisi la LISIBILITE
    (peut-etre au detriment de la performance ? ...)
    Quand il y a peu d'enregistrement a lister (dans ton cas : 1 seul) :
    c'est kif kif bourricot !

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 30
    Points
    30
    Par défaut
    Super ça fonctionne clean Merci.

    Sinon par curiosité j'aimerais savoir lorsque que tu as fait la requête d'insertion, tu as mis la liste des champs et valeurs dans une variable pour chacun :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $listechamps = "nomCollege,nomProf,prenomProf";
    	$listevaleurs = "'".$nomCollege."','".$nomProf."','".$prenomProf."'";
    	$requeteNEW = "INSERT INTO Inscription (".$listechamps.") VALUES(".$listevaleurs.")";
    je connaissais pas cette méthode moi je fessait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "INSERT INTO Inscription VALUES (
    '',
     
    '$nomCollege',
    '$nomProf',
    '$prenomProf',";

    ta as utilisé ta méthode pour des raisons de sécurité aussi ou c'est "kif kif" ?

  16. #16
    Invité
    Invité(e)
    Par défaut
    Ca revient au meme.
    Du moment que c'est lisible (et facile a degoguer) !

    C'est quand meme plus sûr de nommer les champs, si on ne veut pas enregistrer n'importe quoi n'importe où !
    Une erreur de frappe est vite arrivée ...

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/04/2011, 06h06
  2. Afficher des informations en fonction d'une zone précédement saisie
    Par ybezier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/12/2010, 10h01
  3. Réponses: 5
    Dernier message: 31/03/2010, 13h20
  4. [MySQL] Afficher des images dont l'URL se trouve dans ma base de données
    Par body72 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/02/2008, 18h11
  5. Afficher des résultats en fonction d'une valeur de liste
    Par subnox dans le forum VBA Access
    Réponses: 13
    Dernier message: 14/08/2007, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo