У меня есть id, хранящиеся в виде значений, разделенных запятыми, в моей таблице базы данных, и я хочу показать список каждого соответствующего имени id в таблице html. До сих пор мне не удалось найти какое-либо решение для этого, потому что в настоящее время в таблице отображается values только для первого идентификатора, указанного в списке, разделенном запятыми. Могу ли я получить представление о том, как отображать значение каждого идентификатора как разделенное запятыми в таблице html.
<table id = "example" class = "table table-striped table-hover table-bordered dt-responsive nowrap" cellspacing = "0" width = "100%">
<thead>
<tr>
<th>S No.</th>
<th>Level :<br>(Attempt)</th>
<th>Candidate's<br>Designation->id</th>
<th>Reporting<br>Head->id</th>
<th>mail To :</th>
<th>mail CC :</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
$sqlQuerybatch = "SELECT * from tbl WHERE status = 1 ";
$sq1 = $db->query($sqlQuerybatch);
$i = 1 ;
if ($db->affected_rows > 0)
{
while($row=mysql_fetch_array($sq1))
{
extract($row);
$des_cc=explode(',', $designation_cc_email);
foreach($des_cc as $out) {
$out = $rep;
}
$sql_designation = "SELECT designation from tbl_designation WHERE id = $designation_id ";
$sqdes = $db->query($sql_designation);
if ($db->affected_rows > 0)
{
while($rowdes=mysql_fetch_array($sqdes))
{
$desid = $rowdes['designation'];
}
$sql_designation1 = "SELECT designation from tbl_designation WHERE id = $designation_email ";
$sqdes1 = $db->query($sql_designation1);
if ($db->affected_rows > 0)
{
while($rowdes1=mysql_fetch_array($sqdes1))
{
$desid1 = $rowdes1['designation'];
}
$sql_reporting = "SELECT designation_id,reporting_head from tbl_reporting_head WHERE reporting_head_for = $designation_id and status=1";
$sqdes2 = $db->query($sql_reporting);
if ($db->affected_rows > 0)
{
while($rowdes2=mysql_fetch_array($sqdes2))
{
$desid2 = $rowdes2['reporting_head'];
$reportingheadid = $rowdes2['designation_id'];
}
$sql_reporting1 = "SELECT designation from tbl_designation WHERE id in($rep) ";
$sqdes3 = $db->query($sql_reporting1);
if ($db->affected_rows > 0)
{
while($rowdes3=mysql_fetch_array($sqdes3))
{
$desid3 = $rowdes3['designation'];
}
?>
<tr>
<td><?php echo $i ; ?></td>
<td><?php echo $attemp ; ?></td>
<td><?php echo $desid." -> ".$designation_id ; ?></td>
<td><?php echo $desid2." -> ".$reportingheadid ; ?></td>
<td><?php echo $desid1 ; ?></td>
<td><?php echo $status ; ?></td>
</tr>
<?php $i++;}} }}}}?>
</tbody>
</table>
$desid3 - это то место, где я хочу показать такие значения, как A,B и так далее.
Я получаю здесь только A в каждой строке таблицы html. Извините за испорченный код, но уже много чего пробовал, но не получил точного результата.






Все ваши петли неправильные, например
foreach($des_cc as $out) {
$out = $rep;
}
Проблема здесь в том, что вы перезаписываете переменную на каждой итерации без использования is. Это означает, что в переменной остается только последнее значение. Также в этом случае ваше задание тоже выполняется в обратном порядке. У вас должно быть:
foreach($des_cc as $out) {
$rep = $out;
}
Если только вы не пытаетесь сделать что-то совершенно другое, но, несмотря на это, это неправильно. Например, вы могли пытаться обновить значение, но даже это было сделано неправильно.
В любом случае.
Что вам нужно сделать, так это внутри цикла, вам нужно поместить HTML, который вы выводите, чтобы вы могли выводить значение на каждой итерации цикла.
Итак, для примера, допустим, $des_cc - это такой массив:
$des_cc = [1,2,3,4,5,6];
Теперь возьми свою петлю
foreach($des_cc as $out) {
$rep = $out;
}
echo $rep;
Это выведет
6
Это последнее значение, присвоенное $rep. Теперь мы вывели эту переменную внутри цикла следующим образом:
foreach($des_cc as $out) {
$rep = $out;
echo $rep;
}
Он выведет это (при условии, что мы добавили возврат строки):
1
2
3
4
5
6
То же самое верно, если вы поместите эту переменную в свой HTML. Надеюсь, это имеет смысл.
Еще несколько примеров этой ошибки в вашем коде:
while($rowdes=mysql_fetch_array($sqdes)){
$desid = $rowdes['designation'];
}
А ТАКЖЕ
while($rowdes2=mysql_fetch_array($sqdes2))
{
$desid2 = $rowdes2['reporting_head'];
$reportingheadid = $rowdes2['designation_id'];
}
Еще вы можете сохранить эти данные в другом массиве, например
$rep = []
foreach($des_cc as $out) {
$rep[] = $out;
}
Этот пример в основном копирует массив в $rep по одному элементу за раз. Я не думаю, что это то, что вам нужно, я упоминаю это только для полноты.
Спасибо за совет. Я очень ценю вашу проницательность. Я все еще новичок и начну изучать эти моменты и многое другое, чтобы узнать. Но могу ли я узнать, как заставить этот фрагмент кода работать. Я имею в виду, можете ли вы прислать мне отредактированный код, который я опубликовал.
Нет, в этом много плохого. Есть много запросов, много фрагментов. Так что не совсем понятно, каков будет конечный результат, и, вероятно, мне придется настроить базу данных и т. д. В противном случае я летаю вслепую. Это просто слишком много времени. Извините, но мне, вероятно, придется все это переписать. И таким образом вы бы ничему не научились.
:) Хорошо, спасибо за уделенное время.
Конечно, как я уже сказал, если бы я его переписал, вы бы ничего из этого не извлекли и рано или поздно снова оказались бы в той же ситуации. И это до того, как я рассмотрю время установки, которое потребовалось бы для репликации вашей базы данных и т. д. Удачи. Лучший совет, который я могу сказать, - создавать его медленно, по частям. Например, разметьте таблицу с некоторыми жестко закодированными данными только в HTML, затем добавьте в нее PHP и увеличьте сложность. Это упростит обработку каждого предмета.
Также будьте ленивы, если вы обнаружите, что выполняете несколько запросов к одной и той же таблице, посмотрите, сможете ли вы их объединить. Иногда более сложный запрос может сэкономить массу кода при его рендеринге.
Еще я вижу много путаницы с переменными (так я это называю). Примером является этот SELECT designation from tbl_designation, затем вы назначаете его $desid = $rowdes['designation'];. Но чуть позже у вас есть SELECT designation_id,reporting_head from tbl_reporting_head, и вы назначаете его $desid2 = $rowdes2['reporting_head'] и $reportingheadid = $rowdes2['designation_id'];. Итак, у вас есть $desid, $desid1 из одной таблицы и $desid2 из другой с неправильным полем?
Обычно это может сбивать с толку, когда переменная называется $desid{n} и поступает из разных источников. Не бойтесь подробно описывать имена переменных (используйте более информативные имена). Также старайтесь избегать использования переменных экземпляра, когда вы используете их только один раз и сразу после объявления. Примером этого является $sqlQuerybatch = "SELECT * ...";, затем вы используете его 1 раз, $db->query($sqlQuerybatch);, вместо этого вы можете просто использовать $db->query("SELECT * ..."); и избегать назначения такого количества переменных.
Еще раз спасибо за информативность и за то, что уделили мне драгоценное время. Я весьма признателен. Я просто хотел бы попросить у вас одно уточнение. У меня есть 3,5, хранящийся в базе данных, я просто хочу разделить эти два, найти их соответствующие имена из другой таблицы, а затем показать имена во втором последнем столбце в таблице html как имена, разделенные запятыми. Как это возможно? Просто некоторое представление об этом.
@ArtisticPhoenix здесь смешивают разные API-интерфейсы mysql. Обратите внимание на $db->query? Это предполагает mysqli_, поскольку mysql_ не предлагает объектно-ориентированный метод. Если только они не используют специальный метод, но я в этом сомневаюсь. Я только видел этот ответ от них, которые репостили в основном тот же вопрос сегодня. $db->affected_rows также предлагает mysqli_, поскольку идентификатор ссылки здесь первый, а метод ссылки mysql_ идет вторым. Обновлено: мы даже не знаем, подключены ли они, и если да; как? хех
@FunkFortyNiner - хороший улов, спасибо, что указали на это! Лично мне не нравится mysqli, он сбивает с толку больше, чем PDO. Мне это всегда казалось полмерой ..
Вы перезаписываете переменные, которые используете во многих ваших циклах. В основном вам останется последнее значение в массиве. Вот почему вы получаете только одно значение из своих переменных, которые назначаются в циклах.