Ecriture fichier de listes liées

Résolu
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008 - 12 juin 2008 à 10:22
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008 - 24 juin 2008 à 10:49
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 15:58
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]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 16:20
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]
3
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
13 juin 2008 à 17:16
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?
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
13 juin 2008 à 17:44
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 ! 
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
16 juin 2008 à 16:14
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?
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 juin 2008 à 16:46
^^

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 ! 
3
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
16 juin 2008 à 17:19
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!
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 juin 2008 à 17:33
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 ! 
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 10:30
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]
0
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
12 juin 2008 à 10:38
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!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 10:49
>>...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]
0
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
12 juin 2008 à 10:58
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!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 11:23
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]
0
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
12 juin 2008 à 11:39
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!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 12:12
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]
0
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
12 juin 2008 à 12:27
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]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 juin 2008 à 12:44
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]
0
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
12 juin 2008 à 13:09
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!
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 13:30
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 ! 
0
corsamobile Messages postés 23 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 26 juin 2008
12 juin 2008 à 14:11
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
0
Rejoignez-nous