Affichage bouton dans un tableau !

Affichage bouton dans un tableau ! - PHP - Programmation

Marsh Posté le 05-07-2016 à 14:53:04    

Bonjour,

 

J'ai un problème dont je pense que vous pourrez m'aider. J'ai réussi à afficher ma base de données phpmyadmin sur mon site internet sous forme de tableau. Malgrès tout je souhaiterais ajouter un bouton à chaque ligne du tableau me permettant de récupérer les informations de la ligne sélectionnée.      

 

En vous remerciant beaucoup d'avance !


Message édité par int2 le 05-07-2016 à 23:25:05
Reply

Marsh Posté le 05-07-2016 à 14:53:04   

Reply

Marsh Posté le 06-07-2016 à 13:02:45    

Up ! Courageux je fais appel à toi

Reply

Marsh Posté le 06-07-2016 à 13:28:25    

Ben soit plus précis, c'est quoi récupérer pour toi ?
 
Poste ton code et dit nous ou ca bloque, on pourra un peu plus facilement t'aider...


---------------
D3
Reply

Marsh Posté le 08-07-2016 à 14:41:25    

Désolé je pensais t'avoir répondu.
 
En fait j'ai dans une base de données une liste de mécaniciens (nom, prenom, salaire) dans une base de donnée que j'arrive afficher sous forme de tableau sur mon site web. Mais je souhaiterais que l'utilisateur puisse embaucher le mécanicien qu'il a choisi par le biais d'un bouton "embaucher".  
 
Donc je n'arrive pas dans mon code à ajouter un bouton "embaucher" (comme c'est dans du code php je pense...) . Et je ne vois pas trop non plus comment récupérer la ligne en question sélectionnée par l'utilisateur correspondant au mécanicien qu'il souhaite embaucher :S.
 

Code :
  1. <div class="container">
  2. <div class="align-center">
  3.   <?php
  4.     $mysql = mysqli_connect('localhost', 'user', 'password', 'ma_base');
  5.     if(!$mysql) {
  6.        exit('Impossible de se connecter : ' . mysqli_error());
  7.     }
  8.     $nom_base = 'ma_base';
  9.     $bdd = mysqli_select_db($mysql,$nom_base);
  10.     if (!$bdd) {
  11.         exit('Impossible de sélectionner la base de données : ' . mysqli_error());
  12.     }
  13.     $rTables = mysqli_query($mysql,'SHOW TABLES FROM '.$nom_base);
  14.     while($Table = mysqli_fetch_assoc($rTables))
  15.     {
  16.         $rChamps = mysqli_query($mysql,'SHOW COLUMNS FROM '.$Table['Tables_in_'.$nom_base]);
  17.         $largeur_cellule = floor(100/mysqli_num_rows($rChamps));
  18.         echo '<table><tr><th colspan="'.mysqli_num_rows($rChamps).'">'.$Table['Tables_in_'.$nom_base].'</th></tr><tr>';
  19.         while($Champ = mysqli_fetch_assoc($rChamps))
  20.         {
  21.             echo '<td style="width:'.$largeur_cellule.'%;font-weight:bold;">'.$Champ['Field'].'<br /><em>'.$Champ['Type'].'</em></td>';
  22.  }
  23.         echo '</tr>';
  24.         $rValeurs = mysqli_query($mysql,'SELECT * FROM t_mecanicien');
  25.         while($Valeur = mysqli_fetch_assoc($rValeurs))
  26.         {
  27.             echo '<tr>';
  28.             foreach($Valeur as $Cle => $Val) echo '<td>'.$Val.'</td>';
  29.             echo '</tr>';
  30.         }
  31.         echo '</table>'."\n";
  32.     }
  33.     //mysqli_close();
  34. ?>
  35. </div>
  36. </div>


 
Pleins de remerciements d'avance!

Reply

Marsh Posté le 08-07-2016 à 14:49:42    

Un conseil avant tout: C'est pas (plus) la meilleure solution de générer de l'affichage côté serveur. La construction de ta table devrait se faire côté client. Ca te faciliterai aussi le binding d'une action au bouton.
 
Comment est-ce que tu appelles ce script ? Via une requête ajax ? Dans tous les cas, si tu ajoutes un input button (ou un <button> tout simplement), il faudra y associer une action.
 
Donc dans la boucle qui énumère les mécaniciens, tu ajoutes un tr/td avec un input button. Ensuite, il te faut y associer une action après l’exécution du script (côté client de préférence)
 
C'est pour ca qu'une meilleure solution serait:
 
- requête ajax de ton script php
- script php qui renvoie les informations des mécaniciens (sous forme de JSON p.ex)
- on success de la requête ajax, tu construis le tableau (en javascript, à l'ancienne ou bien en utilisant un template)
- pendant la construction, tu ajoutes le bouton et tu associes une action (une autre requête vers le serveur ?)

Message cité 2 fois
Message édité par Moumoule le 08-07-2016 à 14:50:35
Reply

Marsh Posté le 08-07-2016 à 15:02:47    

D'accord je te remercie beaucoup de ta réponse. Ok c'est pas top de générer mon tableau côté serveur, il faudrait mieux le faire en javascript en ajoutant alors à chaque ligne un bouton.  
 
En fait la construction de mon tableau n'est appelée par rien, elle se fait comme ça automatiquement. Ce serai bien que j'utilise ajax notamment pour le fait que à l'ajout d'un mécaniciens, l'utilisateur pourrait voir sur la même page au dessus de la liste de mécaniciens disposnibles sur le marché du travail, de sa liste de mécaniciens embauchés. Et donc c'est vrai que de l'ajax serait bien pour faire cela automatiquement sans avoir besoin de rafraichir la page, mais ça a vraiment l'air compliqué l'ajax alors peut être que je vais rester à du php normal. :s
 
Mais alors là je ne vois pas comment je peux faire le lien entre mes mécaniciens de ma base de données et mon tableau. Comment je pourrais afficher les attributs de mes mécaniciens dans mon tableau? Je débute vraiment en PHP, tu n'aurais pas par hasard un script simple qui me le montre?
 

Reply

Marsh Posté le 09-07-2016 à 03:54:02    

Up! Pour un très courageux

Reply

Marsh Posté le 11-07-2016 à 09:45:57    

Le mieux c'est que tu te formes un minimum à PHP / MYSQL, avec ce cours par exemple : https://openclassrooms.com/courses/ [...] -donnees-2
 
Et que tu reviennes un peu plus tard, car on ne peut pas taper tout ton code à ta place...


---------------
D3
Reply

Marsh Posté le 11-07-2016 à 23:56:46    

Moumoule a écrit :

Un conseil avant tout: C'est pas (plus) la meilleure solution de générer de l'affichage côté serveur. La construction de ta table devrait se faire côté client. Ca te faciliterai aussi le binding d'une action au bouton.
 
Comment est-ce que tu appelles ce script ? Via une requête ajax ? Dans tous les cas, si tu ajoutes un input button (ou un <button> tout simplement), il faudra y associer une action.
 
Donc dans la boucle qui énumère les mécaniciens, tu ajoutes un tr/td avec un input button. Ensuite, il te faut y associer une action après l’exécution du script (côté client de préférence)
 
C'est pour ca qu'une meilleure solution serait:
 
- requête ajax de ton script php
- script php qui renvoie les informations des mécaniciens (sous forme de JSON p.ex)
- on success de la requête ajax, tu construis le tableau (en javascript, à l'ancienne ou bien en utilisant un template)
- pendant la construction, tu ajoutes le bouton et tu associes une action (une autre requête vers le serveur ?)


Perso, j'ai juste une objection sur cette nouvelle mode web de faire de l'affichage de contenu avec partout du ajax + JS côté client : l'accessibilité de ces sites aux personnes ayant un handicap visuel est très mauvis. En effet, souvent, le lecteur d'écran ne sait pas gérer le rafraichissement dynamique d'une page web. Du coup, pour les personnes utilisant ce type de logiciel (ex : NVDA qui est en GPL), la navigation devient une vraie galère (déjà que c'est pas simple pour elles!) :(
Rien qu'un simple champ avec autocomplétion, ça marche pas. Alors imaginez une pleine page avec un tableau paginé accessible seulement par la méthode "ajax".
 
JS (+ajax) est sensé améliorer l'ergonomie d'une site web mais normalement, le site doit pouvoir fonctionner sans JS, au moins pour les actions de base. Si le site n'est plus fonctionnel sans JS, alors on perd l'accessibilité et le but du JS, je trouver, perso :o
 
Pour info, ça représente 10 à 15% de la population française, cette population... Donc pas négligeable. Pour avoir fait l'expérience, c'est très instructif de fermer les yeux et d'essayer de surfer sur le site qu'on a conçu avec un logiciel comme NVDA. on se rend très vite compte de ce qui manque ou de ce qui n'est pas pratique ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 12-07-2016 à 17:04:59    

Je suis d'accord avec rufo: Le JS c'est pour des fonctionnalités avancées supplémentaires, le site doit pouvoir fonctionner sans. J'ai horreur de ça quand je dois d'abord activer le JS, recharger la page et parfois recommencer pour je ne sais combien de sources externes pour faire fonctionner un site, généralement je pars direct. C'est hélas le cas pour plus en plus de sites. :cry:


Message édité par rat de combat le 12-07-2016 à 17:05:40
Reply

Marsh Posté le 12-07-2016 à 17:04:59   

Reply

Marsh Posté le 12-07-2016 à 20:04:44    

Moumoule a écrit :


Un conseil avant tout: C'est pas (plus) la meilleure solution de générer de l'affichage côté serveur. La construction de ta table devrait se faire côté client. Ca te faciliterai aussi le binding d'une action au bouton.


Mauvais conseil.
On construit le HTML via le serveur et basta, ensuite il peut binder le click aussi facilement que s'il fabriquait le HTML coté client...
 
 

Moumoule a écrit :


 
C'est pour ca qu'une meilleure solution serait:
 
- requête ajax de ton script php
- script php qui renvoie les informations des mécaniciens (sous forme de JSON p.ex)
- on success de la requête ajax, tu construis le tableau (en javascript, à l'ancienne ou bien en utilisant un template)
- pendant la construction, tu ajoutes le bouton et tu associes une action (une autre requête vers le serveur ?)


[/quotemsg]
Ouais mais nan, il contruit son bordel en PHP et ensuite il pourra bien un seul event sur document (via jquery s'il veut) et il pourra targeter n'importe quel bouton, ensuite à lui de faire le code JS qui va bien pour récupérer une info sur un attribut ou autre et faire mumuse...

Reply

Marsh Posté le 13-07-2016 à 12:15:43    

gatsu35 a écrit :


Mauvais conseil.
On construit le HTML via le serveur et basta, ensuite il peut binder le click aussi facilement que s'il fabriquait le HTML coté client...


 
Dépendant du cas de figure, du projet, des données à afficher, de l'envie de séparer au maximum la logique de la présentation, etc ... Avec node.js, typescript, angular js, je pense qu'on est quand même bien servi.
Oui tu peux bind un event sur un élément HTML par après. C'est beau en théorie, en pratique c'est un foutoir complet pour t'y retrouver après. Encore pire en équipe.
 
Après on peut discuter longtemps, la génération d'affichage côté serveur dispose aussi de nombreux avantages (gestion des droits, moins d'appel côté serveur). Maintenant perso, ça ne me m'amuse pas de construire ma page avec des echo "<table>" (même en fermant les balises php à chaque fois), tout comme ça ne m'amusait pas de définir des objets côté serveur et de devoir les redéfinir côté client. Et là, tu découvres typescript.
 
Après javascript activé ou pas, je ne sais pas quoi répondre. C'est très juste, mais je connais personne qui surfe de manière raisonnable sans javascript. Donc oui, mais non :-/

Message cité 1 fois
Message édité par Moumoule le 13-07-2016 à 12:21:00
Reply

Marsh Posté le 13-07-2016 à 12:54:15    

Moumoule a écrit :


 
Dépendant du cas de figure, du projet, des données à afficher, de l'envie de séparer au maximum la logique de la présentation, etc ... Avec node.js, typescript, angular js, je pense qu'on est quand même bien servi.
Oui tu peux bind un event sur un élément HTML par après. C'est beau en théorie, en pratique c'est un foutoir complet pour t'y retrouver après. Encore pire en équipe.
 
Après on peut discuter longtemps, la génération d'affichage côté serveur dispose aussi de nombreux avantages (gestion des droits, moins d'appel côté serveur). Maintenant perso, ça ne me m'amuse pas de construire ma page avec des echo "<table>" (même en fermant les balises php à chaque fois), tout comme ça ne m'amusait pas de définir des objets côté serveur et de devoir les redéfinir côté client. Et là, tu découvres typescript.
 
Après javascript activé ou pas, je ne sais pas quoi répondre. C'est très juste, mais je connais personne qui surfe de manière raisonnable sans javascript. Donc oui, mais non :-/


Bah évidement il fait ça à coup d'écho <table> crades, on peut le faire avec des langages de templates hein :o.
Moi je surf de manière raisonnable sans JS, car j'en ai marre des merdes qui bouffe mon CPU et je l'active quand j'en ai vraiment besoin.

Reply

Marsh Posté le 13-07-2016 à 13:00:16    

Je vous remercie beaucoup tous pour vos aides. J'ai réussi à faire ce que je voulais.
 
Maintenant que j'ai des spécialistes devant moi je profite de ce post pour vous demander si vous ne pourriez pas m'aider une deuxième fois. Je le poste ci dessous mais j'ai créer une autre discussion sur cette demande aussi :s
 
Bonjour,  
 
J'ai un site avec un formulaire qui ajoute un utilisateur dans une base de données. Je voudrais savoir comment pourrais je afficher le pseudo de l'utilisateur connecté sur toutes les pages de mon site.  
 
J'ai trouvé 2 solutions :  
 
1 - Mettre le pseudo dans chaques url du site au moment de l'ajout de l'utilisateur à la base de donnée. Mais là d'une part j'arrive déjà pas à ajouter le pseudo utilisateur à l'url et d'autre part je ne vois pas comment je pourrais depuis l'url récupérer le pseudo qu'elle contient pour l'afficher sur le site. :s  
 
2 - Avec des $SESSION et du coup des echo $SESSION['prenom'] . Mais là encore je n'y parvient pas j'ai que des erreurs.  
 
N'auriez vous pas une méthode ou une autre solution ou quoi pour afficher le pseudo utilisateur sur toutes les pages de mon site web parce que je n'arrive pas à le récupérer. Ou sinon un script simple pour que je comprenne comment ça se passe.  
 
Beaucoup de remerciements d'avance

Reply

Marsh Posté le 13-07-2016 à 14:15:48    

$_SESSION n'est valable que pour la session de l'utilisateur connecté.
 
Je vois pas le rapport entre ajouter un user dans la BD et afficher le pseudo de l'utilisateur connecté ?
 
Tu veux afficher sur toutes les pages et tous les utilisateurs connectés le pseudo du dernier inscrit ? Ou tu veux juste afficher le pseudo de l'utilisateur connecté (mais dans ce cas, quel rapport avec le formulaire de création d'un user) ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed