J'ai une table que je n'arrive pas à dimensionner correctement. Le tableau contient des informations provenant d'une base de données via une boucle. Parfois, si les données sont trop longues, la table s'étend au-delà de ce qu'elle devrait être. Lorsque les données sont aussi longues, je veux que les données s'enroulent dans les cellules afin que la table reste là où elle le devrait. J'ai essayé les données de table normales mais cela ne fonctionne pas. Des idées?PHP La table HTML est trop large
<?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
Ce tableau est affiché dans un récipient qui est fixé à 800px de large, donc définir un pourcentage de la table ne fonctionnera pas. Je veux le définir à une taille de pixel spécifique, comme 600px. Je préférerais également ne pas modifier le CSS, je veux fixer la taille en modifiant le code que j'ai posté.
EDIT
Il doit y avoir quelqu'un qui connaît la réponse à cette question. J'ai essayé toutes les suggestions jusqu'ici, en HTML et CSS mais en vain. Je sais qu'il doit y avoir un petit problème avec mon code que je ne vois pas (c'est-à-dire une balise ouverte, un point-virgule manquant, une citation unique où il devrait s'agir d'une double citation, etc.). J'ai utilisé firebug en essayant de trouver la cause de ce problème et j'ai trouvé que lorsque je supprime toutes les données des classes CSS .td1 et .td2 que la largeur que j'ai spécifié colle bien. Y a-t-il une raison pour que la largeur soit gâchée par une classe CSS?
EDIT
a finalement obtenu ce travail avec droit wordwrap et le dimensionnement des étiquettes manuellement. Voici le code correct:
<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>
Juste un sidenote, pas une réponse: pourquoi n'utilisez-vous pas 'while (false! == ($ row = mysql_fetch_array ($ result)))'? Mieux que cette supercherie. – Maerlyn
Coller votre façon d'utiliser la fonction worwrap leme voir y il ne fonctionne pas pour vous .... –
Découvrez par la dernière réponse éditée .... –