я довольно новичок в этом и не знаю, как мне это сделать,
У меня есть база данных с столбцом «имена»,
как я могу отобразить его так?
<tr> <td width="270px">Henry</td> <td width="270px">Jeffrey</td> <td width="270px">Hansel</td> </tr> <tr> <td width="270px">Michelle</td> <td width="270px">Jackson</td> <td width="270px">Ivan</td> </tr>
Я знаю только, как я должен это делать, если записи идут один за другим по вертикали.
$result = mysql_query('SELECT * FROM member'); while($row = mysql_fetch_array($result)) { echo' <tr> <td width="270px">'.$row['names'].'</td> <td width="270px">Jeffrey</td> <td width="270px">Hansel</td> </tr>';
Кинда застрял здесь …
Извините, я забыл поставить это.
то, что я хочу, это то, что он должен контактировать теги. Поэтому у меня может быть таблица с тремя столбцами с бесконечными строками.
какой бой этот? Что делать, если я хочу, чтобы это зациклилось?
<tr> <td><img src="images/ava/A.png" /></td> <td>A</td> <td width="2px" rowspan="3"></td> <td><img src="images/ava/B.png" /></td> <td>B</td> </tr> <tr> <td>A</td> <td>B</td> </tr>
$row
будет обновляться на каждой итерации цикла:
$result = mysql_query('SELECT * FROM member'); echo '<tr>'; for($i = 0; $row = mysql_fetch_array($result); $i = ($i+1)%3){ echo '<td width="270px">'.$row['names'].'</td>'; if($i == 2) echo '</tr><tr>'; } echo '</tr>';
$result = mysql_query('SELECT * FROM member'); echo'<tr>' while($row = mysql_fetch_array($result)) { echo '<td width="270px">'.$row['names'].'</td>'; } echo '</tr>';
$result = mysql_query('SELECT * FROM member'); echo '<tr>; while($row = mysql_fetch_array($result)) { echo '<td width="270px">'.$row['names'].'</td>'; } echo '</tr>';
Допустим, у вас есть массив имен, называемых $names
, тогда вы можете делать то, что хотите, с кодом, который выглядит примерно так:
<tr> <?php foreach($names as $name) { print "<td>$name</td>"; } ?> </tr>
Это поместило бы все имена в одну строку.
Чтобы начать новую строку, скажем, каждые 3 имени, вы можете поместить оператор if в цикл for следующим образом:
// assume we have these variables available. $row_number; $max_cols = 3; // this goes at the top of the foreach if($row_number % $max_cols == 0) { print '</tr><tr>'; }
Вы знаете, что достигните этого, назначив счетчик строк, прежде чем запускать переменную, и несколько флагов, чтобы знать инициализированный цикл или цикл начала / конца.
$i = 1; $initFlag = false; $flag = "closed"; while($row = mysql_fetch_array($result)) { if($i%3 == 0) $initFlag = false; if($flag == "closed" && ($i == 1 || $i % 3 == 1)) { echo "<tr>"; $flag = "started"; $initFlag = true; } echo '<td width="270px">'.$row['names'].'</td>'; if(!initFlag && $flag == "started" && $i % 3 ==0) { echo "</tr>"; $flag = "closed"; } $i++; }
Таким образом, большинство из этих ответов собираются для kludge. Во-первых, если все, что вам нужно, это имя в вашем наборе результатов, то попросите его только. Поэтому вместо того, чтобы идти:
$result = mysql_query('SELECT * FROM member');
Вместо этого используйте:
$result = mysql_query('SELECT names FROM member');
Кроме того, все, кажется, игнорируют три запроса столбца, и это может быть выполнено с помощью модуля, чтобы определить, когда нужно разбить строки. Мы сделаем небольшое волшебство, чтобы вы всегда закрывали тег строки.
$row_count = 0; while($row = mysql_fetch_array($result)) { if( $row_count % 3 == 0 ) { echo '<tr>'; } echo '<td width="270px">'.$row['names'].'</td>'; if( $row_count % 3 == 0 ) { echo '</tr>'; } $row_count++; }
Я не хочу слишком придираться к вашей схеме, но если у вас есть выбор, лучше назвать таблицу множественным, как members
а не членом, так как у вас есть набор строк, каждый из которых представляет один «член». И если у ваших членов несколько names
этот столбец, вероятно, лучше всего будет называться «имя».