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 :

Enregistrer id (mysqli_insert_id)


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Enregistrer id (mysqli_insert_id)
    Bonjour, je souhaite enregistrer des patients et avec les informations saisie créer un code. Par exemple pour le patient Anthony Petit qui est né le 06/11/1981 et qui est homme j'aurai le code : 061181PAH. Mais je souhaite rajouter son identifiant à la fin du code, afin que le code soit vraiment unique. J'ai essayé avec mysqli_insert_id mais sa m'affiche 0 à la fin du code de chaque saisie.
    J'ai un autre petit souci quand il n'y a aucune données saisie dans les textbox et dans le radio button j'ai ce message d'erreur "Undefined index: sexe ... on line 45"

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Ajouter</title>
    	<meta charset="utf-8">
    	<link rel="stylesheet" type="css" href="design.css">
    </head>
    <body>
    <?php
    	require"auth_session.php";
     
    	include "nav.php";
    	nav()
    ?>
    <a href="editerProfil.php" class="deconnecter">Profil</a><br>
    <a href="deconnecter.php" class="deconnecter">Se déconnecter</a>
    	<header>
    		<br><br><br>
    		<h2 align="center" class="titreH2">Ajouter un patient</h2><hr>
    		<link rel="stylesheet" type="text/css" media="screen" href="design.css">
    	</header>
    	<article>
    	<div align="center" class="formulaire"><br>
    	<form action="ajoutPatient.php" method="post">
    		<input type="text" name="nomPatient" placeholder="Nom" class="textbox"><br><br>
    		<input type="text" name="prenomPatient" placeholder="Prénom" class="textbox"><br><br>
    		<input type="text" name="dateNaissance" placeholder="Naissance JJ/MM/AAAA" class="textbox"><br><br>
    		Sexe : <input type="radio" name="sexe" value="Femme">Femme
    				<input type="radio" name="sexe" value="Homme">Homme<br><br>
    		<input type="submit" name="submit" value="Envoyer" class="bouton">
    		</form>
    	</div>
    <?php
    		//connecter à la base de données
    	include"connect_bdd.php";
     
     
     
    	if(isset($_POST['submit']))
    	{
    		//recuperation des infos avec la methode POST
    		$nom = $_POST['nomPatient'];
    		$prenom = $_POST['prenomPatient'];
    		$date = $_POST['dateNaissance'];
    		$sexe = $_POST['sexe'];
     
     
    		//création de l'id du patient
    		$numDossier1 = substr($date, 0,2);
    		$numDossier2 = substr($date, 3,2);
    		$numDossier3 = substr($date, 8, 2);
    		$numDossier4 = substr($nom, 0,1);
    		$numDossier5 = substr($prenom, 0,1);
    		$numDossier6 = substr($sexe, 0,1);
     
    		$totalDossier = $numDossier1 . $numDossier2 . $numDossier3 . $numDossier4 . $numDossier5 . $numDossier6 . mysqli_insert_id($lienBd);
     
    		//requête SQL pour insérer les données saisie dans la bdd
    		$req = "INSERT INTO patient (dateNaissance, nom, prenom, sexe, idDossierPatient) VALUES ('$date', '$nom', '$prenom', '$sexe', '$totalDossier')";
    		//$req1 = "INSERT INTO dossierpatient (numDossierArchive) VALUES('$totalDossier')";
     
    		//si les textbox prenom, nom et date sont vide
    		if(isset($nom) AND !empty($nom) AND isset($prenom) AND !empty($prenom) AND isset($dateNaissance) AND !empty($dateNaissance) AND isset($sexe) AND !empty($sexe))
    		{
    			//execution de la requête
    			$result = mysqli_query($lienBd, $req);
     
    			echo"<script>alert('$nom $prenom a été enregistré avec le numero $totalDossier');</script>";
    		}
    		else
    		{
    			echo"<script>alert('Veuiller remplir tous les champs');</script>";
    		}
    	}
    ?>
    	</article>
    	<footer>
    		<?php
    			include("footer.php");
    			footer()
    		?>
    	</footer>
    </body>
    </html>
    Merci par avance de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ tu fais mysqli_insert_id avant l'INSERT !
    Ça ne va pas, évidemment.

    Il faut le faire après, PUIS rajouter le code avec un UPDATE.

    2/ Quant aux checkbox et radio, SEULS ceux cochés sont envoyés.

    Je te conseille vivement de faire une gestion d'erreurs avant insert...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta réponse et pour le conseil, je vais essayer.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Pour insérer l'id ça marche parfaitement, merci.
    J'ai toujours une erreur 'undefined index : sexe' et 'undefined variable : result'
    Concernant la gestion d'erreur, je dois en faire une si la requête n'est pas bonne ? Je n'ai pas trop compris.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    if(isset($_POST['submit']))
    	{
     
    		//recuperation des infos avec la methode POST
    		$nom = $_POST['nomPatient'];
    		$prenom = $_POST['prenomPatient'];
    		$date = $_POST['dateNaissance'];
    		$sexe = $_POST['sexe'];
     
    		//création de l'id du patient
    		$numDossier1 = substr($date, 0,2);
    		$numDossier2 = substr($date, 3,2);
    		$numDossier3 = substr($date, 8, 2);
    		$numDossier4 = substr($nom, 0,1);
    		$numDossier5 = substr($prenom, 0,1);
    		$numDossier6 = substr($sexe, 0,1);
     
    		$totalDossier = $numDossier1 . $numDossier2 . $numDossier3 . $numDossier4 . $numDossier5 . $numDossier6;
     
    			//si les textbox prenom, nom et date sont vide
    			if(!isset($nom) OR empty($nom) OR !isset($prenom) OR empty($prenom) OR !isset($date) OR empty($date))
    			{
    				echo"<script>alert('Veuiller remplir tous les champs');</script>";
    			}
    			else
    			{
    				//requête SQL pour insérer les données saisie dans la bdd
    				$req = "INSERT INTO patient (dateNaissance, nom, prenom, sexe, idDossierPatient) VALUES ('$date', '$nom', '$prenom', '$sexe', '$totalDossier')";
    				$result = mysqli_query($lienBd, $req);
    				echo"<script>alert('$nom $prenom a été enregistré avec le numero $totalDossier');</script>";
    			}
     
    			if($result == 1)
    			{
    				$id = mysqli_insert_id($lienBd);
    				$reqId = "UPDATE patient SET idDossierPatient = CONCAT(idDossierPatient, id) WHERE id = $id";
    				$resulat2 = mysqli_query($lienBd, $reqId);
    			}
    	}

  5. #5
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    il faut poster l'image de l'erreur.

  6. #6
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    D'après tes explication, celà signifie que tes variables n'existe pas. Rassures-toi que tu transmets bien $_POST['sexe'] et que $result est assigné.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je t'ai déjà expliqué : il faut faire une gestion d'erreurs.

    • vérifie isset($_POST['sexe']).
    • et/ou coche "Masculin" par defaut

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Nom : CaptureError.PNG
Affichages : 67
Taille : 60,6 Ko

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    J'ai coché par défaut homme et je n'ai plus de message d'erreur pour 'sexe' mais j'ai toujours le message d'erreur pour 'result' à la ligne 70.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Active tes cellules grises : c'est une question de logique.

    Indice : $result est créé dans un if dans lequel il ne rentre pas...


    N.B. Pour info : le message d'erreur permet de savoir à quelle LIGNE (line:...) se situe le problème.
    DONC : merci de lire, comprendre, (et éventuellement nous montrer) le message d'erreur COMPLET.


    N.B. Tu es sûr d'être "Webmaster" ?
    Car il s'agit d'erreurs (et de solutions) très basiques...

  11. #11
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    1. J'ai ajouté un test sur $_POST['sexe'] (savoir s'il est poster ou s'il est vide).
    2. $result est un booléen tu ne peux pas faire
      Code php : Sélectionner tout - Visualiser dans une fenêtre à part
      if($result==1){...}
      mais plutot
      Code php : Sélectionner tout - Visualiser dans une fenêtre à part
      if($result){...}// Car si ta requête s'exécute, il sera à true et le code dans le bloc if ($result){...] sera exécuté. Rien dans le cas où ta requête n'a pas été exécuté
      .
    3. Voici le code final

    Code php : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    if (isset($_POST['submit'])) {
     
     
        //recuperation des infos avec la methode POST
        $nom = $_POST['nomPatient'];
        $prenom = $_POST['prenomPatient'];
        $date = $_POST['dateNaissance'];
        $sexe = $_POST['sexe'];
     
     
        //création de l'id du patient
        $numDossier1 = substr($date, 0, 2);
        $numDossier2 = substr($date, 3, 2);
        $numDossier3 = substr($date, 8, 2);
        $numDossier4 = substr($nom, 0, 1);
        $numDossier5 = substr($prenom, 0, 1);
        $numDossier6 = substr($sexe, 0, 1);
     
     
        $totalDossier = $numDossier1 . $numDossier2 . $numDossier3 . $numDossier4 . $numDossier5 . $numDossier6;
     
     
        //si les textbox prenom, nom et date sont vide
        if (!isset($nom) OR empty($nom) OR ! isset($prenom) OR empty($prenom) OR ! isset($date) OR empty($date) OR ! isset($sexe) OR empty($sexe)) {
            echo"<script>alert('Veuiller remplir tous les champs');</script>";
        } else {
            //requête SQL pour insérer les données saisie dans la bdd
            $req = "INSERT INTO patient (dateNaissance, nom, prenom, sexe, idDossierPatient) VALUES ('$date', '$nom', '$prenom', '$sexe', '$totalDossier')";
            $result = mysqli_query($lienBd, $req);
            echo"<script>alert('$nom $prenom a été enregistré avec le numero $totalDossier');</script>";
        }
     
     
        if ($result) {
            $id = mysqli_insert_id($lienBd);
            $reqId = "UPDATE patient SET idDossierPatient = CONCAT(idDossierPatient, id) WHERE id = $id";
            $resulat2 = mysqli_query($lienBd, $reqId);
        }
    }

  12. #12
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Qu'est ce que ça donne?

  13. #13
    Invité
    Invité(e)
    Par défaut
    @Nazoide :

    1/tu fais la même erreur de logique.

    $result est définit dans le else.
    S'il ne passe pas dans ce else, alors $result n'est pas défini.

    On peut par exemple le définir AVANT le 1er if :
    2/ quant à 'sexe', c'est ICI qu'il faut faire le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $sexe = $_POST['sexe'];
    GESTION D'ERREUR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $sexe = (isset($_POST['sexe'])? $_POST['sexe'] : '';
    IDEM pour les AUTRES !!

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Effectivement il suffisait de déclarer la variable result avant la condition. Merci de ton aide Nazoide et merci à toi aussi jreaux62 d'avoir résolu mon problème et de toujours être présent sur le forum.
    Non je ne suis pas WebMaster, je suis étudiant en informatique en 1ère année. Je me suis inscrit rapidement, j'ai mis webmaster parce qu'il n'y avait pas étudiant, je vais modifier ça. Je viens de commencer le php cette année donc je n'ai pas encore la logique et les connaissances d'un développeur.
    Merci encore de ton aide
    Je te souhaite une bonne journée

    Rectification : il y a bien étudiant, j'ai mal regardé

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Voici le code si ça peut aider quelqun
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    $result = 0;
     
    	if(isset($_POST['submit']))
    	{
     
    		//recuperation des infos avec la methode POST
    		$nom = (isset($_POST['nomPatient'])? $_POST['nomPatient'] : '');
    		$prenom = (isset($_POST['prenomPatient'])? $_POST['prenomPatient'] : '');
    		$date = (isset($_POST['dateNaissance'])? $_POST['dateNaissance'] : '');
    		$sexe = (isset($_POST['sexe'])? $_POST['sexe'] : '');
     
    		//création de l'id du patient
    		$numDossier1 = substr($date, 0,2);
    		$numDossier2 = substr($date, 3,2);
    		$numDossier3 = substr($date, 8, 2);
    		$numDossier4 = substr($nom, 0,1);
    		$numDossier5 = substr($prenom, 0,1);
    		$numDossier6 = substr($sexe, 0,1);
     
    		$totalDossier = $numDossier1 . $numDossier2 . $numDossier3 . $numDossier4 . $numDossier5 . $numDossier6;
     
    			//si les textbox prenom, nom et date sont vide
    			if(!isset($nom) OR empty($nom) OR !isset($prenom) OR empty($prenom) OR !isset($date) OR empty($date))
    			{
    				echo"<script>alert('Veuiller remplir tous les champs');</script>";
    			}
    			else
    			{
    				//requête SQL pour insérer les données saisie dans la bdd
    				$req = "INSERT INTO patient (dateNaissance, nom, prenom, sexe, idDossierPatient) VALUES ('$date', '$nom', '$prenom', '$sexe', '$totalDossier')";
    				$result = mysqli_query($lienBd, $req);
    				echo"<script>alert('$nom $prenom a été enregistré avec le numero $totalDossier');</script>";
    			}
     
    		if($result)
    			{
    				$id = mysqli_insert_id($lienBd);
    				$reqId = "UPDATE patient SET idDossierPatient = CONCAT(idDossierPatient, id) WHERE id = $id";
    				$resulat2 = mysqli_query($lienBd, $reqId);
    			}
    	}

  16. #16
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Passe la discussion à résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Perte d'enregistrements
    Par AnnSo dans le forum Paradox
    Réponses: 15
    Dernier message: 06/08/2006, 23h39
  2. [VB6] [Crystal] Selection enregistrement
    Par littlecow dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/01/2005, 13h08
  3. Enregistrer un RichEdit dans un .Txt
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/08/2002, 11h52
  4. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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