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 :

éviter les doublons dans une BDD


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut éviter les doublons dans une BDD
    Bonjour,
    Je suis en train de développer une galerie photos, et en ce moment je suis en train de mettre en place un système d'album photos. Je sais gérer la création et la suppression d'un album, par contre ce qui me pose problème c'est lors de la création, vérifier que le nom que l'on souhaite attribuer au nouvel album n'est pas déjà existant dans la BDD.

    Voici le code que j'ai écrit :
    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
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
     $serveur='localhost';
     $user='root';
     $motdepasse=''; 
     $bdd='BDDPhotos';
     $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
     mysql_select_db($bdd);
     
    $RubriqueName = $_POST['frm_rub_name'];
    $RubriqueDesc = $_POST['frm_textarea_desc']; 
    $Date = date("Y-m-d");
    $Time = date("H:i:s");
     
     
     ?>
     
    <form action="BDDPhotos_admin_add_rub.php" enctype="multipart/form-data" method="post"> 
    	      Nom:<br/> 
              <input type="text" name="frm_rub_name" size="50" value="<?php  if(isset($_POST['frm_rub_name'])) { echo $_POST['frm_rub_name']; } ?>"/> 
    	      <br/><br/>
              Description:<br/> 
              <textarea name="frm_textarea_desc" rows="5" cols="40" value="<?php  if(isset($_POST['frm_textarea_desc'])) { echo $_POST['frm_textarea_desc']; } ?>"></textarea>
    	      <br/><br/>
     
         <input type="submit" value="Ajouter rubrique" /> 
    </form>
     
     <?php
     
    if(empty($_POST['frm_rub_name']) AND empty($_POST['frm_textarea_desc']) ) 
                                          { 
     
                                          }
     
    									  elseif (empty($_POST['frm_rub_name'])) 
                                          { 
                                          echo'veuillez saisir le nom de lalbum';
                                          }
     
    									  elseif (empty($_POST['frm_textarea_desc'])) 
    									  { 
                                          echo'veuillez saisir le descriptif de lalbum';
                                          }
     
                                          else
                                          {
    										$RubriqueName = mysql_real_escape_string(stripslashes($_POST['frm_rub_name'])); 
    										$RubriqueDesc = mysql_real_escape_string(stripslashes($_POST['frm_textarea_desc']));              
    										$query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());
    										//$requete = "SELECT * FROM rubrique WHERE RubriqueName = '". $RubriqueName ."'";
    										//$resultat = mysql_query($requete);
    										//$compteur = mysql_num_rows($resultat);											
    										//if($compteur > 0){
    										//echo $RubriqueName .' existe déjà.';}
    									//	$i = 0;
    										//$nombrealbum = mysql_result(mysql_query("SELECT COUNT(*) FROM rubrique WHERE RubriqueName = '".$_POST['frm_rub_name']."'"), 0);
    										//if($nombrealbum != 0)
    										//{
    										//$pseudo_erreur1 = "Votre pseudo est déjà utilisé par un concurrent.";
    										//$i++;
    									  }
     
    										if($query) {
    										echo 'le tuto a été ajouté avec succés';
    										unset($_POST); 
    								        mkdir("../photos/$RubriqueName",true);		
    												   }  
    										else echo 'Problème lors de lajout ';
    									  }
     
    ?>      
     
    </body>
    S'agit il de la bonne démarche ?

    Merci pour vos conseils.

  2. #2
    Membre habitué Avatar de zugolin
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 267
    Points : 164
    Points
    164
    Par défaut
    ça a l'air bon, oui, si tu utilise les lignes commentées
    par contre il faut passer l'insertion après, evidement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $requete = "SELECT RubriqueName FROM rubrique WHERE RubriqueName = '". $RubriqueName ."'";//inutile de faire select *
    $resultat = mysql_query($requete);
    $compteur = mysql_num_rows($resultat);											
    if($compteur > 0){
    echo $RubriqueName .' existe déjà.';}
     
    else {
    $query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());
     
    echo 'rubrique ajoutée';
    }

  3. #3
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    voici le code modifié :

    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
     
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
     $serveur='localhost';
     $user='root';
     $motdepasse=''; 
     $bdd='BDDPhotos';
     $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
     mysql_select_db($bdd);
     
    $RubriqueName = $_POST['frm_rub_name'];
    $RubriqueDesc = $_POST['frm_textarea_desc']; 
    $Date = date("Y-m-d");
    $Time = date("H:i:s");
     
     
     ?>
     
    <form action="BDDPhotos_admin_add_rub.php" enctype="multipart/form-data" method="post"> 
    	      Nom:<br/> 
              <input type="text" name="frm_rub_name" size="50" value="<?php  if(isset($_POST['frm_rub_name'])) { echo $_POST['frm_rub_name']; } ?>"/> 
    	      <br/><br/>
              Description:<br/> 
              <textarea name="frm_textarea_desc" rows="5" cols="40" value="<?php  if(isset($_POST['frm_textarea_desc'])) { echo $_POST['frm_textarea_desc']; } ?>"></textarea>
    	      <br/><br/>
     
         <input type="submit" value="Ajouter rubrique" /> 
    </form>
     
     <?php
     
    if(empty($_POST['frm_rub_name']) AND empty($_POST['frm_textarea_desc']) ) 
                                          { 
     
                                          }
     
    									  elseif (empty($_POST['frm_rub_name'])) 
                                          { 
                                          echo'veuillez saisir le nom de lalbum';
                                          }
     
    									  elseif (empty($_POST['frm_textarea_desc'])) 
    									  { 
                                          echo'veuillez saisir le descriptif de lalbum';
                                          }
     
                                          else
                                          {
    										$RubriqueName = mysql_real_escape_string(stripslashes($_POST['frm_rub_name'])); 
    										$RubriqueDesc = mysql_real_escape_string(stripslashes($_POST['frm_textarea_desc']));              
    										$query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());
     
    										$requete = "SELECT * FROM rubrique WHERE RubriqueName = '". $RubriqueName ."'";
    										$resultat = mysql_query($requete);
    										$compteur = mysql_num_rows($resultat);											
    										if($compteur > 0){
    										echo $RubriqueName .' existe déjà.';}
    										else{
    										$query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());
    										echo 'rubrique ajoutée';
    										}
     
     
    										if($query) {
    										echo 'le tuto a été ajouté avec succés';
    										unset($_POST); 
    								        mkdir("../photos/$RubriqueName",true);		
    												   }  
    										else echo 'Problème lors de lajout ';
    									  }
     
    ?>      
     
    </body>
    le soucis est que si je saisi une album déjà existant,celui-ci est quand même ajouté.

    Voici ce qui est affiché avant la validation :


    Notice: Undefined index: frm_rub_name in H:\Wamp\wamp\www\BDDPhotos_admin_add_rub.php on line 18

    Notice: Undefined index: frm_textarea_desc in H:\Wamp\wamp\www\BDDPhotos_admin_add_rub.php on line 19
    et aprés la validation :

    ddd existe déjà.le tuto a été ajouté avec succés
    alors que l'album ddd n'est pas en doublon

  4. #4
    Membre habitué Avatar de zugolin
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 267
    Points : 164
    Points
    164
    Par défaut
    il y a une erreur :
    il ya 2 fois ta requete d'insertion, une avant de controler et une apres, donc, tu insere, tu controle si y'en a une ...forcement, oui ...et apres tu reinsere ...

    supprime le premier

    $query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());

  5. #5
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    ok j'ai suivi tes conseils, les doublons sont bien détectés il n'y a pas d'ajout en conséquence mais j'obtient cela quand je valide :


    ddd existe déjà.
    Notice: Undefined variable: query in H:\Wamp\wamp\www\BDDPhotos_admin_add_rub.php on line 70
    Problème lors de lajout

  6. #6
    Membre habitué Avatar de zugolin
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 267
    Points : 164
    Points
    164
    Par défaut
    remplace ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else{
    $query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());
    echo 'rubrique ajoutée';
    			}
    par ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    else{
    $query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());
    if($query) {
    unset($_POST); 
    mkdir("../photos/$RubriqueName",true);		
    		}  
    				}
    la condition va de pair avec l'insertion

  7. #7
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    Coucou,

    Voici mon code modifié, la détection des doublons fonctionne correctement, mais j'ai encore des erreur sur mon script :
    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 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
     $serveur='localhost';
     $user='root';
     $motdepasse=''; 
     $bdd='BDDPhotos';
     $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
     mysql_select_db($bdd);
     
    $RubriqueName = $_POST['frm_rub_name'];
    $RubriqueDesc = $_POST['frm_textarea_desc']; 
     
    $Date = date("Y-m-d");
    $Time = date("H:i:s");
     
     
     
     ?>
     
    <form action="BDDPhotos_admin_add_rub.php" enctype="multipart/form-data" method="post"> 
    	      Nom:<br/> 
              <input type="text" name="frm_rub_name" size="50" value="<?php  if(isset($_POST['frm_rub_name'])) { echo $_POST['frm_rub_name']; } ?>"/> 
    	      <br/><br/>
              Description:<br/> 
              <textarea name="frm_textarea_desc" rows="5" cols="40" value="<?php  if(isset($_POST['frm_textarea_desc'])) { echo $_POST['frm_textarea_desc']; } ?>"></textarea>
    	      <br/><br/>
     
         <input type="submit" value="Ajouter rubrique" /> 
    </form>
     
     <?php
     
     
     
    if(empty($_POST['frm_rub_name']) AND empty($_POST['frm_textarea_desc']) ) 
                                          { 
     
                                          }
     
    									  elseif (empty($_POST['frm_rub_name'])) 
                                          { 
                                          echo'veuillez saisir le nom de lalbum';
                                          }
     
    									  elseif (empty($_POST['frm_textarea_desc'])) 
    									  { 
                                          echo'veuillez saisir le descriptif de lalbum';
                                          }
     
                                          else
                                          {
    										//$RubriqueName = mysql_real_escape_string(stripslashes($_POST['frm_rub_name'])); 
    										//$RubriqueDesc = mysql_real_escape_string(stripslashes($_POST['frm_textarea_desc']));              
     
    										$requete = "SELECT * FROM rubrique WHERE RubriqueName = '". $RubriqueName ."'";
    										$resultat = mysql_query($requete);
    										$compteur = mysql_num_rows($resultat);											
    										if($compteur > 0){
    										echo 'L\'Album &nbsp'.$RubriqueName.'&nbsp existe déjà. Veuillez renommer votre album ';}
    										else{
     
    										$query = mysql_query("INSERT INTO rubrique VALUES('RubriqueId','$RubriqueName','$RubriqueDesc','$Date','$Time')")or die(mysql_error());
    										if($query) {
    										unset($_POST); 
    										mkdir("../photos/$RubriqueName",true);		
     
    										}  
     
    										}
     
    										if($query) {
    										echo 'L\'Album &nbsp'.$RubriqueName.'&nbsp a été ajouté avec succés';							                           } 
    									  }
     
    ?>
    à l'ouverture du formulaire avant d'insérer un album voila ce que j'ai d'écrit en plus de mon formulaire :

    Notice: Undefined index: frm_rub_name in H:\Wamp\wamp\www\BDDPhotos_admin_add_rub.php on line 18

    Notice: Undefined index: frm_textarea_desc in H:\Wamp\wamp\www\BDDPhotos_admin_add_rub.php on line 19
    et une fois la validation réalisée lorsque l'album existe déjà :
    Notice: Undefined variable: query in H:\Wamp\wamp\www\BDDPhotos_admin_add_rub.php on line 79
    lorsque je valide et que l'album n'est pas déjà existant je n'ai aucune erreur.

    merci pour votre aide

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Tu dois tester si ces variables sont poster avant que tu les utilises.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_POST['frm_rub_name']) && isset($_POST['frm_textarea_desc'])){
    $RubriqueName = $_POST['frm_rub_name'];
    $RubriqueDesc = $_POST['frm_textarea_desc']; 
    ...
    }

  9. #9
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    merci andry.aime pour le conseil, plus de soucis à ce niveau la, j'ai juste l'erreur avec la variable query qui me reste à résoudre. si quelqu'un à des conseils à me donner ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Points : 100
    Points
    100
    Par défaut Quelques trucs en vrac pour plus tard
    -on sépare le traitement ( code ) de l'affichage ( HTML ) pour des raisons de maintenance ( à la relecture dans 6 mois )
    -Ta connexion à ta base de données, tu vas t'en resservir dans d'autres pages, pour des raisons de maintenance( éviter le copier coller )
    il vaut mieux l'inclure, on regroupe(factorise) le code
    -si une condition ne contient aucune instruction, c'est qu'elle ne sert à rien il faut l'enlever et repenser les conditions
    -la fonction die( alias de exit) arrête le programme, son utilisation est à proscrire
    -ce formualire et ses traitements, ils sont presque les même pour la création, la mise à jour
    il pourrait être bien de ne pas copier coller pour des raisons de maintenance
    on mets à jour si un id d'album est fournie par l'utilisateur ou on crée s'il n'est pas fournie, cas que je n'ai pas traité ici

    #fichier connexion.php#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    $serveur='localhost';
    $user='root';
    $motdepasse=''; 
    $bdd='BDDPhotos';
    #NON, die arrête le programme, ce n'est pas la bonne façcon de faire
    #une redirection vers une page d'erreur derait plus adaptée, attention une redirection ne marche que si aucun contenu n'a été envoyé
    #en production il faudrait interdire l'affichage d'erreur avec ini_set('display_errors', 0) ;
    $connect= mysql_connect($serveur,$user,$motdepasse) or header('Location:maintenance.php') ; 
    mysql_select_db($bdd);
     
    ?>
    #ficher formulaire.php#
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    include_once('connexion.php') ;
     
    #tu déclares des variables dont tu ne te sers jamais, si on les déclare c'est qu'on pense que c'est utile, donc on s'en sert
    $RubriqueName = '' ;
    $RubriqueDesc = '' ;
    $MessageErreur = '' ;
     
    #on va éviter de hard-coderles textes de manière disséminée dans le code pour des raisons de maintenance
    define('ERREUR_NOM_ALBUM_DOUBLON','Ce nom existe déjà. Veuillez renommer votre album.') ;
    define('ERREUR_NOM_ALBUM_VIDE','veuillez saisir le nom de lalbum') ;
    define('ERREUR_DESC_ALBUM_VIDE','veuillez saisir le descriptif de l\'album') ;
     
    # on traite les données venant de l'extérieur et on contrôle que les données sont conformes à nos attentes
    # si la valeur a été fournies et qu'elle n'est pas vide
    if( isset( $_POST['frm_rub_name'] ) && $_POST['frm_rub_name'] )
    {
        #stripslashes ne sert que si la directive magic_quotes_gpc est activée
        if( get_magic_quotes_gpc() )
            $_POST['frm_rub_name'] = stripslashes(($_POST['frm_rub_name']);
     
        #1 la donnée est sécurisée
        #l'échappement pour éviter les injections sur la lib mysql était important, la démarche était bonne, il faut conserver cette ligne
        $RubriqueName = mysql_real_escape_string( $_POST['frm_rub_name'] ) ;
     
        #2 la donnée est vérifiée, ce nom existe-il déjà ?
        #on utilise la substitution dans les chaines entre guillemets, pas besoin de concaténer
        $requete = "SELECT * FROM rubrique WHERE RubriqueName = '$RubriqueName'" ;
        $resultat = mysql_query($requete) ;
        $compteur = mysql_num_rows($resultat);                                            
        if($compteur > 0)
        {
            $MessageErreur = ERREUR_NOM_ALBUM_DOUBLON ;
        }    
    }
    else
    {
        $MessageErreur = ERREUR_NOM_ALBUM_VIDE ;
    }
     
    #on remarquera ici que le traitement est le même que au-dessus, on pourrait en faire une fonction pour faciliter la maintenance
    if( isset( $_POST['frm_textarea_desc']) && $_POST['frm_textarea_desc'] )
    {
        #stripslashes ne sert que si la directive magic_quotes_gpc est activée
        if( get_magic_quotes_gpc() )
            $_POST['frm_textarea_desc'] = stripslashes(($_POST['frm_textarea_desc']);
     
        $RubriqueDesc = mysql_real_escape_string( $_POST['frm_textarea_desc'] ) ;
     
    }
    else
    {
        $MessageErreur = ERREUR_DESC_ALBUM_VIDE ;
    }
     
     
     
    #si tout s'est bien passé et que les données ont été contrôlées, par extension s'il n'y a pas de message d'erreur
    #on va insérer dans la base
    if( ! $MessageErreur )
    {
        $Date = date("Y-m-d");
        $Time = date("H:i:s");
        #il pourrait être mieux préciser les champs de la table pour des raisons de maintenance
        $queryResult = mysql_query("INSERT INTO(rubName, rubDesc, rubDate, rubTime) rubrique VALUES('$RubriqueName','$RubriqueDesc','$Date','$Time')") ;
        if( ! $queryResult )
        {
            $MessageErreur = 'Une erreur est survenue, veuillez réessayer plus tard.'
        }
        else
        {
            mkdir("../photos/$RubriqueName",true);
            #la rubrique a été ajoutée avec succès peut être remplacé par une redirection vers une page utile
            header('Location:gestionRubrique.php') ;
        }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <?php
    #une conversion implicite de type est faite par PHP, si la chaine est vide ou contient 0 la condition est fausse, sinon elle est vraie
    if( $MessageErreur )
    { ?>
    <div id="messageErreur"><?php echo $MessageErreur ; ?></div>
    <?php
    }
    ?>
    <form action="BDDPhotos_admin_add_rub.php" enctype="multipart/form-data" method="post"> 
         Nom:<br/> 
     
    <input type="text" name="frm_rub_name" size="50" value="<?php
     
             #tu remarqueras que la condition est maintenant dans le traitement(en haut du script) et non quel part dans le HTML
             #cela va simplifier la maintenance
             #idem pour la variable $RubriqueDesc
             echo $RubriqueName 
     
             ?>"/> 
         <br/><br/>
    Description:<br/> 
    <textarea name="frm_textarea_desc" rows="5" cols="40" value="<?php echo $RubriqueDesc ?>"></textarea>
         <br/><br/>
     
    <input type="submit" value="Ajouter rubrique" /> 
    </form>
    En espérant que cela te serve pour tes futurs codes.

    Xavier

Discussions similaires

  1. Comment éviter les doublons dans une ComboBox
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/07/2017, 16h03
  2. éviter les doublons dans une jointure
    Par alyjeje dans le forum SQL
    Réponses: 4
    Dernier message: 20/01/2011, 11h00
  3. [MySQL] eviter les doublons dans une bdd
    Par sanaa16 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/06/2008, 17h40
  4. problème pour éviter les doublons dans une table
    Par bonnet85 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/02/2008, 04h35
  5. Éviter les doublons dans une requete
    Par royrremi dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/08/2004, 19h37

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