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
exécute ton index.php ( je ne sia spas si tu fais en local
    avec easyphp ou wamp ou depyuis un site, peu importe )
tu vois une page.... ( c'est la page html ! qui a été générée par le php ! )
tu fais affichage de la source, tu sauvegardes, tu fais un extrait uniquement
    de ce qu'il faut et tu nous met ici
ou tu fais "Fichier Enregistrer sous... "  
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ouf....
si on répond donc à la question : récupérer les données... liste déroulante...

  <form action="visualiser.php" method="post">
    ...

       et dans visualiser.php   on utilise $_POST['ref']   qui contiendra
          le value de l'option sélectionnée

       rien regardé d'autres, puisque là est ton problème...

       mais à mon humble avis, dans ajax :
             ...
             leselect = xhr.responseText;
             document.getElementById('designation').innerHTML = leselect;
             document.getElementById('Qte').innerHTML = leselect;
             ...

       ça m'étonnerait que ça baigne ( sans préjuger du reste )
             que te renvoie ajax1.php ?   parce que là,
              ce qui est retourné est mis, dans les 2 div....

<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

alors j'ai resolus le probleme "erreur sur la page" en elevant le
dans index.php, il était de trop!

donc en fait le soucis c'est que je récupere pour la reference l'id alors que moi je voudrais récuperé la reference.
en clair je veux pas recuperé 1 mais EL3PSK

si je change dans index.php echo "<option value='".$row["id"]."'>".$row["ref_pdt"]."</option>";
par  echo "<option value='".$row["ref_pdt"]."'>".$row["ref_pdt"]."</option>";

il me donne une erreur de requete alors comment faire?
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Ah !

Donc, si tu fais ça ton ajax n'est plus bon (a moins que tu modifie aussi ta requete sur ta page ajax1.php)

il me donne une erreur de requete alors comment faire?

Peut on avoir l'erreur de requete ?

<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,
dsl d'avoir mis autant de temps à répondre!

alors quand je change dans index. php juste
echo "<option value='".$row["id"]."'>".$row["ref_pdt"]."</option>";
par
echo "<option value='".$row["ref_pdt"]."'>".$row["ref_pdt"]."</option>";

il me donne "erreur de requete" c'est par rapport à mon script de ajax1.php. que je remet ci-dessous :

<?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["des_pdt"]."'>".$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["Qte"]."'>".$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";
    }


?>

il faut que je modifie quelque chose dans ajax1.php?
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
^^

En fait, tu dois faire une lisaison pour que tons script marche ...$requete <gras>'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</gras>($_POST['Id_ref']) . '"';

mysql_escape_string() Pour protéger ton code

D'après :
create table reference {
    id tinyint(10) not null auto_increment primary key,
    ref_pdt varchar(10) not null
}
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
}

Je pense que ca devrait marcher

Sinon pour l'erreur fait :
else {
     echo 'Erreur de requête : ', or die(mysql_error());
}

<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 JOJO738

mais il me donne un message d'erreur :
Parse error: syntax error, unexpected T_LOGICAL_OR in ajax1.php on line 24
qui correspond a cette ligne :
else {
     echo "Erreur de requête :" , or die(mysql_error());
    }

et si j'enleve or die(mysql_error()); et que je selectionne dans ma liste ma ref alors il m'affiche des champs vide pour la des et la Qte!
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Arf, c'est vrai ... le or n'est pas à mettre ^^
else {
     echo 'Erreur de requête :';
     die(mysql_error());
}

Hum ... Là, par contre c'est une erreur au niveau de la requete. Essaye de mettre un echo '', print_r($res, true), '

'; dans ton formulaire ajax1.php. Tu auras es resultats renvoyé par la requete. C'est peut être une erreur de nom ^^
<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,
    >>je ne sais comment recupérer dans un fichier les données des differentes listes déroulantes.
    tu veux créer un fichier ( sur le micro ? sur le serveur ? ) qui reprenne
        toutes les options de tous les select ?
<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

merci de ta réponse,
je veux créé le fichier sur le serveur et qui reprenne toutes les options des select ainsi que les imput!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>...créé le fichier sur le serveur...
    tournes-toi plutôt vers le langage sur le seveur alors
    ( asp, php, ruby ... )
<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 essayé de recuperer avec PHP car c'est mon language de départ mais il me récupère des -1 et nom pas les valeurs!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
php récupère dans un formulaire toutes les value des éléments qui ont un name.
à tes select   met un name , du style "toto[]" ... oui, avec les crochets,
                    met l'attribut multiple,
                    sélectionne toutes les options,
    php recevra un array $_POST['toto']

et... pourquoi les récupérer toutes depuis des select
alors que ça existe dans ta 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

en fait c'est un formaulaire pour des commandes clients!
le client choisi la ref de l'article, le formulaire lui affiche automatiquement la des et la qté/colis et il ne lui reste plus qu'a écrire la qté qu'il a besoin dans le input.

je veux ensuite recuperer toutes ses données, l'afficher pour qu'il confirme et ensuite il est envoyé automatiquement sur mon mail

voila tout!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ah ben alors, probablement pas besoin de faire    autre chose
    qu'un formulaire classique.


php récupère  toutes les value des éléments qui ont un name dans le  formulaire envoyé.
et si plusieurs "mêmes" champs possibles
    mettre un name "toto[]", ce sera un array pour le php
<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

je n'y arrive pas!

je te donne tout mon code

index.php
  //requete1
   function go(){
      var xhr = getXhr();
      xhr.onreadystatechange = function(){         if(xhr.readyState 4 &amp;&amp; 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='reference' id='Id_ref' onchange='go();'>
     <option value='reference'>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','Flgv+532') ) {
   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>";
      } 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_re1 non défini";
    }


?>


visulaliser.php
[code]
<?
$a=$_POST['reference'];
$b=$_POST['designation'];
$c=$_POST['Qte'];
$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, "\n");
echo "merci";
 
fclose($open);


?>
[code]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ah... ajax est là !?!
    et du php ?       et... comment je devine le contenu de ta base de données ?

qu'est-ce qui plante ?    le traitement d'ajax sur le onchange ?
                                    l'envoi et le traitement du formulaire ?

fais un EXTRAIT   uniquement ce qui ne va pas !
    ( parce que déjà : je ne peux pas reconstituer ton environnement !! )
    et le html/JavaScript pas le php !

<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 oui désolé j'ai oublier le BDD

j'ai deux tables :

reference :
id
ref_pdt

designation :
id
des_pdt
Id_ref
Qte

alors au niveau de l'affichage tout va bien en selectionnant ma reference j'arrive à avoir ma designation et ma qte.

il envoi le formulaire correctement. ce qui n'est pas correcte c'est les information recuperer!

pour la reference il m'envoi 1 et pour les autres rien!
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Salut,

Donc ton problème est la récupération des données sur visualiser.php ...

Regarde, tu n'as pas de champ Qte (seulement nbepieces).
Je te conseils de faire un
echo '', print_r($_POST, true), '

';
pour voir les resultats de ton pormulaire. Et protège ton script ! (intval(), htmlentities(), htmlspecialchars(), isset(),...)

<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 jojo!

mais je n'est pas de probleme pour recupérer nbrepieces mais seulement les autres.
le select de la reference est sur index.php et le select de des et Qte sont sur ajax1.

pour la ref il recupere 1 et non pas la reference et pour les autres il ne recupere rien!
je suis perdu lol