Bonsoir,
je cherche une bonne conception pour répondre au besoin, sans générer une usine à gaz (car ça, c'est là où j'arriverai sans vos conseils).
Le but est d'afficher les données relatives à une liste de tickets. Ces données sont stockées dans une bdd MySQL. Donc afficher le contenu de la table qui contient les données, c'est simple :
Mais le souci est que par souci d'optimisation de la mémoire de la bdd, pour certaines données (priority et status), on a pas stocké les noms mais des clés (donc des chiffres à la place des noms). Donc pour ces données, si on affiche le contenu de la table, on affichera la clé à la place du nom.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php echo "<table><tr>"; foreach(($this['columnName']) as $colName) // $this['columnName']=list of the column's names { echo "<th>".$colName['COLUMN_NAME']."</th>"; } echo "</tr>"; foreach($this['ret'] as $line) // $this['ret'] is the result (FetchAll) of $sql="SELECT * from `tickets`"; { echo "<tr>"; foreach ($line as $cellLine) { echo "<td>" . $cellLine . "</td>"; } echo "</tr>"; } echo "</table>"; ?>
pour info :
tickets.sql :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 DROP TABLE IF EXISTS `tickets`; CREATE TABLE IF NOT EXISTS `tickets` ( `id` smallint(11) NOT NULL AUTO_INCREMENT, `id_SESA` int(6) DEFAULT NULL, `product_name` varchar(25) COLLATE utf8_bin DEFAULT NULL, `assigned_group` varchar(30) COLLATE utf8_bin DEFAULT NULL, `submitted_date` datetime NOT NULL, `last_resolved_date` datetime NOT NULL, `summary` varchar(200) COLLATE utf8_bin NOT NULL, `priority_key` smallint(2) NOT NULL, `status_key` smallint(3) NOT NULL, `region` varchar(10) COLLATE utf8_bin DEFAULT NULL, `country` varchar(10) COLLATE utf8_bin DEFAULT NULL, `submitter_SESA` int(6) NOT NULL, `customer_SESA` int(6) NOT NULL, `organization` varchar(30) COLLATE utf8_bin DEFAULT NULL, `incident_type` varchar(20) COLLATE utf8_bin DEFAULT NULL, `reported_source` varchar(20) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), KEY `Prioritytype` (`priority_key`), KEY `Statustype` (`status_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
priority.sql :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DROP TABLE IF EXISTS `priority`; CREATE TABLE IF NOT EXISTS `priority` ( `id` smallint(2) NOT NULL AUTO_INCREMENT, `name` varchar(6) COLLATE utf8_bin NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
status.sql :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DROP TABLE IF EXISTS `status`; CREATE TABLE IF NOT EXISTS `status` ( `id` smallint(3) NOT NULL AUTO_INCREMENT, `name` varchar(13) COLLATE utf8_bin NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Le but est évident : pour chaque ticket, afficher la liste des valeurs, mais en mettant les noms à la place des clés.
A mon avis, il faut la bonne requête SQL qui donnera ça. Mais incapable de la trouver. Pouvez-vous m'aider ?









Répondre avec citation


Partager