Я пытаюсь найти способ разбить строки mySQL на столбцы HTML. Извините, если есть более простой способ спросить об этом, но я не могу обернуть его вокруг.
Я прочитал очень много предложений, хотя ни один из них не соответствует тому, что я ищу. Я понимаю, что очень просто просто поместить оставшуюся информацию и позволить ей складывать сама по себе. Моя проблема заключается в том, что я показываю информацию в форме «карточки» с двумя картами разного размера, и я бы хотел, чтобы все они складывались без пробелов по вертикали.
Для того, чтобы показать это, я дал каждой карте номер от 1-3. Каждая карта с номером 1 должна входить в первую колонку и так далее. пример здесь
Нормальный плавающий левый дает мне что-то вроде этого:
|1|2|3| |4|5|6| |7|8|9|
Это правильный способ отображения информации, но она оставляет пробелы, когда большие карты находятся рядом с маленькими, как в примере.
если я использую цикл foreach в php со столом или divs, я получаю что-то вроде этого:
|1|2|3| ------- |4|5|6| ------- |7|8|9|
К сожалению, это почти тот же результат. Большие карты нажимают на ряд, оставляя большой зазор, где находится меньшая карта.
Я также понимаю, что после первой видимой строки самые последние divs потенциально могут быть отброшены дальше в один столбец, а не в другой. например, если столбец 1 имеет 6 'признанных' или больших карт, для заполнения пробела потребуется 12 карт. Я не беспокоюсь об этом.
Основной, урезанный код, который у меня есть прямо сейчас:
<div class="container"> <?PHP $qry_questions = mysql_query("SELECT STATEMENT**"); $count = 0; while($row = mysql_fetch_array($qry_questions)){ $count++; /*GATHER INFORMATION*/ ?> <div class="HTML-formatting-here-with-php-echos"> </div> <?PHP } ?> </div>
Теперь я просто пытаюсь выяснить, могу ли я сделать заявление в php, которое в основном говорит: «Если $ count == 1, добавьте эту информацию в столбец 1, если $ count == 2, добавьте это в col 2 и т. Д. «.
Есть ли какой-либо тип функции, который я могу сделать, чтобы разделить эту информацию следующим образом и добавить информацию без полного построения целой новой строки?
ps Я пробовал array_chunk () без правильного результата.
EDIT: Вот цикл while
<div id="collective"> <div class="container"> <?PHP //FIND THE QUESTIONS ASKED AND INFORMATION ON THEM $qry_questions = mysql_query("SELECT * FROM mbr_qa_questions ORDER BY q_votes DESC" /* LIMIT 0, 10"*/); //LIMIT 0, 20 - 20 being how many to show at a time $num_rows = mysql_num_rows($qry_questions); $max_col = 3; $count = 0; //START THE LOOPING while($q_row = mysql_fetch_array($qry_questions)){ $q_id = $q_row['q_id']; $q_votes = $q_row['q_votes']; $q_answers = $q_row['q_answers']; $q_title = $q_row['q_title']; $q_description = $q_row['q_description']; $q_tags = $q_row['q_tags']; $q_user_id = $q_row['user_id']; $q_created = $q_row['q_created']; $q_modified = $q_row['q_modified']; $q_featured = $q_row['q_featured']; if($q_featured == 0){ $q_status = "normal"; } else { $q_status = "featured"; } //GET THE USERS USERNAME $qry_username = mysql_query("SELECT user_name FROM mbr_user_name WHERE user_id = '$q_user_id'"); $q_user_name = mysql_result($qry_username, 0); //FIND THE USERS POINTS $qry_points = mysql_query("SELECT point_amount FROM mbr_qa_points WHERE user_id = '$q_user_id'"); $q_user_points = mysql_result($qry_points, 0); //FIND OUT IF YOU FLAGGED IT $qry_flagged = mysql_query("SELECT * FROM mbr_qa_flagged WHERE q_id = '$q_id' AND user_id = '$user_id'"); $flagged = mysql_num_rows($qry_flagged); if($flagged >= 1){ $flaggedDiv = "<div class='q_flagged'> </div>"; } else { $flaggedDiv = "<div class='flagInnapropriate'> </div>"; } //FIND HOW MANY ANSWERS $qry_answers = mysql_query("SELECT * FROM mbr_answers WHERE q_id = '$q_id'"); $q_answers = mysql_num_rows($qry_answers); //FIND HOW MANY VOTES $qry_votes = mysql_query("SELECT * FROM mbr_votes WHERE q_id = '$q_id'"); $q_votes = mysql_num_rows($qry_votes); //GIVE EACH ENTRY A COLUMN NUMBER $count++; if($count >= 4){ $count = 1; } <div class="card <?= $q_status ?>"> <div class="top"> <div class="tag"> <div class="title">Votes</div> <div class="votes"> <div class="number"> <?= $q_votes ?> </div> </div> <div class="plus">+</div> </div> <div class="question"> <p><?= $count/* . $q_title*/ ?></p> </div> </div> <div class="middle"> <div class="elapsed"> <?PHP $time_since = $q_created; $time_now = time(); $timeElapsed = $time_now - $time_since; ?> Asked <?= elapsedTime($time_since) ?> ago by </div> <a class="profile" href="./profile.php?profile_name=<?= $q_user_name ?>"> <div class="avatar"> <img src="pieces/avatars/avatar.php?profile_id=<?= $q_user_id ?>&size=xsmall" /> </div> <div class="userName"> <?= $q_user_name ?> </div> <div class="points"> <?= $q_user_points ?>pts </div> </a> </div> <div class="bottom"> <div class="answer"> <div class="title"> Answers </div> <div class="numAnswers"> <?= $q_answers ?> </div> <div class="answersText"> Answers </div> </div> <div class="bestAnswer"> <div class="title"> Best Answer </div> <div class="description"> <p>Need to get highest rated answer here</p> </div> </div> </div> </div> } ?> </div> </div>
Включенный newAnswerLayout.php – это просто html-форматирование каждой карты.
ДРУГОЕ ИЗМЕНЕНИЕ:
Я считаю, что мне просто нужно сделать три запроса mySQL, которые выбирают каждую n-ю строку. Да, идентификаторы в строках уникальны, но есть вероятность, что некоторые строки будут перемещены в другую таблицу, что оставит пробелы.
Теперь я думаю о том, чтобы запросить таблицу, вытащить каждую третью строку, поместить ее в столбец 1 и т. Д., Начиная с первой записи.
EDIT 3: То, что я ищу, – это сделать SQL-запрос, который захватывает всю информацию в каждой третьей строке, начиная с строки 1, тогда мне нужно сделать другой запрос каждой третьей строки, начиная с строки 2, затем тот же для строки 3.