Ecriture fichier de listes liées [Résolu]

Signaler
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008
-
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008
-
bonjour à tous,

je viens de créer pour mon site internet une page avec des listes liées dont toutes les données se trouve dans une BDD, maintenant j'ai un petit soucis, je ne sais comment recupérer dans un fichier les données des differentes listes déroulantes.

si vous avez besoin de voir mon code demander le moi!

merci de votre aide

42 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ça nous aide drôlement d'avoir la structure de la base !   
    donc, il faut que je la crée... et avec quelles données ?
je parlais du contenu !   mais surtout de la page HTML résultante !

et peut-être ( ! ) JoJo++
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

ah d'accord
je l'ai fait directement sur mysql
mais je vais te le mettre sur un page HTML!
désolé
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

voila les deux table avec les insertions

//creation de la table reference
create table reference {
id tinyint(10) not null auto_increment primary key,
ref_pdt varchar(10) not null
}


//insertion données table reference
insert into reference values
(1, EL3PSK),
(2, EL4PSK),
(3, EL5PSK),
(4, EL6PSK),
(5, EL7PSK)




//creation de la table designation
create table designation {
id tinyint(10) not null auto_increment primary key,
des_pdt varchar(10) not null,
Qte int(10)not null,
Id_ref tinyint(10) not null
}


//insertion données table designation
insert into designation values
("", BLOC 3 PRISES + INTER, 50, 1),
("", BLOC 4 PRISES + INTER, 50, 2),
("", BLOC 5 PRISES + INTER, 50, 3),
("", BLOC 6 PRISES + INTER, 40, 4),
("", BLOC 7 PRISES + INTER, 40, 5),
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
non non !    ( le contraire de : si, si.... l'impératice )
la page html qui plante ( enfin, UN TEXTRAIT ) ! rien d'autre,
    ou alors, enfin moi, je ne peux rien pour toi.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

j'ai pas de page html qui plante car je n'ai pas de page HTML tout simplemet!
c'est au niveau de la recupération de données dans le fichier.
aucune données d'ajax n'est recupèrer en faite sauf le input

bon je redonne les code dans l'ordre

index.php
function go(){
      var xhr = getXhr();
      xhr.onreadystatechange = function(){         if(xhr.readyState 4 && xhr.status 200){
     leselect = xhr.responseText;
     document.getElementById('designation').innerHTML = leselect;
     document.getElementById('Qte').innerHTML = leselect;
         }
      }
     
      xhr.open("POST","./ajax1.php",true);
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      sel = document.getElementById('Id_ref');
      id_ref = sel.options[sel.selectedIndex].value;
             xhr.send("Id_ref="+id_ref);
    }
</script>
 </head>
 
  <form action="visualiser.php" method="post" enctype="multipart/form-data">
   <fieldset style="width: 800px">
    <legend>commande</legend>
    <label>reference</label>
    <select name='ref' id='Id_ref' onchange='go();'>
     <option value="">reference</option>
     <?php
     //requete1
      include ('connexion.php');
      $res = mysql_query("SELECT * FROM reference");
      while($row = mysql_fetch_assoc($res)){
       echo "<option value='".$row["id"]."'>".$row["ref_pdt"]."</option>";
      }
     ?>
    </select>
    
    
 
    

    
    

    

     
    <label> Nbre de pièce </label>
    
    
  

  
  
  </form>
 
</html>

ajax1.php
<?php
//requete1
 if(isset($_POST["Id_ref"])){
  if ($db=mysql_connect('sql.arcotec.fr','arcotecfr','ouzbek') ) {
   if (mysql_select_db('arcotecfr',$db) ) {
    $requete = "SELECT * FROM designation WHERE Id_ref=".$_POST["Id_ref"]."";
    if ($res = mysql_query($requete) ) {
     echo "<label> designation </label>";
     echo "<select name='designation'>";
     while($row = mysql_fetch_assoc($res)){
      echo "<option value='".$row["Id"]."'>".$row["des_pdt"]."</option>";
      }
      echo "</select>";
      }
      if ($res = mysql_query($requete) ) {
     echo "<label> Qte/colis </label>";
     echo "<select name='Qte'>";
     while($row = mysql_fetch_assoc($res)){
      echo "<option value='".$row["Id"]."'>" .$row["Qte"]. "</option>";
      }
      echo "</select>";
      } else {
     echo "Erreur de requête";
    }
   } else {
    echo "Erreur sélection de base de données";
   }
  } else {
   echo "Erreur de connexion mysql";
  }
 } else {
  echo "Id_ref1 non défini";
    }


?>

recuperation dans le fichier
visualiser.php
<?
$a=$_POST['ref'];
$b=$_POST['designation'];
$c=$_POST['Qte'];
$d=$_POST['nbrepieces'];
$fich="compteur/compteur.txt";


if (! file_exists($fich))
{
# si le fichier compteur n'existe pas, le créer vide
touch($fich);
echo "Le fichier $fich vient d'être créé !";
}
$open= fopen($fich, 'r+');
fputs($open, $a);
fputs($open, "****");
fputs($open, $b);
fputs($open, "****");
fputs($open, $c);
fputs($open, "****");
fputs($open, $d);
echo "merci";
 
fclose($open);


?>

le probleme vient de visualiser.php qui ne reupere pas les données au bon endroit (enfin je pense)!
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Re ^^

mdr bultez !!

Travailles tu en local ou sur un serveur (un site) ? Sinon,  passe nous l'adresse pour que l'on voit de nos yeux ;)

La base de donnée est un peu inutile ici, c'est le Html qu'il nous faut.

J'ai re-regardé ton index.php, et je vois pas.

D'ailleur, petite erreur pour

Et tu dis que lorsque tu sélectionne ton produit, il s'affiche correctement ... or quand tu valide ton formulaire, tu as 1 ( -> EL3PSK) ... quand tu sélectionnes un autre produit, sa fiche change ? (ça aurait pu être une erreur au nivau du $row['id'])

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

oui la fiche change! je n'est aucun probleme à ce niveau la
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>j'ai pas de page html qui plante car je n'ai pas de page HTML tout simplemet!
    elle est bonne celle là !   je dirais même excellente !
    si tu n'a pas de page html/javascritp.... tu n'es pas sur le  bon forum !   ;o))))
     et  tu nous en montres quand même un ch'tit bout....  ton index.php que fait-il sinon
          générer un page html ?
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

voila la page index.php dans son entier pour toi Bultez :

index.php :

<html>
 <head>
  <title>commande client</title>
  <script type='text/javascript'>
   //var xhr = null;
 
   // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
   var pickRecentProgID = function (idList){
    // found progID flag
       var bFound = false;
       for(var i=0; i < idList.length && !bFound; i++){
           try{
               var oDoc = new ActiveXObject(idList[i]);
               o2Store = idList[i];
               bFound = true;
           }catch (objException){
               // trap; try next progID
           };
       };
       if (!bFound)
     throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
       idList = null;
       return o2Store;
   }


   // Retourne un nouvel objet XmlHttpRequest
   var GetXmlHttpRequest_AXO=null
   var GetXmlHttpRequest=function () {
    if (window.XMLHttpRequest) {
     return new XMLHttpRequest()
    }
    else if (window.ActiveXObject) {
     if (!GetXmlHttpRequest_AXO) {
      GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
     }
     return new ActiveXObject(GetXmlHttpRequest_AXO)
    }
    return false;
   }


   // Compatibilité avec le script du tutoriel AJAX (developpez.com)
   getXhr=GetXmlHttpRequest;
 
   /**
   * Méthode qui sera appelée sur le click du bouton
   */
   
   //requete1
   function go(){
      var xhr = getXhr();
      xhr.onreadystatechange = function(){         if(xhr.readyState 4 && xhr.status 200){
     leselect = xhr.responseText;
     document.getElementById('designation').innerHTML = leselect;
     document.getElementById('Qte').innerHTML = leselect;
         }
      }
     
      xhr.open("POST","./ajax1.php",true);
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      sel = document.getElementById('Id_ref');
      id_ref = sel.options[sel.selectedIndex].value;
             xhr.send("Id_ref="+id_ref);
    }
    
    //requete2
   function go2(){
      var xhr = getXhr();
      // On défini ce qu'on va faire quand on aura la réponse
      xhr.onreadystatechange = function(){
         // On ne fait quelque chose que si on a tout reçu et que le serveur est ok         if(xhr.readyState 4 && xhr.status 200){
     leselect = xhr.responseText;
     // On se sert de innerHTML pour rajouter les options a la liste
     document.getElementById('des').innerHTML = leselect;
     document.getElementById('qte').innerHTML = leselect;
         }
      }
      // Ici on va voir comment faire du post
      xhr.open("POST","./ajax2.php",true);
      // ne pas oublier ça pour le post
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      // ne pas oublier de poster les arguments
      // ici, l'id de l'auteur
      sel = document.getElementById('Id_ref1');
      id_ref1 = sel.options[sel.selectedIndex].value;
             xhr.send("Id_ref1="+id_ref1);
   }
         
 </script>
 </head>
 
  <form action="visualiser.php" method="post" enctype="multipart/form-data">
   <fieldset style="width: 800px">
    <legend>commande</legend>
    <label>reference</label>
    <select name='ref' id='Id_ref' onchange='go();'>
     <option value="">reference</option>
     <?php
     //requete1
      include ('connexion.php');
      $res = mysql_query("SELECT id, ref_pdt FROM reference");
      while($row = mysql_fetch_assoc($res)){
       echo "<option value='".$row["id"]."'>".$row["ref_pdt"]."</option>";
      }
     ?>
    </select>
    
    
 
    

    
    

    

     
    <label> Nbre de pièce </label>
    
    
  

  
  
  </form>
 
</html>

désolé
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>voila la page index.php dans son entier pour toi Bultez :

non monsieur ! tu nous postes le php !!!
 while($row = mysql_fetch_assoc($res)){
       echo "<option value='".$row["id"]."'>".$row["ref_pdt"]."</option>";
    et moi faut que je fasse à la main ce que ça génère  ?

en plus , si possible, uniquement ce qui pose problème !
    pas tout... ça décourage, il faut qu'on décortique....
    et on ne peut même pas tester, puisqu'on n'a pas la base de données....

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

voila ce qu'il me donne :

<html>
 <head>
  <title>commande client</title>
  <script type='text/javascript'>
   //var xhr = null;
 
   // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
   var pickRecentProgID = function (idList){
    // found progID flag
       var bFound = false;
       for(var i=0; i < idList.length && !bFound; i++){
           try{
               var oDoc = new ActiveXObject(idList[i]);
               o2Store = idList[i];
               bFound = true;
           }catch (objException){
               // trap; try next progID
           };
       };
       if (!bFound)
     throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
       idList = null;
       return o2Store;
   }


   // Retourne un nouvel objet XmlHttpRequest
   var GetXmlHttpRequest_AXO=null
   var GetXmlHttpRequest=function () {
    if (window.XMLHttpRequest) {
     return new XMLHttpRequest()
    }
    else if (window.ActiveXObject) {
     if (!GetXmlHttpRequest_AXO) {
      GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
     }
     return new ActiveXObject(GetXmlHttpRequest_AXO)
    }
    return false;
   }


   // Compatibilité avec le script du tutoriel AJAX (developpez.com)
   getXhr=GetXmlHttpRequest;
 
   /**
   * Méthode qui sera appelée sur le click du bouton
   */
   
   //requete1
   function go(){
      var xhr = getXhr();
      xhr.onreadystatechange = function(){         if(xhr.readyState 4 && xhr.status 200){
     leselect = xhr.responseText;
     document.getElementById('designation').innerHTML = leselect;
     document.getElementById('Qte').innerHTML = leselect;
         }
      }
     
      xhr.open("POST","./ajax1.php",true);
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      sel = document.getElementById('Id_ref');
      id_ref = sel.options[sel.selectedIndex].value;
             xhr.send("Id_ref="+id_ref);
    }
    
 </script>
 </head>
 
  <form action="visualiser.php" method="post" enctype="multipart/form-data">
   <fieldset style="width: 800px">
    <legend>commande</legend>
    <label>reference</label>
    <select name='ref' id='Id_ref' onchange='go();'>
     <option value="">reference</option>
     <option value='1'>EL3PSK</option><option value='2'>EL4PSK</option><option value='3'>EL5PSK</option><option value='4'>EL6PSK</option><option value='5'>EL7PSK</option><option value='6'>ELB3PS</option><option value='7'>ELB4PS</option><option value='8'>ELB5PS</option><option value='9'>ELB6PS</option><option value='10'>ELB7PS</option>    </select>
    
    
 
    

    
    

    

     
    <label> Nbre de pièce </label>
    
    
  

  
  
  </form>
 
</html>
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
D'accord.

Normalement, avec $_POST['ref'], tu devrais avoir l'ID ... C'est bon. La je fais des tests chez moi. Ca marche :s

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

salut et merci de vos réponses,

ajax1.php me renvoi la designation et la Qte. il me les affiche correctement sur ma page.
maintenant au bas de la barre de navigation il me met erreur sur la page.

pourtant tout se déroule correctement.
au debut il m'affiche juste la liste déroulante pour choisir la ref pui quand on choisi la ref il m'affiche la désignation et la Qte!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>ajax1.php me renvoi la designation et la Qte. il me les affiche correctement sur ma page.
    on se doutait bien...
    tu met 2 fois ce qu'on te renvoie dans 2 div différentes !
            donc l'affichage ne doit pas être correct.
    et on ne sait pas ce que ajax1 retourne !
    si ça retourne
       par exemple... ça doit planter si on utilise nbr ou qte... il y en a 2.
    si ça retourne 0 1, on ne peut pas réexploiter...

    ce, sans préjuger des autres erreurs possibles que je n'ai pas contrôlées  !

>>pourtant tout se déroule correctement.
    ben non : il te met "erreur sur la page" !

FireFox
, regarder la "console d'erreurs"
Outils / Console d'erreurs
et mieux : télécharger mon Site]     [M'écrire]
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

c bon ca marche
l'erreur venait de la requete a ce niveau  'SELECT des.id, des.des_pdt, des.Qte, des.Id_Ref

des.Id_ref et non pas des.Id_Ref!

c'est super merci beaucoup vous m'avez beaucoup aider et en plus j'ai appris beaucoup de choses

merci encore
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
De rien, nous sommes là pour ça ;)

Tu peux valider les réponses qui t'on aider ? Ca aidera les personnes qui ont le même problème que toi ;)

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

bonjour et encore merci pour votre aide!

j'ai encore une question.
j'ai remis l'affichage de la designation dans index.php :

    <label>designation</label>
    

    <select name='designation'>
     <option value='designation'>designation</option>
    </select>
    
 

ajax1.php
$requete = 'SELECT des.id, des.des_pdt, des.Qte, des.Id_ref FROM reference as ref              LEFT JOIN designation as des ON des.Id_ref ref.id WHERE ref.ref_pdt "' . mysql_escape_string($_POST['Id_ref']) . '"';
                    if ($res = mysql_query($requete) ) {
     echo "<select name='designation'>";
     while($row = mysql_fetch_assoc($res)){
      echo "<option value='".$row["des_pdt"]."'>".$row["des_pdt"]."</option>";
     }

le probleme c'est la requete est fait a partir de ajax1.php donc c'est affichage ne retourne aucune valeur!

ma question est comment puis-je recuperer la designation?
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Ah, là, c'est plus complexe ...

Tu dois récupérer les informations BRUTES d'ajax et les insérés DYNAMIQUEMENT dans ta page.

Tu as deux solutions :
<ol><li>Tu récupères les informations (X)HTML avec un séparateur (| ou \n (retour à la ligne souvent)) et un .texte_retourne.split('separateur'); suffit. Ensuite, tu affiche le 1er et le 2er dans chaque champs. Tu peux récuprer l'info et le mettre par innerHTML (remplacement de l'ancien <select />)</li><li>Tu récupères des informations du style JSON/XML, cequi te permet d'utiliser des fonctions pour crée dynamiquement ton formulaire. C'est plus compliqué, mais c'est la version que je préfere. (_.addChild($), _.AddArgument($, $), _.createElement($), ...)</li></ol>
<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
23
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
26 juin 2008

merci pour ta reponse,

et bah dis donc j'ai deja mis deux semaine pour comprendre ce que je fesais jusqu'à maintenant et voila que la je dois remettre les pattes dans le camboui.

faut que je cherche des exemples sur le net pour mieux comprendre car la c un peu flou pour moi!

si vous avez un bon site sur lequel je peux me ressourcer avant de vous embeter ca serait pas mal du tt!
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Franchement, c'est pas trop dur.

Regarde sur Google, c'est là ou on as le plus d'exemple. Tu tapes une fonction, et tu as tout plein d'exemples.
Si j'ai le temps (entre deux exams), je regarderais ... j'avais trouvé un bon site ;)

<hr />Si ma reponse te convient, merci de l'accepter !