Liste déroulante + mysql + php

Résolu/Fermé
Imana E.I Messages postés 5 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 14 juin 2009 - 26 mai 2009 à 19:34
dodoecchi Messages postés 454 Date d'inscription samedi 9 septembre 2006 Statut Membre Dernière intervention 26 avril 2012 - 28 mai 2009 à 18:23
Bonjour,
Je débute en PHP et j'essaye de faire une site pour la gestion de base de données pour mon entreprise.
mais je suis bloqué dans la page ou je vais afficher l'historique des clients (fiche client).
dans cette fiche Je dois lister tous les produits acheté par chaque client . Et chaque produit peut se transfert d'un client à un autre donc on a besoin d'une fonction qui en utilisant une liste déroulant des nom des clients existants dans la base dèja pour que l'utilisateur choisi un.
Le soucis c'est que le div du transfert dois s'afficher en dessous du produit choisi.donc j'aurais deux boucle imbriqué la premiére pour récupérer les produits et la deuxiéme pour récuperer les clients.
j'espére que j'ai bien expliqué j'utilise dreamweaver pour la création de mon site.
Voilà le code

// retracer les produit acheté par ce client
$colname_even_modi = "-1";
if (isset($_GET['id_customer'])) {
$colname_achat_even = $_GET['id_customer'];}
mysql_select_db($database_Manatec, $Manatec);
$query_achat_even = sprintf("SELECT Evenement.date_evenement,Produit.id_produit, Produit.type_de_produit , Produit.num_serie_produit, Produit.statut_produit FROM ((Client INNER JOIN Evenement ON Client.id_client=Evenement.id_client ) INNER JOIN subir ON Evenement.id_evenement = subir.id_evenement)INNER JOIN Produit ON subir.id_produit=Produit.id_produit WHERE Evenement.id_client=%s AND Evenement.type_evenement='Bought'", GetSQLValueString($colname_achat_even, "int"));
$achat_even = mysql_query($query_achat_even, $Manatec) or die(mysql_error());
$row_achat_even = mysql_fetch_assoc($achat_even);
$totalRows_achat_even = mysql_num_rows($achat_even);
// récupérer les clients
$query_client = "SELECT id_client, type_client, nom, organization FROM Client";
$client = mysql_query($query_client, $Manatec) or die(mysql_error());

.
.
.
// le div qui contient la liste des produits avec les fonctions
<div id="hist_client">

<B> <I><FONT COLOR="#040404"> Bought <?php echo $totalRows_achat_even ?> products :</FONT> </I> </B>
<?php for ($nombre_de_lignes1 = 1; $nombre_de_lignes1 <= mysql_num_rows($achat_even); $nombre_de_lignes1++){
$row_achat_even = mysql_fetch_assoc($achat_even);?>
<li>
<table width="766" align="center" class="lis_bo">
<tr>
<td width="400" height="25" > <B> <I>Purchase Date</I></B> : <?php echo $row_achat_even['date_evenement']; ?></td>
<td width="117" rowspan="4" align="center" class="bouton_list1"><a href="ficheClient.php?id_customer=<?php echo $_GET['id_customer']; ?>&a=<?php echo $row_achat_even['id_produit']; ?>&g=affich" > transfert </a></td>
<td width="117" rowspan="4" align="center" class="bouton_list1" ><a href="ficheClient.php?id_customer=<?php echo $_GET['id_customer']; ?>&a=<?php echo $row_achat_even['id_produit']; ?>&h=affich" >change statut</a></td>
<td width="117" rowspan="4" align="center" class="bouton_list1" ><a href="ficheClient.php?id_customer=<?php echo $_GET['id_customer']; ?>&a=<?php echo $row_achat_even['id_produit']; ?>&k=affich" >A.S.S.</a></td>
</tr>
<tr>
<td height="25" ><B> <I>Product type </I></B>: <?php echo $row_achat_even['type_de_produit']; ?></td>
</tr>
<tr>
<td height="25" ><B> <I> Serial number</I></B> :<a href="ficheproduit.php"><?php echo $row_achat_even['num_serie_produit']; ?></a></td>
</tr>
</table>
</li>
<?php if ($_GET['g']=="affich"&& $row_achat_even['id_produit']==$_GET['a'])
$etatt_div="";
else
$etatt_div="none";
?>
// le div du fonction transfert :s'affiche en dessous du produit lorsque on clique sur le lien transfert
<div style="display:<?php echo $etatt_div;?>" class="center">
<form action="transfert.php" method="post" >
// la liste contient le nom du client et l'organization et retourne l'id client comme valeur
<B> <I>select a customer :</I></B>
<select name="trans_pro2" class="text-long" >
<option> Organization : customers </option>
<?php for ($nombre_de_lignes = 1; $nombre_de_lignes <= mysql_num_rows($client); $nombre_de_lignes++){
$donnees = mysql_fetch_array($client);?>
<option value="<?php echo $donnees['id_client']; ?>">
<?php echo $donnees['organization']; ?>
: <?php echo $donnees['nom']; ?></option>
<?php }?>
</select>
   
<B> <I> set product status :</I> </B>
<select class="text-long1" name="statupro">
<option selected="selected" value="<?php echo $row_achat_even['statut_produit']; ?>"><?php echo $row_achat_even['statut_produit']; ?></option>
<option value="Bought">Bought</option>
<option value="Lended">Lended</option>
<option value="On a trial basis">On a trial basis </option>
<option value="In stock">In stock</option>
<option value="In transfer">In transfer</option>
<option value="Rented">Rented</option>
</select>

<br/> <input name="location1" type="radio" value="" onclick="javascript: $('#location_acha').hide('slow');"/>
<B> <I>Same of Customer Location</I></B>
<input name="location1" type="radio" onclick="javascript: $('#location_acha').show('slow');" value="1" />
<B> <I> Other location</I></B>
<span id= "location_acha">
<input name="location-tran" type="text" class="text-long" />
</span>

<input name="loc" type="hidden" value="<?php echo $row_joining['adresse'];?>" />
<input name="id_pro_tran" type="hidden" value="<?php echo $row_achat_even['id_produit']; ?>" />
<br/>
<input name="confirm" type="submit" value="confirm" class="boutton" />

</form>
</div>
.
.
.
<?php } ?>
</div>
avec ce code la liste des clients est réussi seulment avec le premier produit dans ma listes des produits.
et nn pas pour les autres.
comment faire ?
merci d'avance
A voir également:

4 réponses

dodoecchi Messages postés 454 Date d'inscription samedi 9 septembre 2006 Statut Membre Dernière intervention 26 avril 2012 29
27 mai 2009 à 19:12
salut
j'aimerais bien t'aider mais
- j'ai rien compris à ton problème (un produit peut se transferer de client? kesako??)
- ton code est illisible....... qu'est c'que c'est mal aéré!

Dorian
0
Imana E.I Messages postés 5 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 14 juin 2009
28 mai 2009 à 11:53
bonjour,
merci dodoecchi, oui t'a raison c pas claire mon code .
bon nos produits se sont des dispositifs médicaux donc on doit retracer tt sa phase après vente . exemple si on a vendu pour un fournisseur et ce dernier a vendu pour d'autre client donc on dois avoir l' historique pour tous ces événements.
bon là je suis entrain de faire une fiche de client ou on dois affiché tous les produits achetés par ce client et devant chaque produit on a trois liens (transfert, changement de statut, s.A.V.)
le lien transfert pointe sur un div qui s'affiche en dessous du produit et qui contient un liste déroulante des clients.
/*----récupérer les produits acheté par ce client---*/

$query_achat_even = sprintf("SELECT Evenement.date_evenement,Produit.id_produit, Produit.type_de_produit , Produit.num_serie_produit, Produit.statut_produit FROM ((Client INNER JOIN Evenement ON Client.id_client=Evenement.id_client ) INNER JOIN subir ON Evenement.id_evenement = subir.id_evenement)INNER JOIN Produit ON subir.id_produit=Produit.id_produit WHERE Evenement.id_client=%s AND Evenement.type_evenement='Bought'", GetSQLValueString($colname_achat_even, "int"));
$achat_even = mysql_query($query_achat_even, $Manatec) or die(mysql_error());
$row_achat_even = mysql_fetch_assoc($achat_even);
$totalRows_achat_even = mysql_num_rows($achat_even); 

/*----récupérer les clients qu'on a dans la base----*/

$query_client = "SELECT id_client, type_client, nom, organization FROM Client";
$client = mysql_query($query_client, $Manatec) or die(mysql_error()); 

/*-----------------------------------------------------------------------------------*/
 <div id="hist_client">
					       
                  Bought <?php echo $totalRows_achat_even ?> products 
                   <?php do { ?>
					        <li>
					        Product type : <?php echo $row_achat_even['type_de_produit']; ?>
					       <a  href="ficheClient.php?id_customer=<?php echo $_GET['id_customer']; ?>&a=<?php echo $row_achat_even['id_produit']; ?>&g=affich" > transfert </a>
					       <a href="#" >change statut</a>
					       <a href="#" >A.S.S.</a
				            </li>
					       <?php if ($_GET['g']=="affich"&& $row_achat_even['id_produit']==$_GET['a']) 
	                            $etatt_div="";
                               else
                                $etatt_div="none";
                            ?>
					       <div  style="display:<?php echo $etatt_div;?>"  class="center">
                               <form action="transfert.php" method="post" >
                                 select a customer :
                                 <select name="trans_pro2" class="text-long" >
                                           <option> Organization : customers </option>
                                         <?php   for ($nombre_de_lignes = 1; $nombre_de_lignes <= mysql_num_rows($client); $nombre_de_lignes++)
										     {
                                               $donnees = mysql_fetch_array($client);?>
                                              <option value="<?php echo $donnees['id_client']; ?>"><?php  echo $donnees['organization']; ?>: <?php echo $donnees['nom']; ?></option>
                                        <?php }?>
                                  </select>
.
</div>
. 
<?php } while ( $row_achat_even = mysql_fetch_assoc($achat_even)); ?>
</div>

0
dodoecchi Messages postés 454 Date d'inscription samedi 9 septembre 2006 Statut Membre Dernière intervention 26 avril 2012 29
28 mai 2009 à 12:04
bon, déjà :
* il y a une balise sur CCM pour mettre du code
* les requêtes trop longues, on les étale sur plusieurs lignes. ça permet de voir exactement (avec le n° de ligne) où sont les erreurs, et ça aère le code
* tu ne m'as toujours pas dis où est le problème. montres moi un message d'erreur, un comportement bizarre.... je sais pas mais quelque chose!

* pourquoi tu utilises sprintf? je connais pas ça moi...
* pas de if(!mysql_query) pour récupérer les erreurs? c'est risqué
* voici une requête plus lisible (avec retours à la ligne et espacement abusif pour BIEN voir) :
SELECT Evenement.date_evenement , Produit.id_produit , Produit.type_de_produit , Produit.num_serie_produit , Produit.statut_produit
FROM
(
( Client INNER JOIN Evenement ON Client.id_client = Evenement.id_client )
INNER JOIN subir ON Evenement.id_evenement = subir.id_evenement
)
INNER JOIN Produit ON subir.id_produit = Produit.id_produit
WHERE Evenement.id_client= %s
AND Evenement.type_evenement = 'Bought'

* je risque pas d'être vraiment capable de t'aider étant donné que y'a beaucoup de termes SQL que j'ai jamais vu

Dorian
et si je signe c'est pas pour me faire appeler par mon pseudo...
0
Imana E.I Messages postés 5 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 14 juin 2009
28 mai 2009 à 12:51
je m'excuse,
c'est la première fois que je poste une question dans un forum donc je connais pas la balise "code".
enfait je commence le php et mysql et j'utilise dreamweaver pour générer mes codes.
dans cette fiche j'ai réussi à lister les produits et aussi à lister les client mais seulement pour la prémiére produit et nn pas pour les autres ce que je veux savoir c pourquoi le select ne se rempli pas. est ce que c'est parceque j'ai deux boucle imbriqué?
0
dodoecchi Messages postés 454 Date d'inscription samedi 9 septembre 2006 Statut Membre Dernière intervention 26 avril 2012 29
28 mai 2009 à 18:23
je ne sais pas , je n'ai jamais fait ce genre de chose en une seule requête comme toi
mais j'ai déja fait des boucles imbriquées.... en php pas en mysql
faut pas avoir peur de faire plusieurs requêtes

Dorian
0