Benim php tablo basitleştirilmesi yardıma ihtiyacım var

4 Cevap php

Ben php için oldukça yeni ve mysql verileri görüntülerken ben uzun bir yol yuvarlak gidiyorum bir his var.

Benim veritabanından birkaç alanları göstermek istediğiniz bir tablo var bir.

Nasıl tablo her bit yankı zorunda kalmadan bunu başarmak istiyorsunuz??

İşte kod:

     <?php
$query1 = mysql_send("SELECT firstname, lastname, email, user, country FROM customers WHERE id='".$_COOKIE['custid']."'");

while ($row = mysql_fetch_array($query1))

{

      echo     ' <table id="account_table" style="width:550px; border:none; ">
              <tr>
                <td width="155">Contact Name</td>';
      echo          '<td width="335">';

    echo $row['firstname'] ;
    echo '&nbsp;';
    echo $row['lastname'];

    echo '</td>
              </tr>
              <tr>
                <td>Email Address</td>
          <td>';
   echo $row['email'];

  echo '  </td>
             </tr>
              <tr>
                <td>Username</td>
                <td>' ;

    echo $row['user'];

    echo '</td>
              </tr>
              <tr>
                <td>Country</td>
                <td>';

    echo $row['country'];

    echo '</td>
              </tr>
              <tr>
                <td>Time Zone</td>
                <td>GMT+1</td>
              </tr>
              <tr>
                <td>Activated</td>
                <td>16 Dec 2009</td>
              </tr>
            </table>';

            }
?>

4 Cevap

Önce bir diziye tüm verileri almak ve daha sonra dizi üzerinden yineleme yapabilirsiniz. PHP ile tüm bu HTML yankı gerek yoktur.

De top of your file, yapmanız gereken tüm processing (yani veri alma doğrulama) ve remainder sadece yazmak plain HTML, sadece PHP ile değerlerini baskı.

This already gives you a certain degree of separation. Others mention template engines (Smarty, etc.). I don't think that you really need that, because PHP itself is a template engine.
Just don't get tempted to do sophisticated stuff in your presentation ;)

Ayrıca alternative syntax for control structures o imho daha okunabilir olduğu gibi sunumu ile kombinasyonu kullanmak için çok yararlıdır.


I changed the table structure a bit, because you were not generation valid HTML (you create a lot tables with the same ID in your original code).
This just generates one table, with a row for each customer.

<?php
$customers = array();
$query1 = mysql_send("SELECT firstname, lastname, email, user, country FROM customers WHERE id='".$_COOKIE['custid']."'");

while ($row = mysql_fetch_array($query1)) {
    $cusomters[] = $row;
}
?>

<table id="account_table" style="width:550px; border:none;">
    <tr>
       <th width="155">Contact Name</th>
       <th>Email Address</th>
       <th>Username</th>
       <th>Country</th>
       <th>Time Zone</th>
       <th>Activated</th>
    </tr>
<?php foreach($customers as $customer): ?>
    <tr>           
        <td width="335">
             <?php echo $row['firstname'] ?>
             &nbsp;
             <?php echo $row['lastname'] ?>
        </td>          
        <td><?php echo $row['email'] ?> </td>     
        <td><?php echo $row['user'] ?></td>           
        <td><?php echo $row['country'] ?></td>
        <td>GMT+1</td>
        <td>16 Dec 2009</td>
    </tr>
<?php endforeach; ?>
</table>

I Smarty, size php kod tanıtımı ayırmak için izin verecek gibi bazı çiftleşmiş motoru bakmak öneririm.

Şimdi size her giriş için bir tablo yaratıyor ve benim tahminim ne istediğiniz değil olmasıdır, while döngüsünün dışında <table> etiketini taşımak gerekir ancak temelleri, doğru görünmüyor.

Ayrıca htmlspecialchars($row[...]) gibi bir şey ile tarayıcı çıkışı için çıkış hazırlamak gerekir. Çıkış html etiketleri (javascript, vb) içeriyorsa bu şekilde olası sorunları önlemek.

Önce bazı tavsiyeleri, php kılavuzda açık bir pencere / sekme tutmak. (Yani, mysql_send () fonksiyonu mevcut değil).

Kodunuzu girinti ve okunabilir kodunuzu tutmak için tutarlı bir kongre bulmaya çalışın.

Yanlış sizin while döngü içine tablo biçimlendirme takıyor. Sizin tablo döngü sarılmalıdır.

Veritabanından seçmek için olduğu gibi $ _COOKIE kullanarak really kötü. Filtre ve herhangi bir sorguda kullanmak için önce girdileri.

Veri sunumu ve iş mantığını karışmasını önlemek için, şablon motoruna bir göz atabilirsiniz.

Birini bulmak için 19 Promising PHP Template Engines bakmak, ya da wikipedia list bakabilirsiniz.