2010-06-23 2 views
0

Bonjour, Je suis à la recherche de suggestions sur la meilleure façon de gérer la soumission d'une table de base de données.Suggestion de création d'une table de données en PHP

Jusqu'à présent, j'ai généré les données de lignes répétitives comme ceci:

<table border=1> 
    <tr> 
    <th>Phone Number</th> 
    <th>Prefix CallerID with</th> 
    <th>Seconds to ring before<br/>reaching voicemail</th> 
    <th>Voice mailbox<br/>extension number</th> 
    <th>Notes</th> 

    </tr> 
    <?php 
     $id = 1; 
     foreach ($line_detail as $line){ 
      echo '<tr>'; 
      echo '<td>'.form::input($id.'_did', $line->did).'</td>'; 
      echo '<td>'.form::input($id.'_cid_prefix', $line->cid_prefix).'</td>'; 
      echo '<td>'.form::input(array($id.'_dial_timeput', 'size'=>15, 'maxlength'=>3), $line->dial_timeout).'</td>'; 
      echo '<td>'.form::dropdown($id.'_extension', $phones, $line->voicemail).'</td>'; 
      echo '<td>'.form::input($id.'_notes', $line->notes).'</td>'; 
      echo "</tr>"; 
      $id++; 
     } 
    ?> 
</table> 

Et quand je soumets cela, j'avoir des données répétitives comme ceci:

(array) Array 
(
    [1_did] => 64123456789 
    [1_cid_prefix] => DDI- 
    [1_extension] => 800 
    [1_notes] => 
    [2_did] => 645678903 
    [2_cid_prefix] => TEST- 
    [2_extension] => 820 
    [2_notes] => 
    [submit] => Save 
) 

Ok, maintenant je peux groupez-les par identifiant et soumettez une mise à jour à la base de données. Mais, je me demande s'il y a une meilleure façon de le faire.

Répondre

3

La notation de tableau de PHP pour les noms d'entrée est la voie à suivre.

<input name="data[<?php echo $id;?>]['did'] /> 
<input name="data[<?php echo $id;?>]['cid_prefix'] /> 
<input name="data[<?php echo $id;?>]['extension']"/> 
... 

Vous finirez, une fois les données publiées, par un joli tableau associatif bidimensionnel.

+0

Merci, c'est exactement ce que je nécessaire. Il est beaucoup plus simple de travailler avec. – Matt

0

vous pouvez construire forme comme ceci:

foreach ($line_detail as $line){ 
     echo '<tr>'; 
     echo '<td>'.form::input('did['.$id.']', $line->did).'</td>'; 
     echo '<td>'.form::input('cid_prefix['.$id.']', $line->cid_prefix).'</td>'; 
     echo '<td>'.form::input(array('dial_timeput['.$id.']', 'size'=>15, 'maxlength'=>3), $line->dial_timeout).'</td>'; 
     echo '<td>'.form::dropdown('extension['.$id.']', $phones, $line->voicemail).'</td>'; 
     echo '<td>'.form::input('notes['.$id.']', $line->notes).'</td>'; 
     echo "</tr>"; 
     $id++; 
    } 

il vous donnera le tableau suivant:

(array) Array 
(
    [did] => array(
     [1] => 64123456789, 
     [2] => 645678903, 
    ) 
    [cid_prefix] => array(
     [1] => 'DDI-', 
     [2] => 'TEST-', 
    ) 
    [extension] => array(
     [1] => 800, 
     [2] => 820, 
    ) 
    [notes] => array(
     [1] => '', 
     [2] => '', 
    ) 
    [submit] => Save 
) 

il pourrait être un peu plus convinient

+0

Merci, c'est très proche de ce que je voulais. Cependant, le résultat de la réponse de timdev est un peu plus facile à travailler. – Matt

Questions connexes