Как добавить регистр case для добавления перерыва после каждой записи?

После каждой строки 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** 

введите описание изображения здесь

Solutions Collecting From Web of "Как добавить регистр case для добавления перерыва после каждой записи?"

Это должно добавить разрывы строк между (не до первой) каждой уникальной строки и добавить букву 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