Formulaire [Résolu]

Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
- - Dernière réponse : jordane45
Messages postés
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
- 19 juil. 2018 à 12:07
Bonjour les amis j'ai besoin de votre aide
je veux créer un formulaire dont l'un des inputs comporte une liste de donnés que je dois récupérer dans une autre table déjà remplir dans la base de donnée
Afficher la suite 

Votre réponse

3 réponses

Messages postés
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,

Tu veux récupérer ces données au moment ou la page s'affiche ou bien après le click sur un bouton ... ou... autrement ???
Qu'as tu commencé à coder ?
Quel souci EXACT rencontres tu ?

bangado93
Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
-
OUi au moment ou la page s'affiche et je pourrai choisir celle que je veux
Commenter la réponse de jordane45
Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
0
Merci
je veux enregistrer la table médicin dont le slr est
( idmed,nommed, prenommed, mailmed, #codehopita,#codeser)
les tables Hopital(codehopita, Nomhop, adresshop) et Servive(codeser, libelser) sont déjà enregistré et pour l'enregistrement des médecin je veux qu'on choisir l'hopital et le service
jordane45
Messages postés
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
-
Et tu n'as pas répondu à mon autre question : Qu'as tu commencé à coder ???

Sachant que là... il semble que tu ne veuilles que faire une simple requête SQL ( SELECT) et boucler sur son résultat pour le mettre dans une liste déroulante html
bangado93
Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
-
oui j'ai commencer à coder mais je ne sais pas comment faire pour afficher les informations dans l'input comme je le veux
bangado93
Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
-
voici le code que j'ai eu à écris
<!DOCTYPE html>
<html>
<head>
 <title>inscription</title>
</head>
<body>
 <form action="essaie.php" method="post">
  <fieldset>
   Inscrition des médecins <br/><br/>
   <label for="hop">Hopital</label>
   <input type="text" name="codehopita" id="hop"><br/><br/>
   <label for="oop">Service</label>
   <input type="text" name="codeser" id="oop"><br/><br/>
   <label for="hp">Nom</label>
   <input type="text" name="nommed" id="hp"><br/><br/>
   <label for="ph">Prenom</label>
   <input type="text" name="prenommed" id="ph"><br/><br/>
   <label for="lh">Email</label>
   <input type="email" name="mailmed" id="lh"><br/><br/>
   <input type="submit" name="submit" value="Enregistrer">
<!-- les données de la table hopital étant déjà enregistrer dans la table hôpital et ceux de service dans service et j'aimerais que si je clique sur l'input dont le name est codehopita que les informations de la table hopital s'affiche et que je puisse choisir-->

  </fieldset>
 </form>
 <?php 
   $connexion=new PDO("mysql:host=localhost;dbname=pgrdvdm","root","");
           $connexion->setAttribute(PDO :: ATTR_ERRMODE,PDO ::ERRMODE_EXCEPTION);
 if (isset($_POST['submit'])) {
          $codehopita=htmlentities(trim($_POST['codehopita']));
          $codeser=htmlentities(trim($_POST['codeser']));
          $nommed=htmlentities(trim($_POST['nommed']));
          $prenommed=htmlentities(trim($_POST['prenommed']));
          $mailmed=htmlentities(trim($_POST['mailmed']));
         if ($codehopita&&$codeser&&$nommed&&$prenommed&&$mailmed) {
         
            $insert=$connexion->prepare("INSERT INTO medecin1(nommed,codeser,prenommed,codehopita,mailmed) VALUES(?,?,?,?,?)");
          $insert->execute(array($nommed,$codeser,$prenommed,$codehopita,$mailmed)); 
   
          echo '<h4> Enregistrement effectuer avec succès !! Cliquez <a href="inscrirelabo.class.php">ici</a> pour d\'autre enregistrement</h4>';

                  } else echo "les champs doivent être saisir";
              }

  ?>

</body>
</html>
Commenter la réponse de bangado93
Messages postés
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
0
Merci
Essaye ça :
 <?php 
 //Affichage des erreurs PHP
 error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexion propre à la bdd en PDO
try{
  $bdd =new PDO('mysql:host=localhost; dbname=pgrdvdm; charset=utf8', 'root', '');
  // Activation des erreurs PDO
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}
  
  
//récupération PROPRE des variables AVANT de les utiliser
 $codehopita = !empty($_POST['codehopita']) ? (trim($_POST['codehopita'])) : "";
 $codeser = !empty($_POST['codeser']) ? (trim($_POST['codeser'])) : "";
 $nommed = !empty($_POST['nommed']) ? (trim($_POST['nommed'])) : "";
 $prenommed = !empty($_POST['prenommed']) ? (trim($_POST['prenommed'])) : "";
 $mailmed = !empty($_POST['mailmed']) ? (trim($_POST['mailmed'])) : "";

 if (isset($_POST['submit'])) {
  if ($codehopita&&$codeser&&$nommed&&$prenommed&&$mailmed) {
  
    //preparation de la requete 
    $sql = "INSERT INTO medecin1(nommed,codeser,prenommed,codehopita,mailmed) VALUES(?,?,?,?,?)"
    $datas = array($nommed,$codeser,$prenommed,$codehopita,$mailmed);

    //Execution de la requete
    try{
      $requete = $bdd -> prepare($sql) ;
      $requete->execute($datas) ;
    }catch(Exception $e){
      // en cas d'erreur :
       echo " Erreur ! ".$e->getMessage();
       echo " Les datas : " ;
      print_r($datas);
    }
    echo '<h4> Enregistrement effectué avec succès !! Cliquez <a href="inscrirelabo.class.php">ici</a> pour d\'autres enregistrements</h4>';
  } else {
    echo "les champs doivent être saisis";
  }
 }
 
 //liste des hopitaux
 $sql = "SELECT code FROM hopital";
 $datas = NULL;
//Execution de la requete
  try{
    $requete = $bdd -> prepare($sql) ;
    $requete->execute($datas) ;
    $arr_Hopital = $requete->fetchAll(); // on stocke le resultat de la requete dans un array
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
    print_r($datas);
  }
 
 

?>

<!DOCTYPE html>
<html>
<head>
 <title>inscription</title>
</head>
<body>
 <form action="essaie.php" method="post">
  <fieldset>
   Inscrition des médecins <br/><br/>
   <label for="hop">Hopital</label>
   <select name="codehopita">
    <option>Selectionnez un hopital</option>
    <?php
     if(!empty($arr_Hopital)){
       //on boucle sur l'array pour générer les OPTION du <SELECT>
       foreach ($arr_Hopital as $hop){
        $code_hop = $hop['code'];
        echo "<option value='$code_hop'>$code_hop</option>";
       }
     }
    ?>
   </select>
 
   <label for="oop">Service</label>
   <input type="text" name="codeser" id="oop" value="<?php echo $codeser ;?>"><br/><br/>
   <label for="hp">Nom</label>
   <input type="text" name="nommed" id="hp" value="<?php echo $nommed ;?>"><br/><br/>
   <label for="ph">Prenom</label>
   <input type="text" name="prenommed" id="ph" value="<?php echo $prenommed ;?>"><br/><br/>
   <label for="lh">Email</label>
   <input type="email" name="mailmed" id="lh" value="<?php echo $mailmed ;?>"><br/><br/>
   <input type="submit" name="submit" value="Enregistrer">
  <!-- 
      les données de la table hopital étant déjà enregistées dans la table hôpital 
      et ceux de service dans service et j'aimerais que si je clique sur l'input dont le name est codehopita 
      que les informations de la table hopital s'affichent et que je puisse choisir
   -->
  </fieldset>
 </form>
</body>
</html>

Bien entendu.. ne connaissant pas la structure de ta table hopital.. j'ai du improviser...
Je te laisse faire les modifications nécessaires.

NB: Quand tu postes du code sur le forum, merci de le faire en utilisant les balises de code (et en y précisant le langage afin d'avoir la coloration syntaxique.)
J'ai édité ton message pour les mettre....
Merci d'y penser la prochaine fois.

NB² : Pour faire des listes.. il faut utiliser la balise html <select>. Tu trouveras la documentation necessaire sur le net sans aucune difficulté.

NB3 : Avant de poursuivre dans tes dev.. je t'invite à appliquer les consignes données dans ces deux liens :
https://www.commentcamarche.com/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://www.commentcamarche.com/faq/46512-pdo-gerer-les-erreurs
jordane45
Messages postés
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
-
Pour une "nouvelle" question il est d'usage d'ouvrir une nouvelle discussion sur le forum.
Merci d'y penser à l'avenir.

Quoi qu'il en soit :

je veux créer un formulaire d'inscription et de connexion , une fois que l'utilisateur viens s'inscrire il attend que son inscription soit valider par un administrateur avant qu'il puise se connecter.En premier lieu les inscriptions de l'utilisateurs sont enregistrer dans une table utilisat(Pseudo, email, pass) je veux qu'une fois que l'inscription soit valider que les informations de la table utilisat soit entrer dans la table utilisateur ayant les mêmes attributs

Il ne faut pas utiliser DEUX tables mais une seule.

Dans la table UTILISATEUR (id, pseudo, mail, pass, valide, nom, prenom, ville ...etc... )
Le champ enable est par défaut à 0 et lorsqu'un ADMIN valide l'inscription tu passes ce champ à 1.


Au passage ... rowCount() ne doit pas être utilisé sur des requêtes SELECT (voir la documentation officielle de php.).
A la place, on fera un COUNT sur le fetchAll de la requête
Par exemple :
$sql = "SELECT pseudo FROM utilisat WHERE pseudo = :pseudo" ;
$datas = array(':pseudo'=>$pseudo);
try{
  $prep = $bdd->prepare($sql);
  $prep->execute($datas);
  $result  = $prep->fetchAll() ; //on stocke le resultat dans un array
  $pseudo_compte = count($result);
}catch(Exception $e){
     // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
    print_r($datas);
}

Tu remarqueras que j'ai, ici aussi, mis des TRY/CATCH et utilisé une requête préparée !!! C'est comme ça qu'il faut faire !
bangado93
Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
-
Ok et comment effectuer la validation
jordane45
Messages postés
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
-
Une simple requête UPDATE depuis la page d'administration de tes utilisateurs....
ou à la mano dans la bdd directement en attendant que tu créés cette page.
bangado93
Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
-
en réalité je ne sais comment la page de validation serais
jordane45
Messages postés
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
> bangado93
Messages postés
30
Date d'inscription
mardi 19 juin 2018
Dernière intervention
27 juillet 2018
-
Dans ce cas je t'invite tout de suite à arrêter de coder et de prendre du temps pour la rédaction d'un cahier des charges puis des spécificités fonctionnelles !
Ecrire du code sans savoir où on va est totalement contre productif et amène à des erreurs de conception et/ou à l'écriture de code bogué ou impossible à maintenir par la suite.

Histoire de t'orienter pour cette partie là :
Une page accessible uniquement aux administrateurs dans laquelle tu listes les utilisateurs (sous forme de tableau par exemple) en "attente de validation" (donc ceux dont le champ enable = 0 )
Lorsqu'un admin clique sur un utilisateur, ça lance le script de mise à jour qui fera l'update du champ enable en le passant à 1.
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.