Je me permets de poster ici pour avoir quelques lumières.
Je souhaite présenter dans un tableau les commandes en cours.
Avec le fournisseur, la référence du produit, l'année ...
L'affichage est ok, j'arrive aussi a afficher le nom / prenom du client en fonction de son id (chose sur laquelle j'ai bloqué un petit moment (novice inside).
Maintenant je souhaite ajouter des options de tri à mon tableau.
1. n'afficher que les commandes du fournisseur X, avec une liste déroulante, ca c'est ok.
Par contre quand je souhaite trier et par fournisseur et par année, les choses se compliquent.
Voici pour moi l'algorythmique de la chose.
Voici mon code pour le formulaire de départ :Si le fournisseur est défini
{
je test les variables pour vérifier.
requete sql de selection des commandes avec le fournisseur x.
}
ET SI Année est définie
{
je test les variables pour vérifier.
requete sql de selection des commandes avec le fournisseur x ET l'année X
}
Sinon
{
Afficher le choix de l'année
}
FinSi
Sinon
{
je montre la liste déroulante pour qu'on puisse choisir le fournisseur
}
FIN
Code : Tout sélectionner
<link href="../../style.css" rel="stylesheet" type="text/css" />
<form action="?action=commande_consulter_1" method="post" onSubmit="return checkrequired(this)">
<table align="left">
<tr>
<td class="colone_b Style1"></td>
<td class="colone_a Style1">Consultation / Recherche Cmdes.
<input type="text" name="Mot" size="15">
<input type="submit" value="Rechercher" alt="Lancer la recherche!">
<br>
<br>
<?php
////////////////////////////////////////////////////////////////
// définir le jour en cours.
$jour = date('Y-m-d');
////////////////////////////////////////////////////////////////
// sélectionner les rdv.
$totalcmde=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="" ');
$donnees_totalcmde=mysql_fetch_assoc($totalcmde);
$totalcmde=$donnees_totalcmde['total'];
echo 'TOTAL DES COMMANDES EN COURS : '.$totalcmde.'<br>';
/* fonction pour les commandes terminées */
$totallivree=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="livre" ');
$donnees_totallivree=mysql_fetch_assoc($totallivree);
$totallivree=$donnees_totallivree['total'];
echo 'Commandes livrées : '.$totallivree.'<br>';
echo '------------------------------<br>';
echo 'Actions : <br>';
echo '<a href="clients.php?action=consulter_rdv&condition=cejour">Afficher les commandes terminées / livrée </a><br>';
echo '<a href="clients.php?action=consulter_rdv&condition=cejour">Afficher les commandes qui doivent arriver </a><br>';
///////////////////////////////////////////////
// Fonction d'affichage de tous les rendezvous
///////////////////////////////////////////////
if (isset($_POST['id'])) afficher_rdv($_POST['id']);
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM commandes');
$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];
$messagesParPage=10;
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}
//Fonction de calcul pour la pagination.
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
//Listing des conditions //
if ((empty($_GET["condition"])))
{
$select = '
SELECT
commandes.id,
commandes.idfournisseur,
commandes.idannee,
commandes.refproduit,
commandes.type,
commandes.taille,
commandes.couleur,
commandes.accessoires,
commandes.informations,
commandes.datelivraison,
commandes.collaborateur,
commandes.magasin,
commandes.motif,
commandes.idclient,
commandes.datecommande
FROM commandes
ORDER BY id ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'';
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
echo '';
//INNER JOIN clients ON rdv_date.client = clients.id
}
?>
<hr />
<br>
Options de Tri pour les Commandes : <br><br>
<form action="commande_consulter_1.php" method="post">
1. Sélectionner le fournisseur.
<?
/* 1. Sélectionner le fournisseur. */
echo '<select name="fournisseur">';
mysql_select_db('gestion',$db);
$SQL = "SELECT id,nom FROM fournisseur";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option value=".$val["id"].">".$val["nom"]."</option>\n";
}
echo '</select>';
echo '<input type="submit" Value="Trier"><br>';
?>
2. Sélectionner l'année<br>
3. Sélectionner la référence.<br>
4. Sélectionner la taille.<br>
5. Sélectionner le coloris.<br>
6. Sélectionner le type.<br>
<br>
<br>
<?
/* Fonction de Tri pour le tableau */
/* 2. Sélectionner l'année< */
/* 3. Sélectionner la référence.< */
/* 4. Sélectionner la taille. */
/* 5. Sélectionner le coloris.< */
/* 6. Sélectionner le type.< */
/* Fin de la fonction de recherche des commandes. */
// si on a récupéré un résultat on l'affiche.
if($total) {
// debut du tableau
echo '<table width="100%" class="client" border="0" cellspacing="0" cellpadding="0">'."\n";
// première ligne on affiche les titres prénom et surnom dans 2 colonnes
echo '<tr class="toprow">';
echo '<td class="toprow"><b><u>N° Cmde </u><br></td>';
echo '<td class="toprow"><b><u>Fournisseur</u></b> - </td>';
echo '<td class="toprow"><b><u>Référence</u></b> - </td>';
echo '<td class="toprow"><b><u>Taille</u></b> - </td>';
echo '<td class="toprow"><b><u>Type</u></b> - </td>';
echo '<td class="toprow"><b><u>Couleur</u></b> - </td>';
echo '<td class="toprow"><b><u>Le Client</u></b> - </td>';
echo '<td class="toprow"><b><u>Date Cmde</u></b> - </td>';
echo '<td class="toprow"><b><u>Date Livraison</u></b> - </td>';
echo '<td class="toprow"><b><u>Magasin</u></b> - </td>';
echo '<td class="toprow"><b><u>Modifier</u></b> - </td>';
echo '<td class="toprow"><b><u>Consulter</u></b> - </td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result))
{
/* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */
$client2=mysql_query('SELECT
nom, prenom, nomm
FROM clients
WHERE id='.$row['idclient'].'
;')
or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br />
<img src="imgs/messagebox_critical.png" alt="ERREUR" />
l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'.
__FILE__.'"</u>.</span><br />'.mysql_error());
$infoclient=mysql_fetch_array($client2);
/* FIN */
/* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */
$fournisseur=mysql_query('SELECT
nom
FROM fournisseur
WHERE id='.$row['idfournisseur'].'
;')
or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br />
<img src="imgs/messagebox_critical.png" alt="ERREUR" />
l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'.
__FILE__.'"</u>.</span><br />'.mysql_error());
$infofournisseur=mysql_fetch_array($fournisseur);
/* FIN */
/* Les Données du Tableau */
echo '<tr>';
echo '<td class="leftcol"><div class="intro">'.$row["id"].'</div></td>';
echo '<td class="data"><div class="intro">'.$infofournisseur["nom"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["refproduit"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["taille"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["type"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["couleur"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["idclient"].'-- '.$infoclient["nom"].' --'.$infoclient["prenom"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["datecommande"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["datelivraison"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["magasin"].'</div></td>';
//LIENS
echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Modifier</a></div></td>';
echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Consulter</a></div></td>';
echo '</tr>'."\n";
}
}
echo '</table>'."\n";
echo '' . $total .' Commandes sur cette page sur un total de ' .$totalcmde.' Commandes';
// fin du tableau.
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="commandes.php?action=commande_consulter&page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
// on libère le résultat
mysql_free_result($result);
?>
</td>
</tr>
<tr>
<td></td>
</form>
Code : Tout sélectionner
<?
/*Récupération des anciennes fonctions de la page pour le tri ET la pagination. */
////////////////////////////////////////////////////////////////
// définir le jour en cours.
$jour = date('Y-m-d');
////////////////////////////////////////////////////////////////
// sélectionner les rdv.
$totalcmde=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="" ');
$donnees_totalcmde=mysql_fetch_assoc($totalcmde);
$totalcmde=$donnees_totalcmde['total'];
echo 'TOTAL DES COMMANDES EN COURS : '.$totalcmde.'<br>';
/* fonction pour les commandes terminées */
$totallivree=mysql_query('SELECT COUNT(*) AS total FROM commandes WHERE statut="livre" ');
$donnees_totallivree=mysql_fetch_assoc($totallivree);
$totallivree=$donnees_totallivree['total'];
echo 'Commandes livrées : '.$totallivree.'<br>';
echo '------------------------------<br>';
echo 'Actions : <br>';
///////////////////////////////////////////////
// Fonction d'affichage de tous les rendezvous
///////////////////////////////////////////////
if (isset($_POST['id'])) afficher_rdv($_POST['id']);
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM commandes');
$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];
$messagesParPage=10;
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}
//Fonction de calcul pour la pagination.
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
/* Fin du Code qui ne changera pas*/
//////////////////////////////////////////
/////////////////////////////////////////
/* FONCTIONS DE TRIAGE */
///////////////////////////////////////
//////////////////////////////////////
if (isset($_POST['fournisseur']))
{
/* Fournisseur définie */
echo 'fournisseur défini <br> Donc il faut choisir l annee Svp';
//////////////////////
/* Test des Variables Fournies par le formulaire*/
echo '<br>Id fournisseur : ';
echo '' .$_POST['fournisseur']. '<br>';
$fournisseur = $_POST['fournisseur'];
echo '<br>$fournisseur = ';
echo $fournisseur;
echo '<br>';
//////////////////////
/* requete SQL avec le fournisseur */
$select = '
SELECT
commandes.id,
commandes.idfournisseur,
commandes.idannee,
commandes.refproduit,
commandes.type,
commandes.taille,
commandes.couleur,
commandes.accessoires,
commandes.informations,
commandes.datelivraison,
commandes.collaborateur,
commandes.magasin,
commandes.motif,
commandes.idclient,
commandes.datecommande
FROM commandes
WHERE commandes.idfournisseur = '.$fournisseur.'
ORDER BY id ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'';
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
echo 'Tri par Fournisseur';
//////////////////////
/* ANNEE */
if (isset($_POST['annee']))
{
/* Fournisseur définie */
echo 'Année déja définie, sélectionnez donc la référence produit';
/* TEST VARIABLE FRS */
echo '<br>test variable fournisseur si l annee est definie. ';
echo $fournisseur;
//////////////////////
/* Test des Variables Fournies par le formulaire*/
echo '<br>Id ANNEE : ';
echo '' .$_POST['annee']. '<br>';
$annee = $_POST['annee'];
echo '<br>$annee = ';
echo $annee;
echo '<br>';
$fournisseur ='';
//////////////////////
/* requete SQL avec le fournisseur */
$select = '
SELECT
commandes.id,
commandes.idfournisseur,
commandes.idannee,
commandes.refproduit,
commandes.type,
commandes.taille,
commandes.couleur,
commandes.accessoires,
commandes.informations,
commandes.datelivraison,
commandes.collaborateur,
commandes.magasin,
commandes.motif,
commandes.idclient,
commandes.datecommande
FROM commandes
WHERE commandes.idfournisseur = '.$fournisseur.'
WHERE commandes.idannee = '.$fournisseur.'
ORDER BY id ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'';
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
echo 'Tri par Fournisseur ET par Annee';
//////////////////////FIN REQUETE
}
else
{
/* TEST VARIABLE FRS */
echo '<br>test variable fournisseur avant l envoi du formulaire avec l annee. ';
echo $fournisseur;
/* Afficher la liste déroulante avec la liste des annees */
echo '<form action="commandes.php?action=commande_consulter_1" method="post">';
echo "<div align='left'>2. Sélectionnez l'annee ";
/* 1. Sélectionner le l'annee. */
/* le fournisseur na pas été sélectionné donc on affiche le formulaire */
echo '<select name="annee">';
mysql_select_db('gestion',$db);
$SQL = "SELECT id,annee from ANNEE";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
{
echo "<option value=".$val["id"].">".$val["annee"]."</option>\n";
}
echo '</select>';
echo '<input type="submit" Value="Trier"><br></form>';
}
/* FIN ANNEE */
}
else
{
/* Afficher la liste déroulante avec la liste des fournisseurs */
echo "<div align='left'>1. Sélectionner le fournisseur ";
/* 1. Sélectionner le fournisseur. */
/* le fournisseur na pas été sélectionné donc on affiche le formulaire */
echo '<select name="fournisseur">';
mysql_select_db('gestion',$db);
$SQL = "SELECT id,nom FROM fournisseur";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
{
echo "<option value=".$val["id"].">".$val["nom"]."</option>\n";
}
echo '</select>';
echo '<input type="submit" Value="Trier"><br></form>';
}
/*FIN FOURNISSEUR */
/////////////////////////////////////
/* test des variables recues */
/*
echo 'annee : ';
echo $annee;
echo '<br> fournisseur : ';
echo $fournisseur;
*/
//////////////////////////////////////////
/////////////////////////////////////////
/* FONCTIONS TABLO */
///////////////////////////////////////
//////////////////////////////////////
// si on a récupéré un résultat on l'affiche dans un tableau
if($total) {
// debut du tableau
echo '<table width="100%" class="client" border="0" cellspacing="0" cellpadding="0">'."\n";
// première ligne on affiche les titres prénom et surnom dans 2 colonnes
echo '<tr class="toprow">';
echo '<td class="toprow"><b><u>N° Cmde </u><br></td>';
echo '<td class="toprow"><b><u>Fournisseur</u></b> - </td>';
echo '<td class="toprow"><b><u>Référence</u></b> - </td>';
echo '<td class="toprow"><b><u>Taille</u></b> - </td>';
echo '<td class="toprow"><b><u>Type</u></b> - </td>';
echo '<td class="toprow"><b><u>Couleur</u></b> - </td>';
echo '<td class="toprow"><b><u>Le Client</u></b> - </td>';
echo '<td class="toprow"><b><u>Date Cmde</u></b> - </td>';
echo '<td class="toprow"><b><u>Date Livraison</u></b> - </td>';
echo '<td class="toprow"><b><u>Magasin</u></b> - </td>';
echo '<td class="toprow"><b><u>Modifier</u></b> - </td>';
echo '<td class="toprow"><b><u>Consulter</u></b> - </td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result))
{
/* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */
$client2=mysql_query('SELECT
nom, prenom, nomm
FROM clients
WHERE id='.$row['idclient'].'
;')
or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br />
<img src="imgs/messagebox_critical.png" alt="ERREUR" />
l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'.
__FILE__.'"</u>.</span><br />'.mysql_error());
$infoclient=mysql_fetch_array($client2);
/* FIN */
/* Requete pour la sélection des données clients dans la table Client suivant IdCLIENT de la table commande */
$fournisseur=mysql_query('SELECT
nom
FROM fournisseur
WHERE id='.$row['idfournisseur'].'
;')
or die('<span style="color:#F00;">Erreur lors d\'une requette MYSQL !<br />
<img src="imgs/messagebox_critical.png" alt="ERREUR" />
l\'erreur s\'est produite à la ligne : <u>'.__LINE__.'</u>, dans le fichier <u>"'.
__FILE__.'"</u>.</span><br />'.mysql_error());
$infofournisseur=mysql_fetch_array($fournisseur);
/* FIN */
/* Les Données du Tableau */
echo '<tr>';
echo '<td class="leftcol"><div class="intro">'.$row["id"].'</div></td>';
echo '<td class="data"><div class="intro">'.$infofournisseur["nom"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["refproduit"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["taille"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["type"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["couleur"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["idclient"].'-- '.$infoclient["nom"].' --'.$infoclient["prenom"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["datecommande"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["datelivraison"].'</div></td>';
echo '<td class="data"><div class="intro">'.$row["magasin"].'</div></td>';
//LIENS
echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Modifier</a></div></td>';
echo '<td class="data"><div class="intro"><a href="clients.php?action=consulter_rdv_details&id='.$row["id"].'">Consulter</a></div></td>';
echo '</tr>'."\n";
}
}
echo '</table>'."\n";
echo '' . $total .' Commandes sur cette page sur un total de ' .$totalcmde.' Commandes';
// fin du tableau.
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="commandes.php?action=commande_consulter&page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
// on libère le résultat
mysql_free_result($result);
?>
Lorsque je sélectionnée l'énnae et que je clic pour trier j'ai ceci :
Code : Tout sélectionner
Notice: Undefined variable: result in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 243
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 243
Notice: Undefined variable: result in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 316
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\application\require\actions\commande_consulter_1.php on line 316
Si quelqu'un avait une idée pour m'aider ca serai super sympa.
Merci d'avance pour votre aide.
Plex