8791 sujets

Développement web côté serveur, CMS

bjr à tous;
j'ai crée un tableau en php et je voudrais le trier d'une façon dynamique , c'est à dire en cliquant sur la colonne client par exemple il va nous afficher le tableau trié en fonction des nom des clients; et en cliquand sur le num commande , il nous affiche ce tabeau trie par ordre des num des commandes.
mysql_select_db($database_connexion, $connexion);
$query_commandes = sprintf("SELECT * FROM shop_commande ORDER BY id DESC"); 
$commandes = mysql_query($query_commandes, $connexion) or die(mysql_error());
$row_commandes = mysql_fetch_assoc($commandes);
$totalRows_commandes = mysql_num_rows($commandes);


	  <table width="100%" cellpadding="5"  cellspacing="1" bgcolor="#666666">
        <tr bgcolor="#FFFFFF">>Date de Commande </span></th>
          <th scope="col"><span class="Style1 Style1">Facture format PDF</span></th>
        </tr>
          <th scope="col"><span class="Style1 Style1">Num&eacute;ro de commande </span></th>
          <th scope="col"><span class="Style1 Style1">Num&eacute;ro de facture </span></th>
          <th scope="col"><span class="Style1 Style1">Client </span></th>
          <th scope="col"><span class="Style1 Style1">Poids </span></th>
          <th scope="col"><span class="Style1 Style1">Total TTC </span></th>
          <th scope="col"><span class="Style1"


 <?php do { ?>
        
        		<?php
    		$date =$row_commandes['date'];
			$total_ht =$row_commandes['total_ht'];
			$c_total_ttc =$row_commandes['total_ttc'];
			$expedition =$row_commandes['expedition'];
			$client=$row_commandes['client'];
			//$zone = $row_client['zone'];
			
			$date_french= preg_replace("/([0-9].*)-([0-9].*)-([0-9].*)/" ,"\\3-\\2-\\1",$date);
			$date_expedition= preg_replace("/([0-9].*)-([0-9].*)-([0-9].*)/" ,"\\3-\\2-\\1",$expedition);
			$total_ttc_arrondi= number_format($c_total_ttc, 2, ',', ' '); 
			
			$date_explosee = explode("-", $date);
			$annee = $date_explosee[0];
			$mois = $date_explosee[1];
			$jour = $date_explosee[2];
			
			$id =$row_commandes['id'];
			
			$id = 1000+$id;
        		?>
        <tr bgcolor="#FFFFFF">
          <td><a href="../account/detail_commande.php?id=<?php echo $row_commandes['id']; ?>" class="Style1 Style1">n°<?php echo $row_commandes['id']; ?></a></td>
          <td><div align="center"><span class="Style1 Style1">n°<?php echo $annee; ?>/<?php echo $id; ?></span></div></td>
          <td><div align="center"><span class="Style1 Style1"><?php echo $row_commandes['client']; ?></span></div></td>
          <td><div align="right"><span class="Style1 Style1"><?php echo $row_commandes['poids']; ?>gr.</span></div></td>
          <td><div align="right"><span class="Style1 Style1"><?php echo $total_ttc_arrondi; ?>€</span></div></td>
          <td><div align="center"><span class="Style1"><?php echo $date_french; ?></span></div></td>
          <td><div align="center"><span class="Style1"><a href="traitementAdmin_facture.php?id=<?php echo $row_commandes['id']; ?>">Facture</a></span></div></td>
        </tr>
        <?php } while ($row_commandes = mysql_fetch_assoc($commandes)); ?>
      </table>


merci d'avance pour votre aide Smiley smile
Salut,

Alors moi je ferai un truc dans le genre


 <?php do { 

            $date =$row_commandes['date']; 
            $total_ht =$row_commandes['total_ht']; 
            etc...

            $id =$row_commandes['id']; 
             
            $id = 1000+$id; 

            $LignesATrier[] = array($row_commandes['id'], $annee, $row_commandes['client'], $row_commandes['poids'], $total_ttc_arrondi, $date_french);

           } while ($row_commandes = mysql_fetch_assoc($commandes)); ?> 


Ensuite tu tries ton tableau $LignesATrier après ta boucle avec l'une de ces fonctions :
http://www.php.net/manual/fr/array.sorting.php (array_multisort() peut être ?)
bien sûr il sera trié en fonction de ce que l'internaute à cliqué ($_GET ?)

et ensuite tu affiche tes lignes avec un "foreach".

Tu vois l'idée ?
Modifié par Traxyl2en1 (31 May 2011 - 23:30)
Yep, je ne sais pas si tu souhaites pouvoir avoir le tri des pages en "dur" ou non, mais si ce n'est pas le cas il existe des solutions utilisant javascript qui sont très rapides à mettre en place et qui sont assez efficaces !

Un exemple parmi d'autres : http://tablesorter.com/docs/
c'est xactemnt ce que je veux faire;mais je ss nul en ajax, dis moi stp comment je pourrais l'inserer dans mon code et aussi est ce que je dois installer qlq chose pour que ajax marche sur mon ordi. merci d'avance
Pour Ajax (acronyme de Asynchronous Javascript and XML) rien à installer, il suffit que javascript soit autorisé dans le navigateur.

Définition d'Ajax : http://fr.wikipedia.org/wiki/Ajax_%28informatique%29

Sinon le site de tablesorter explique très bien , je pense que c'est plus l'anglais qui t'embête Smiley cligne

Pour résumer il faut :
inclure les scripts javascripts nécessaires : jquery et tablesorter
écrire ta structure tableau en donnant un identifiant et la classe "tablesorter"
et dire à tablesorter de rendre ton tableau triable :
$(document).ready(function() 
    { 
        $("#myTable").tablesorter(); 
    } 
); 
BJR, mais mon tableau est en php; est ce que ça va marcher avec ajax?
de tt façon là je vais l'essayer!!!
BJR, mais mon tableau est en php; est ce que ça va marcher avec ajax?
de tt façon là je vais l'essayer!!!
Un tableau n'est jamais en php !
php = langage coté serveur, exécuté coté serveur pour générer du code (x)html.
html (+css) = langage coté client pour afficher selon une certaine structure les informations.

Ton tableau est donc bien en html, même s'il a été généré par php.

Ensuite, nul besoin d'ajax ici. Ajax combine javascript et php (ou un autre langage coté serveur) pour charger des informations sans recharger toute la page. Ici, tu n'as rien à recharger vu que tout se fait en javascript : le tableau EXISTANT sera automatiquement trié selon la colonne voulue par le script tablesorter.

Concernant l'utilisation du script, tout est expliqué en détail sur la page du script : http://tablesorter.com/docs

- Tu génères un tableau en php (avec un id).
- Tu génères les entêtes du tableau entre les balises thead et th.
- Tu génères le contenu de ton tableau

En fin de document tu ajoutes


<script type="text/javascript" src="/path/to/jquery-latest.js"></script> 
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script> 


(où "/path/to/jquery-latest.js" est le lien par rapport à la localisation de ta page de la librairie jquery et "/path/to/jquery.tablesorter.js" est le lien de la librairie tablesorter; les deux sont à télécharger et placer sur ton site).

Enfin tu termines en ajoutant
$(document).ready(function() 
    { 
        $("#myTable").tablesorter(); 
    } 
); 

(où myTable est l'id de ton tableau).

Et le tour est joué !
je viens d'essayer d'adapter le code que vous m'avez donné à mon tabeau mais il marche tjrs pas et là il m'affiche l'erreur suivant:

Parse error: syntax error, unexpected '(', expecting T_VARIABLE or ' in /var/www/vhosts/monsite.fr/httpdocs/espace_franchise/admin/consulter_commande.php on line 221

svp , quelqu'un peut me dire c'est koi la source de cettte erreur!!
voilà je vous donne le code que j'avais fait :



mysql_select_db($database_connexion, $connexion);
$query_commandes = sprintf("SELECT * FROM shop_commande ORDER BY id DESC"); 
$commandes = mysql_query($query_commandes, $connexion) or die(mysql_error());
$row_commandes = mysql_fetch_assoc($commandes);
$totalRows_commandes = mysql_num_rows($commandes);

// eh head j'ai mis le code suivant:
<script type="text/javascript" src="/path/to/jquery-latest.js"></script> 
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script> 


// et en suite dans le body j'ai mis le code suivant:

 <table id="myTable" class="tablesorter width="100%" cellpadding="5"  cellspacing="1" bgcolor="#666666">
      <thead> 

        <tr bgcolor="#FFFFFF">
          <th scope="col"><span class="Style1 Style1">Num&eacute;ro de commande </span></th> 
          <th scope="col"><span class="Style1 Style1">Num&eacute;ro de facture </span></th>
          <th scope="col"><span class="Style1 Style1">Client </span></th>
          <th scope="col"><span class="Style1 Style1">Poids </span></th>
          <th scope="col"><span class="Style1 Style1">Total TTC </span></th>
          <th scope="col"><span class="Style1">Date de Commande </span></th>
          <th scope="col"><span class="Style1 Style1">Facture format PDF</span></th>
        </tr>
        </thead> 
<tbody>



 <?php do { ?>
        
        		<?php
    		$date =$row_commandes['date'];
			$total_ht =$row_commandes['total_ht'];
			$c_total_ttc =$row_commandes['total_ttc'];
			$expedition =$row_commandes['expedition'];
			$client=$row_commandes['client'];
			//$zone = $row_client['zone'];
			
			$date_french= preg_replace("/([0-9].*)-([0-9].*)-([0-9].*)/" ,"\\3-\\2-\\1",$date);
			$date_expedition= preg_replace("/([0-9].*)-([0-9].*)-([0-9].*)/" ,"\\3-\\2-\\1",$expedition);
			$total_ttc_arrondi= number_format($c_total_ttc, 2, ',', ' '); 
			
			$date_explosee = explode("-", $date);
			$annee = $date_explosee[0];
			$mois = $date_explosee[1];
			$jour = $date_explosee[2];
			
			$id =$row_commandes['id'];
			
			$id = 1000+$id;
        		?>
        <tr bgcolor="#FFFFFF">
          <td><a href="../account/detail_commande.php?id=<?php echo $row_commandes['id']; ?>" class="Style1 Style1">n°<?php echo $row_commandes['id']; ?></a></td>
          <td><div align="center"><span class="Style1 Style1">n°<?php echo $annee; ?>/<?php echo $id; ?></span></div></td>
          <td><div align="center"><span class="Style1 Style1"><?php echo $row_commandes['client']; ?></span></div></td>
          <td><div align="right"><span class="Style1 Style1"><?php echo $row_commandes['poids']; ?>gr.</span></div></td>
          <td><div align="right"><span class="Style1 Style1"><?php echo $total_ttc_arrondi; ?>€</span></div></td>
          <td><div align="center"><span class="Style1"><?php echo $date_french; ?></span></div></td>
          <td><div align="center"><span class="Style1"><a href="traitementAdmin_facture.php?id=<?php echo $row_commandes['id']; ?>">Facture</a></span></div></td>
        </tr>
        <?php } while ($row_commandes = mysql_fetch_assoc($commandes)); ?>
        </tbody> 
      </table>


voilà , je vous remerci d'avance pour votre aide!! Smiley smile Smiley smile
merci bien pixelb pour le explications concernant le php et le html.et aussi pour le lien que tu m'a donné, j'étais sur le lien j'ai lu le script et j'ai essayer de l'adapter à mon code mais ça ne march tjrs pas Smiley decu Smiley decu Smiley decu
Modifié par nounou85 (04 Jun 2011 - 09:44)
Peux tu me dire ce qui se trouve dans consulter_commande.php à la ligne 221 ?
Sinon, est ce que tu fais tes essais en ligne ou en local ? Si c'est en ligne, ca serait bien si tu nous donnais le lien.

Au passage, il ne suffit pas de faire un copier coller de

<script type="text/javascript" src="/path/to/jquery-latest.js"></script>  
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script> 


mais il faut aussi changer les liens vers les fichiers !
hum où as-tu mis les scripts javascripts de jquery et tablesorter dans ton arborescence de site ?

mets bien le chemin en concordance dans les lignes <script>

Par exemple moi je mets mes scripts javascripts dans '/js/libs' pour les scripts externes (jquery par exemple )

du coup je mettrais pour mon site :
<script type="text/javascript" src="/js/libs/jquery-1.6.1.min.js"></script>  
<script type="text/javascript" src="/js/libs/jquery.tablesorter.js"></script>


n'oublie pas de mettre
<script type="text/javascript" >
$(document).ready(function()  
    {  
        $("#myTable").tablesorter();  
    }  
);  
</script>
dans ta page
je ne sais pas qcq tu veut dire de (où as-tu mis les scripts javascripts de jquery et tablesorter dans ton arborescence de site ?) , je ne sais pas de kel script tu parle, parce que moi jai mis tt le code dans ma page (consulter_commande.php) je n'ai pas mis des script ailleur , donc stp est ce qu etu peux m'expliquer qcq je dois faire car en javascript et ajax je ss null !! Smiley decu
Modifié par nounou85 (04 Jun 2011 - 12:11)
Bon alors il faut que tu télécharges le script javascript tablesorter ici : http://autobahn.tablesorter.com/jquery.tablesorter.min.js

tu crée un répertoire 'js' sur ton hébergement à la racine de ton site

tu mets le script 'jquery.tablesorter.min.js' dans le répertoire js à l'aide d'un programme ftp , genre filezilla par exemple ...

Il faut bien comprendre que les scripts javascripts doivent être accessibles par ta page web, soit sur ton propre hébergement ( obligatoire pour tablesorter ) soit sur un autre serveur de type CDN ( trop compliqué à expliquer ici )

Jquery peut soit être accessible sur ton hébergement ( de la même manière que tablesorter) soit par un CDN :
http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js
ou
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js
ou
http://code.jquery.com/jquery-1.6.1.min.js

si tu choisis un CDN, tu n'a rien à télécharger mais tu es tributaire du CDN ( googleapis.com est dès fois surchargé à force ... )
la ligne script pour jquery se transforme du coup en 3 versions possibles :
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>   

ou
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>   

ou
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js
"></script>   


si tu appliques ce que j'ai dis tu auras par exemple :
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js
"></script>  
<script type="text/javascript" src="/js/jquery.tablesorter.js"></script>

( ben oui le chemin de tablesorter est du coup '/js/jquery.tablesorter.js' vu que je ne t'ai pas dit de créer un répertoire 'libs' sous le répertoire '/js' ....

il faut au minimum télécharger tablesorter et le mettre quelque part sur ton hébergement, comme tu as vu je te conseilles de te créer un répertoire 'js' où tu mettras tous les scripts javascripts utiles de ton site ...
L'aborescence du site ou le chemin vers un fichier n'ont pas vraiment de rapport avec php, html, css ou javascript en particulier... C'est la base de la base j'ai envie de dire...

Juste une question, est ce que tu comprends quelque chose au fonctionnement de ton fichier qui te génère ton tableau, aux requêtes sql et php, ou bien est ce que tu as juste fait un copier coller d'une source ou d'un code qu'on t'aurait donné ailleurs ?

Le mieux serait peut être de tout reprendre depuis le début et de lire quelques tutoriels sur ce que ce sont que html et javascript avant de te lancer dans le php et le sql. C'est peut être chiant de devoir apprendre par sois même, mais je peux t'assurer qu'une fois que tu comprends les bases, le reste vient tout seul. Sinon, tu seras toujours dépendant des autres (p. ex. ce forum) lorsque tu voudras faire une petite modification...
Modifié par pixelb (04 Jun 2011 - 14:12)
merci bien pour tes conseils, en fait pour le php , html et css ça va !! d'ailleur le script de tableau , c'est moi qui l'avais fait , ce n'était pas du copier coller. jai le prob avec javascript et en plus j'ai pas le tps de reprendre tt car là je suis en stage et jai une tache à finir dans le plus tot possible!!
Pour Javascript : http://www.siteduzero.com/tutoriel-3-8158-tout-sur-le-javascript.html

Pour l'utilisation de JQuery : http://babylon-design.com/apprendre-et-comprendre-jquery-1-3/

Maintenant il faut différencier 2 niveaux dans l'utilisation de javascript :
- niveau utilisateur de script tout fait
- niveau programmeur de script javascript

commence déjà par le premier mais les bases du tuto du site du zero te permettront de mieux comprendre comment appeler les scripts tout fait.