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

PHP & Base de données Discussion :

Recuperer identifiant auto-incrementable comme index de parcours [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut Recuperer identifiant auto-incrementable comme index de parcours
    Bonjour tout le monde,
    Je developpe une application en php et je me trouve confronté à un problème.
    En fait, j'ai un formulaire de 2 champs de saisie en dessous desquels j'affiche les elements enregistrés dans un tableau.
    Lorsque je clique sur une ligne de ce tableau, ces elements se reaffichent dans mon formulaire, on pourra alors modifier ou supprimer cet enregistrement.
    Mon probleme est que ne sachant comment utiliser l'identifiant automatique que je n'affiche pas d'ailleurs, j'utilise le libellé comme condition pour le faire.
    Cela n'est pas correct, car le libellé n'est pas unique.
    Aidez moi s'il vous plait.

    Au besoin, je vous envoie le code complet.
    Merci

  2. #2
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    Tu peux mettre le code effectivement ça sera peut être plus clair, parce que là tel quel, je dirai de récupérer l'identifiant de tes lignes en base et de les mettre en valeur de tes lignes sur ta page pour t'en servir sur ton formulaire...

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Au besoin, je vous envoie le code complet.
    peut être pas tout mais les éléments approprié volontier

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    Code des boutons
    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
    <?php
    include('connect.inc.php');
    ?><?php	  
    if(isset($_POST['submit'])) //Si le formulaire a été soumis
    {
    $lib=$_POST['txtlib'];
    $salaire=$_POST['txtsalaire'];
     switch($_POST['submit'])
     {
     case 'Ajouter':
     $erreurs=array();
     //Vérification et validation des valeurs champs
     if(empty($_POST['txtlib']))
            {$erreurs[]='Veuillez saisir le libellé de la fonction';}
     else{
          $lib=$_POST['txtlib'];
    	 }
     if(empty($_POST['txtsalaire']))
     {$erreurs[]='Veuillez saisir le salaire correspondant à cette fonction';}
    	  else {
    	  if(is_numeric($_POST['txtsalaire']))
           $salaire=$_POST['txtsalaire'];
          else 
          $erreurs[]='Veuillez saisir des caractères numériques pour le salaire';
       	     }
     if(!empty($erreurs))
     {
      foreach($erreurs as $msg)
      {
       echo "- $msg<br />\n";
      }
     }
     else{
          //include('connect.inc.php');
    	  mysql_open();
    	  $insertfonction="INSERT INTO fonction(designation, salaire) VALUES('$lib','$salaire')";
    	  $resultfonction=@mysql_query($insertfonction);
    	  mysql_close();
    	  $lib='';
    	  $salaire='';
    	  }
    	  break;
     
     case'Modifier':
     if(empty($_POST['txtlib'])) 
     echo'<font style="color:white;">Veuillez double-cliquer sur la ligne fonction à modifier</font>';
     else{
     if(empty($_POST['txtsalaire']))
     {$erreurs[]='Veuillez saisir le salaire correspondant à cette fonction';}
    	  else {
    	  if(is_numeric($_POST['txtsalaire']))
           $salaire=$_POST['txtsalaire'];
          else 
          $erreurs[]='Veuillez saisir des caractères numériques pour le salaire';
       	     }
     if(!empty($erreurs))
     {
      foreach($erreurs as $msg)
      {
       echo "- $msg<br />\n";
      }
     }
     else{
     
     mysql_open();
    $strupdade="UPDATE fonction SET designation='$lib', salaire='$salaire' WHERE designation='$lib'";
     $resultat=mysql_query($strupdade);
          mysql_close();
    	  $lib='';
    	  $salaire='';
    	  }
    	 }
    	  break;
    	  case'Supprimer':
     if(empty($_POST['txtlib'])) 
     echo'<font style="color:white;">Veuillez double-cliquer sur la ligne fonction à supprimer</font>';
     else{
     mysql_open();
    	  $suppr="DELETE FROM fonction WHERE designation='$lib'";
    	  $result=mysql_query($suppr);
          mysql_close();
    	  $lib='';
    	  $salaire='';
    	  }
    	  break;
    	  case'Annuler':
    	  $lib='';
    	  $salaire='';
    	  break;
     
    	  default:
    	  break;	
    	 }
    }
    ?>
    Code du formulaire
    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
    <form action="fonction.php" method="POST" >
    <table width="51%">
      <tr><td><fieldset>
      <legend><span class="Style2">FONCTION </span></legend>
    	<table width="512" height="125" border="0" >
               <tr>
                     <td width="235" height="24"><span class="Style2">Désignation :</span></td>
                 <td width="267"><input type="text" name="txtlib" id="libel" size="40" maxlength="60" value="<?php echo $lib; ?>" /></td>
               </tr>
               <tr>
                      <td height="30"><span class="Style2">Salaire correspondant :</span></td>
                      <td><input type="text" name="txtsalaire" id="sal" size="20" maxlength="60" value="<?php echo $salaire; ?>" />FCFA</td>
               </tr>
    		   <tr>
    		          <td height="26">&nbsp;</td>
    		         <td><div>
    		       <input type="submit" name="submit" value="Ajouter" /><input type="submit" name="submit" value="Modifier" /><input type="submit" name="submit" value="Supprimer" /><input type="submit" name="submit" value="Annuler" />
    		     </div></td>
    	      </tr>
    	</table>
      </fieldset></td></tr>
      </table>
    </form>
    Code d'affichage du tableau en dessous
    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
    <?php
    	     $link1 = "{$_SERVER['PHP_SELF']} ?tri=codefonction";
             $link2 = "{$_SERVER['PHP_SELF']} ?tri=designation";
    	 //vérifie si l'ordre de tri a été défini
    	 if (isset($_GET['tri']))
    	 {
    	   //Détermine comment seront triés les résultats de la requête.
    	   switch ($_GET['tri'])
    	   {
    	     case 'codefonction':
    	                   $order_by = 'codefonction ASC';
    			   $link1 = "{$_SERVER['PHP_SELF']}?tri=lnd";
    			   break;
    	     case 'lnd':
    	                   $order_by = 'codefonction DESC';
    			   $link1 = "{$_SERVER['PHP_SELF']}?tri=codefonction";
    			    break;
    	      case 'designation':
    	                   $order_by = 'designation ASC';
    			   $link2 = "{$_SERVER['PHP_SELF']}?tri=fnd";
    			   break;
    	      case 'fnd':
    	                    $order_by = 'designation DESC';
    			    $link2 = "{$_SERVER['PHP_SELF']}?tri=designation";
    			    break;
     
    	      default:
    			    $order_by = 'codefonction DESC';
    			    break;
    	     }
    		   $tri = $_GET['tri'];
             }
    		 else
    		 {
              $order_by = 'codefonction DESC';
              $tri = 'rdd';
             }
    		 mysql_open();
             $strselect="SELECT * FROM fonction ORDER BY $order_by ";
             $result = @mysql_query($strselect);
             echo '<table id="matable" align="left" cellspacing="1" cellpadding="5" border="0" width="60%">
    		  <tr bgcolor="#CCCC99">
    		  	<td align="left"><b><a href="'.$link2.'">Désignation</a></b></td>
    			<td align="left"><b>Salaire correspondant</b></td>
    		  </tr>';
    		$bg='#eeeeee';
    		while($row=mysql_fetch_array($result, MYSQL_ASSOC))
    		  {
    		   $bg=($bg=='#eeeeee'? '#ffffff' : '#eeeeee');
    		   echo '<tr bgcolor="'.$bg.'">
    					   <td align="left">'. $row['designation'] .'</td>
    					   <td align="left">' . $row['salaire'] . '</td>
    				 </tr>';
    	      }
    		   echo '</table>';
    		   mysql_close();
    		?>
    Code JS pour afficher les elements d'une ligne dans le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script type="text/javascript">
    function afficheLigne(tableau)
    {
    	for(var i=1; i<document.getElementById(tableau).getElementsByTagName('tr').length; i++)
    	{
    		document.getElementById(tableau).getElementsByTagName('tr')[i].onclick=function()
    			{
    				document.getElementById('libel').value=this.getElementsByTagName('td')[0].firstChild.data;
    				document.getElementById('sal').value=this.getElementsByTagName('td')[1].firstChild.data;
    			}
    	}
    }
    </script>
    Merci de bien vouloir m'aider

  5. #5
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $strselect="SELECT * FROM fonction ORDER BY $order_by ";
    Ici tu récupères toutes les données de ta table, donc ton identifiant avec.
    Ensuite de deux choses l'une, soit ça n'est pas problématique que l'utilisateur voit cet identifiant unique, à ce moment là tu rajoute une colonne dans ta table avec l'identifiant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo '<tr bgcolor="'.$bg.'">
     <td align="left">'. $row['identifiant_unique'] .'</td>
     <td align="left">'. $row['designation'] .'</td>
     <td align="left">' . $row['salaire'] . '</td>
    </tr>';
    Et ensuite tu changes ton js en accord avec ça, de même que tu fais l'update sur l'identifiant plutôt que sur ton label.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $strupdade="UPDATE fonction SET designation='$lib', salaire='$salaire' WHERE identifiant_unique='$identifiantformulaire'";

    Après si ça ne doit pas être affiché tu dois pouvoir utiliser un truc de type <input type="hidden" ...>
    Mais dans tous les cas la valeur sera affichée dans le code source de la page (mais je pense que tu n'as pas le choix).

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    [QUOTE=Linio;4321906]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $strselect="SELECT * FROM fonction ORDER BY $order_by ";
    Ici tu récupères toutes les données de ta table, donc ton identifiant avec.
    Ensuite de deux choses l'une, soit ça n'est pas problématique que l'utilisateur voit cet identifiant unique, à ce moment là tu rajoute une colonne dans ta table avec l'identifiant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo '<tr bgcolor="'.$bg.'">
     <td align="left">'. $row['identifiant_unique'] .'</td>
     <td align="left">'. $row['designation'] .'</td>
     <td align="left">' . $row['salaire'] . '</td>
    </tr>';
    Je sais que ce sera plus facile pour moi de le faire ainsi, mais
    c'est justement ce que je veux eviter, afficher l'identifiant.

  7. #7
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    Tu ne veux même pas qu'il apparaisse dans le code de ta page?

    Parce que si c'est ça, ça risque d'être un tout petit peu compliqué quand même... Il faut bien que tu pioches tes informations quelque part...

    Le mieux est d'utiliser alors des sessions.
    Tu associes le numéro de ligne à l'identifiant "réel" dans ta base, et ensuite à l'exécution, selon le numéro de ligne tu récupères quelque chose du style $_SESSION['maligne'] qui te renvoie l'identifiant réel.

    Transparent pour l'utilisateur.

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

Discussions similaires

  1. [MySQL] Insertion d'un identifiant auto-incrementé dans une autre table
    Par knebhi dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/07/2009, 11h25
  2. auto increment avec sql server comme avec mysql
    Par skystef dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/09/2007, 08h22
  3. [SQL] Récupèrer un identifiant pour l'auto incrementer
    Par klr54000 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 21/04/2007, 15h34
  4. Réponses: 6
    Dernier message: 18/12/2006, 11h16
  5. [MySQL] valeur obligatoire de l'identifiant en auto-increment??
    Par zamoto dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/05/2006, 16h35

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