j'aimerai que quand je recherche "fafin" et dès je le sélectionne dans la liste déroulante, je voudrais pa&r la relation affectation.num_sim chercher la ligne du num_sim correspondant a "fafin" puis inséré le résultat de la ligne sur les input
je sais pas si c'est compréhensible mais je vais de mon mieux phpmyadmin m'indique une erreur a la ligne 54

<?php require_once "PDO_connect.php";

$query="SELECT * FROM smartphone.abonnements";
try{
  $prep = $bdd->prepare($query);
  $prep->execute();
  $resultats = $prep->fetchAll();

}catch(Exception $e){;
  echo "Erreur ! ".$e->getMessage() ;
}

?>
<!DOCTYPE>
<html>
 <head>
  <meta charset="utf8">
 <title>tableau dynamique </title>
 <link rel="stylesheet" type="text/css" href="scroller.css">
 </head>
 <style>
   .selline { background-color: silver;}
 </style>
 <body>
 <center><h1>Abonnements</h1></center>
  <center>
    <a class="Affectation" href="http://localhost/formulaire/Form_PHP/php_presque_fini/Affectation.php" rel="nofollow noopener noreferrer" target="_blank">Affectation</a>
    <a class="Equipement" href="http://localhost/formulaire/Form_PHP/php_presque_fini/Equipement.php" rel="nofollow noopener noreferrer" target="_blank">Equipement</a>
    <a class="Reaffectation_Equipement" href="http://localhost/formulaire/Form_PHP/php_presque_fini/Reaffectation_Equipement.php" rel="nofollow noopener noreferrer" target="_blank">Reaffectation Equipement</a>
    <a class="Nouvelle_Affectation" href="http://localhost/formulaire/Form_PHP/php_presque_fini/Nouvelle_Affectation.php" rel="nofollow noopener noreferrer" target="_blank">Nouvelle Affectation</a>
    <a class="Employe" href="http://localhost/formulaire/Form_PHP/php_presque_fini/Employe.php" rel="nofollow noopener noreferrer" target="_blank">Employe</a>
    <a class="Modele" href="http://localhost/formulaire/Form_PHP/php_presque_fini/Modele.php" rel="nofollow noopener noreferrer" target="_blank">Modele</a><br>
  </center>
 <div class= "border_table">
 <center>
  <div class="scroller" <table bgcolor="#FFFFFF">
  <table  border="1">
   <thead>
      <tr>
     <th>Operateur<th>
     <th>SIM<th>
     <th>PUK<th>
     <th>Num ligne<th>
     <th>Volume<th>
     <th>Statut abo<th>
    </tr>
   </thead>
   <tbody>
   <?php
   if(!empty($resultats)){
   foreach  ($resultats as $row) {
     echo "<tr>";
      echo "<td>".$row["Operateur"]."<td>";
      echo "<td data-nom=\"".$row["Nom"] ."\">".$row["Num SIM"]."<td>";
      echo "<td>".$row["PUK"]."<td>";
      echo "<td>".$row["Num ligne"]."<td>";
      echo "<td>".$row["Volume"]."<td>";
      echo "<td>".$row["Statut abo"]."<td>";
     echo "</tr>";
   }
     }else {
   echo "Pas d'enregistrements dans cette table...";
   }
      ?>
    <script type="text/javascript">
      $(function(){

choix=[];
$('tr').each( function(){
  choix.push( $(this).find('td:eq(2)').data('nom') );
})
choix.sort()

$.each(choix, function(idx, cont){
$('#nom').append( $('<option/>').val(cont).html(cont))
})

$('#nom').on('change', function(){
$ligne=$("#tableau tr td[data-nom='"+$(this).val()+"']").parent();
$ligne.siblings().removeClass('selline');
$ligne.addClass('selline');

for(i=1;i<5;i++){
$('#_'+ i).val( $ligne.find('td:eq('+ (i-1) +')').html() )
}

})
})
    </script>
  </tbody>
  </table>

  </center>
  <br><br>

  <center><?php
error_reporting(E_ALL);
$sql = "SELECT * FROM employe";
$datas = NULL;

try{
  $query = $bdd -> prepare($sql);
  $query -> execute($datas);
  $rows = $query->fetchAll();
} catch(PDOException $e) {
   echo ('Erreur : ' . $e->getMessage());
}

?>
<select name="employes">
  <option value="">Choisi un nom </option>
  <?php
  if(!empty($rows)){
   //Si la liste n'est pas vide on boucle dessus
   foreach ($rows as $employe){
     echo "<option value='".$employe['Or_Affectation']."'>".$employe[Nom]."</option>";
   }
   }
 ?>
 </select> </center>
  <center>
  <table>
  <tr>
      <td><div class="Operateur"> Operateur<input id"_1" type="text" name="Operateur" value=""> </div></td>
   <td></td>
   <td>
        <div class="Num_SIM"> Num SIM :<input id"_2" type="text" name="Num_SIM" value=""></div>
      </td>
     </tr>
     <tr>
      <td><div class="PUK"> PUK : <input id"_3" type="text" name="PUK" value=""></div></td>
   <td></td>
   <td>
       <div class="Num_ligne"> Num ligne :<input id"_4" type="text" name="Num_ligne" value=""></div>
      </td>
     </tr>
     <tr>
      <td>
       <div class="Volume"> Volume :<input id"_5" type="text" name="Volume" value=""></div>
      </td>
    <td></td>
    <td>
       <div class="Statut_Abo"> Statut Abo :<input id"_6" type="text" name="Statut_Abo" value=""></div>
      </td>
     </tr>
  </table>
 </center>
 </body>
</html> 

merci
cordialement

17 réponses


Yo!

Quelle est l'erreur que t'affiche php?

Notice: Undefined index: Nom in C:\wamp64\www\Formulaire\Form_PHP\php_presque_fini\Abonnements.php on line 54
Call Stack

Time Memory Function Location

1 0.0000 251384 {main}( ) ...\Abonnements.php:0

Alors est ce que en base de donnée tu as un champ qui se nom "Nom"? (Avec le N en majuscule)?

oui mais il se trouve sur une autre table

Bonjour.
Il y a plusieurs choses qui ne vont pas dans ton code.
Prmière chose, c'est que si je ne me trompe pas, il ne faut pas d'espace dans le nom d'un champ de base de données et pourtant tu as dans ton code : $row["Num SIM"], $row["Num ligne"] et $row["Statut abo"].
Ensuite, tu as posté dans le forum PHP, mais si ta demande porte sur une fonctionnalité en javascript, tu aurais du posté ton sujet dans le forum approprié, soit dans Javascript.
Par contre, je ne vois à aucun moment dans ton code quelque chose qui permet de faire appel a une requête SQL pour ce que tu demandes, que ce soit juste en PHP ou bien en javascript.
Si tu veux faire ton système avec un peu de javascript, tu peux t'inspirer des tutoriels suivants : jQuery.on() et Lier plusieurs select.

Ben voila ;) Donc ta requête sql n'est pas correct si ton champ 'Nom' se situe dans une autre table.

Lartak tu te trompe 2 fois ;)
1 - On peut mettre des espaces pour les champs de bases de données.
2 - Il fait bien appelle à une requête SQL tout au dessus dans un try.

j'ai fais une relation entre les deux table sur phpmyadmin

@houcine Pour le premier j'ai un doute, par contre pour le second point, comment veux-tu qu'il récupère un enregistrement précis s'il récupère tous les enregistrements d'une table sans distinction ?
Dans ses deux requêtes SQL, il fait un SELECT * FROM table sans définir de condition.

a votre avis faut que je procède comment

c'est le :

$sql = "SELECT * FROM employe";
$datas = NULL;

qui ferais tout beugué?

a votre avis faut que je procède comment

Déja, dis nous si après la sélection plusieurs enregistrements doivent être retournés ou si ce n'est qu'un seul enregistrement.
Si ce n'est qu'un seul enregistrement qui doit être retourné, il est inutile d'utiliser un tableau pour n'afficher qu'un seul résultat.
Sinon, pour ce qui concerne l'index qui n'est pas reconnu, si comme tu le dis le nom de l'index est dans une autre table, tu dois faire une requête associative pour pouvoir récupérer la valeur d'un champ d'une autre table.

comment peut-on mettre une photo j'en ai une vous allez comprendre tout suite mais a chaque fois que je glisse une photo après avoir fais le logos sa beugue

comment peut-on mettre une photo

Que veux tu dire ?
Si tu veux nous montrer une image, tu peux tout simplement 'l'uploader chez un hébergeur gratuit d'images ou autre et nous donner le lien pour la voir.

voici que j'aimerais faire sa: http://hpics.li/9c91e64
j'ai réaliser : http://hpics.li/253451d
je récupère bien les nom mais je n'y arrive pas a selectionné la ligne et affiché dans les input
j'ai trouvé un exemple: https://jsfiddle.net/83m7wc1m/3/

j'ai fais une relation entre les deux table sur phpmyadmin

Tu dois déja commencer par corriger ton problème d'association et donc faire une requête SQL avec une jointure entre les deux tables, il ne suffit pas de spécifier la relation entre les deux tables au niveau de MySQL, il faut aussi la demander dans ta requête.

Moi je me demande toujours pourquoi ça :

try{
  $query = $bdd -> prepare($sql);
  $query -> execute($datas);
  $rows = $query->fetchAll();
} catch(PDOException $e) {
   echo ('Erreur : ' . $e->getMessage());
}

je sais a quoi sert try mai pourquoi le mettre a chaque requète ? sur l'objet PDO DB ok mai la.

Pour en revenir au sujet je le trouve illisible j'amais j'aurai pensée dire ça un jour mai quand on s'améliore en dev on ne mélange plus les vue avec le backend de plus tu mélange trois language.

Toutefois pour aidé un peut tu doit faire un LEFT JOIN et pour préciser tu peut faire un GROUP BY.