PHP HTML tablo çok geniş

3 Cevap php

Ben doğru boyutu alamayan bir tablo var. Tablo, bir döngü ile bir veritabanından bilgi ile doldurur. Veriler çok uzun Bazen tablo gerektiği geçmiş uzanır. Veri sürece ben hücrelerinde sarmak için verileri istediğiniz zaman nerede olması gerektiği böylece tablo kalır. Ben normal bir tablo verilerini denedim ama çalışmıyor. Herhangi bir fikir?

<?php
    echo "<table>
        <tr>
            <th>id</th>
            <th>700-number</th>
            <th>First name</th>
            <th>Last name</th>
            <th>Email</th>
            <th>Response</th>
            <th>Created On</th>
        </tr>";

    $num = mysql_num_rows($result);

    for ($i = 0; $i < $num; $i++)
    {
        $row = mysql_fetch_array($result);

        $id = $row['id'];
        $school_id = $row['school_id'];
        $fname = $row['first_name'];
        $lname = $row['last_name'];
        $email = $row['email'];
        $attending = ($row['attending'] == 0) ? 'No' : 'Yes';
        $date = $row['created_on'];

        $class = (($i % 2) == 0) ? "td2" : "td1";

        echo "<tr>";
            echo "<td class=" . $class . ">$id</td>";
            echo "<td class=" . $class . ">$school_id</td>";
            echo "<td class=" . $class . ">$fname</td>";
            echo "<td class=" . $class . ">$lname</td>";
            echo "<td class=" . $class . ">$email</td>";
            echo "<td class=" . $class . ">$attending</td>";
            echo "<td class=" . $class . ">$date</td>";
        echo "</tr>";
    }
?>
</table>

EDIT

Bu tablo, geniş 800px sabitlenmiş bir kap içinde gösterilir, bu tablo için bir yüzde ayar çalışmaz. Ben 600px gibi, belirli bir piksel boyutuna ayarlamak ister. Ben de oldukça CSS düzenleme olmaz, ben attılar kodunu değiştirerek boyutunu düzeltmek istiyorum.

EDIT

Bunun cevabını bilen birisi olmalı. Ben HTML ve CSS ama boşuna, bugüne kadar tüm önerileri denedim. Bunu ben sadece göremiyorum benim koduyla bazı küçük sorun (EKT yani açık bir etiket, bir eksik noktalı virgül, bir çift tırnak olmalı, tek bir alıntı.) Olmak zorunda biliyorum. Ben bu sorunun nedenini izini çalışıyor kundakçı kullanıyorum ve ben bulduk ben CSS sınıfları tüm verileri kaldırdığınızda. Td1 ve. Td2 ben sopa gayet belirttiğiniz genişlik. Genişliği bir CSS sınıf tarafından berbat alacağı bir nedeni var mı?

EDIT

Nihayet bu wordwrap sağ çalışma var ve elle etiketleri boyutlandırma. Burada doğru kod:

<table>
    <tr>
        <th width="16px">ID</th>
        <th width="81px">700<br />Number</th>
        <th width="90px">First<br />Name</th>
        <th width="90px">Last<br />Name</th>
        <th width="181px">E-Mail</th>
        <th width="74px">Attending</th>
        <th width="82px">Created<br />On</th>
    </tr>
<?php
$num = mysql_num_rows($result);

for ($i = 0; $i < $num; $i++)
{
    $row = mysql_fetch_array($result);

    $id = $row['id'];
    $school_id = $row['school_id'];
    $fname = $row['first_name'];
    $lname = $row['last_name'];
    $email = $row['email'];
    $attending = ($row['attending'] == 0) ? 'No' : 'Yes';
    $date = $row['created_on'];

    $wrap_id = wordwrap($id, 4, "\n", TRUE);
    $wrap_school_id = wordwrap($school_id, 9, "\n", TRUE);
    $wrap_fname = wordwrap($fname, 10,"\n", TRUE);
    $wrap_lname = wordwrap($lname, 10, "\n", TRUE);
    $wrap_email = wordwrap($email, 20, "\n", TRUE);
    $wrap_attending = wordwrap($attending, 3, "\n", TRUE);
    $wrap_date = wordwrap($date, 10, "\n", TRUE);

    $class = (($i % 2) == 0) ? "td2" : "td1";

    echo "<tr>";
        echo "<td class=" . $class . ">$wrap_id</td>";
        echo "<td class=" . $class . ">$wrap_school_id</td>";
        echo "<td class=" . $class . ">$wrap_fname</td>";
        echo "<td class=" . $class . ">$wrap_lname</td>";
        echo "<td class=" . $class . ">$wrap_email</td>";
        echo "<td class=" . $class . ">$wrap_attending</td>";
        echo "<td class=" . $class . ">$wrap_date</td>";
    echo "</tr>";
}

?>

</table>

3 Cevap

Tabloya sarılmış verileri almak amacıyla masanın yüksekliği ve genişliğini Fix ...

Also you can use wordwrap function Wraps a string to a given number of characters using a string break character.

sözdizimi: string wordwrap ( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = false ]]] )

str

    The input string.
width

    The column width.
break

    The line is broken using the optional break parameter.
cut

    If the cut is set to TRUE, the string is always wrapped at or before the specified width. So if you have a word that is larger than the given width, it is broken apart. (See second example).


Returns the given string wrapped at the specified column. 

UPDATED REPLY

Ben yukarıda açıklandığı gibi kelime şal kullanmak için Düzenlenen soru başı olarak daha iyi ..

Örneğin:

<?php
$text = "Typoking wants to know about "Php html table is too wide".";
$newtext = wordwrap($text, 20, "<br />\n");

echo $newtext;
?>

The above example will output:

Typoking wants to kn<br />
ow about "Php html t<br />
able is too wide".

PHP.net: Daha fazla bilgi için şu adrese gidin

EDITED

CSS konuda başı olarak, kendi css dosyasını açın, ve yazmak "!important" "<td>" tarafından kullanılan sınıfın yanında. Bu inline stil daha uygulamak için CSS sınıfı tercih edecektir. Ayrıca kelime-wrap başvurduğunuz yol sağlar ...

Stili ayarlamayı deneyin

word-wrap: break-word;

(I assume you have data with no spaces which is causing the table to expand.) You may also have to explicitly set the width of the table.

Bu gibi kullanın, size doğru cevap alırsınız. Onething Eğer genişliğini göre wordwrap karakterinin hiçbir ayarlayabilirsiniz.

<?php
    echo "<table width='800'>
        <tr>
            <th width='50'>id</th>
            <th width='100'>700-number</th>
            <th width='150'>First name</th>
            <th width='150'>Last name</th>
            <th width='100'>Email</th>
            <th width='150'>Response</th>
            <th width='100'>Created On</th>
        </tr>";

    $num = mysql_num_rows($result);

    for ($i = 0; $i < $num; $i++)
    {
        $row = mysql_fetch_array($result);

        $id = $row['id'];
        $school_id = $row['school_id'];
        $fname = $row['first_name'];
        $lname = $row['last_name'];
        $email = $row['email'];
        $attending = ($row['attending'] == 0) ? 'No' : 'Yes';
        $date = $row['created_on'];

        $class = (($i % 2) == 0) ? "td2" : "td1";

        echo "<tr>";
            echo "<td class=" . $class . ">$id</td>";
            echo "<td class=" . $class . ">wordwrap($school_id, 8, '\n', 1); </td>";
            echo "<td class=" . $class . ">wordwrap($fname, 15, '\n', 1);</td>";
            echo "<td class=" . $class . ">wordwrap($lname, 20, '\n', 1);</td>";
            echo "<td class=" . $class . ">wordwrap($email, 20, '\n', 1);</td>";
            echo "<td class=" . $class . ">wordwrap($attending, 30, '\n', 1);</td>";
            echo "<td class=" . $class . ">wordwrap($date, 10, '\n', 1);</td>";
        echo "</tr>";
    }
?>
</table>