После каждой строки LIKE 'A%'
должен быть разбит после каждой записи LIKE 'B%'
.
$stmt = $con->prepare("SELECT * FROM fistevent WHERE Event_Id=? AND TicketType=? AND row_name REGEXP '^[AZ]' ORDER BY row_name ASC"); $stmt->bind_param("ss", $_POST['EventId'],$_POST['TicketType']); $stmt->execute(); $result = $stmt->get_result(); $numRows = $result->num_rows; if($numRows > 0) { echo ' <div class="register">'; while($r = $result->fetch_assoc()) { $EvntId = $r['Event_Id']; $RowName = $r['row_name']; echo '<ul id="sub" class="sub">'; if($r['seats'] == null){ echo '<li class="BlankSeat" ></li>'; }elseif($r['Status'] == 'Y' || $r['Status'] == 'Hold'){ echo '<li class="occupied" title="Row'.$r["seats"].'" name="'.$RowName.'" value="'.$r["seats"].'"></li>'; }else{ echo '<li class="Available" title="Row'.$r["seats"].'" name="'.$RowName.'" value="'.$r["seats"].'"></li>'; } echo "</ul>"; } echo '</div>'; I am getting the following output, but I want after `LIKE 'A%'` the next `LIKE 'B%'` should be in the next row.
Обновленный код здесь
$stmt = $con->prepare("SELECT * FROM fistevent WHERE Event_Id=? AND TicketType=? AND row_name REGEXP '^[AZ]' ORDER BY row_name ASC"); $stmt->bind_param("ss", $_POST['EventId'],$_POST['TicketType']); $stmt->execute(); $result = $stmt->get_result(); $numRows = $result->num_rows; if($numRows > 0) { echo ' <div class="register">'; $prev='A'; while($r = $result->fetch_assoc()) { $EvntId = $r['Event_Id']; $RowName = $r['row_name']; if($prev!=$RowName){ echo "<br>"; $prev=$RowName; } echo '<ul id="sub" >'; if($r['seats'] == null){ echo '<li class="BlankSeat" ></li>'; }elseif($r['Status'] == 'Y' || $r['Status'] == 'Hold'){ echo '<li class="occupied" title="Row'.$r["seats"].'" name="'.$RowName.'" value="'.$r["seats"].'"></li>'; }else{ echo '<li class="Available" title="Row'.$r["seats"].'" name="'.$RowName.'" value="'.$r["seats"].'"></li>'; } echo "</ul>"; } echo '</div>'; }else{ echo "No seats Available"; } **in responsive**
Это должно добавить разрывы строк между (не до первой) каждой уникальной строки и добавить букву row_name
в начало каждой уникальной строки.
$prev=''; while($r=$result->fetch_assoc()) { if($prev!=$r['row_name']){ if($prev!=''){echo "<br>";} // add breaks between rows echo "<ul id=\"sub\" class=\"sub\">{$r['row_name']} "; // label the row $prev=$r['row_name']; // store new row_name letter }else{ echo "<ul id=\"sub\" class=\"sub\">"; // not a new row_name, extend existing row } if($r['seats']==null){ echo "<li class=\"BlankSeat\"></li>"; }elseif($r['Status']=='Y' || $r['Status']=='Hold'){ echo "<li class=\"occupied\" title=\"Row{$r['seats']}\" name=\"{$r['row_name']}\" value=\"{$r["seats"]}\"></li>"; }else{ echo "<li class=\"Available\" title=\"Row{$r['seats']}\" name=\"{$r['row_name']}\" value=\"{$r['seats']}\"></li>"; } echo "</ul>"; }
Чтобы преодолеть стиль li {float:left}
, он сделал эту настройку в css:
ul{display: table-cell; }
Старый ответ начинается здесь:
Я не знаю, как ответ Bijender помог вам, и я не знаю, зачем вам нужен вызов функции. Я также не знаю, что вы подразумеваете под словом "add break after LIKE" A% ".
Поскольку row_name
– однобуквенное значение, и вы хотите только возвращать строки со значениями A, B, C, D, E, F, G, H, I или J, тогда вам понадобится этот более простой / более тонкий запрос:
SELECT * FROM fistevent WHERE Event_Id=? AND TicketType=? AND row_name IN ('A','B','C','D','E','F','G','H','I','J') ORDER BY row_name ASC
Ошибка, которую я обнаружил в вашем сообщении, заключается в том, что столбец таблицы – EventId
или Event_Id
. Вы должны исправить эту опечатку для ясности.
Поскольку вы заказываете по строке_имя, вам нужно только проверить, отличается ли новое значение от предыдущего значения.
//setting firstLetter $firstLetter = '1'; while($r = $result->fetch_assoc()) { $EvntId = $r['Event_Id']; $RowName = $r['row_name']; echo '<ul id="sub" class="sub">'; if($r['seats'] == null) { echo '<li class="BlankSeat" ></li>'; } else if($r['Status'] == 'Y' || $r['Status'] == 'Hold') { echo '<li class="occupied" title="Row'.$r["seats"].'" name="'.$RowName.'" value="'.$r["seats"].'"></li>'; } else { echo '<li class="Available" title="Row'.$r["seats"].'" name="'.$RowName.'" value="'.$r["seats"].'"></li>'; } //comparing current first letter with previous first letter,also skipping the break if it is the first row if($RowName[0] != $firstLetter && $firstLetter !='1' ){ echo "<br />"; } $firstLetter = $RowName[0]; echo "</ul>"; }
Вы можете использовать эту функцию like
в php
function like_match($pattern, $subject) { $pattern = str_replace('%', '.*', preg_quote($pattern, '/')); return (bool) preg_match("/^{$pattern}$/i", $subject); }
пример
like_match('%A','Apple'); //TRUE like_match('%c', 'coop'); //TRUE like_match('%l', 'deke'); //FALSE like_match('%m', 'flip-flop'); //FALSE