Question

Salutations,

J'ai des données stockées sur mysql avec le délimiteur ", " dans 1 table. J'ai des lignes et des colonnes stockées dans la base de données aussi. Maintenant, je dois sortir les données en utilisant les lignes et le numéro de colonne stockés dans la base de données pour dessiner la table.

Les lignes et le numéro de colonne sont des entrées de l'utilisateur. Le nombre de lignes peut donc varier.

Disons qu'il y a le numéro 3 sur la colonne et 3 sur les lignes.

Je dois le faire comme par exemple,

|___d1__|___d2__|___d3__|
|___d4__|___d5__|___d6__|
|___d7__|___d8__|___d9__|

Où d1-d9 serait les données stockées dans la base de données mysql avec un délimiteur ", " dans une table.

Merci de m'aider.

Était-ce utile?

La solution

Vous pouvez transformer les valeurs séparées par des virgules de votre colonne de données en un tableau à l'aide de la fonction explode ():

<?php
  $result = mysql_query('SELECT rows, columns, data from table_name where id=1');
  $record = mysql_fetch_assoc($result);

  $rows = $record['rows'];
  $columns = $record['columns'];

  $data = explode(',' , $record['data']);

  if (sizeof($data) != $rows * $columns) die('invalid data');
?>

Pour afficher la table, vous avez besoin de deux boucles for imbriquées:

<table>
<?php for ($row = 0; $row < $rows; $row++) : ?>
    <tr>
    <?php for ($column = 0; $column < $columns; $column++) : ?>
        <td>
            <?php echo $data[$row * $columns + $column]; ?>
        </td>
    <?php endfor ?>
    </tr>
<?php endfor ?>
</table>

Autres conseils

Cela ne vous aidera pas à résoudre ce problème, mais un conseil judicieux: n’écrivez JAMAIS des valeurs séparées par des virgules dans un champ de base de données. Vous ne pouvez pas interroger les informations stockées de cette manière, et le code de votre application sera encombré de conversions laides. Utilisez plutôt une table séparée avec une référence à la table principale et une ligne par valeur.

En supposant que l'utilisateur définisse la taille de la table pour 2 lignes et 3 colonnes et effectue certaines entrées pour 6 cellules, les données qui iront à la base de données seront

  

2,3, d1, d2, d3, d4, d5, d6

lorsque vous récupérerez des données d'une cellule et que vous ferez exploser sur une chaîne extraite, vous obtiendrez un tableau de dimensions avec 8 éléments

$ r = $ e [0] rangées

$ c = $ e [1] cols

$ e [2-7] données

  • writite ouverture < table > tag
  • deux boucles, l'une dans l'autre,
  • le premier générera du code pour le début de la ligne
  • writite ouverture < tr > tag
  • dans l'un générera du code pour row.
  • écrit l'ouverture < td > tag
  • écrire les données $ e [1 + position calculée à partir des boucles intérieure et extérieure]
  • écrire la fermeture < td > tag
  • fin de la boucle intérieure
  • wrtite fermeture < tr > tag
  • fin de la boucle extérieure
  • wrtite fermeture < table > tag

Cela devrait vous donner une idée

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top