Member 13637584 Ответов: 1

Как я могу отобразить таблицу в зависимости от пола?


Привет смотрите ниже код - я пытаюсь отобразить в таблице имена как девочек, так и мальчиков
в данный момент он просто показывает детские имена на левой стороне, а пол-на правой, которая либо G, либо B
Я хочу, чтобы они отображали имена = B слева и имена = G справа

Может кто-нибудь помочь?

Что я уже пробовал:

if (isset($_GET["initial"])) {
     $initial=$_GET["initial"];
     $dbQuery=$conn->prepare("select * from babynames where babyNames like :initial");
     $initial=$initial.'%';
     $dbParams=array('initial'=>$initial);
     $dbQuery->execute($dbParams);
      echo "<center><table border='1' width='400'>
         <br><tr>
         <th>Boy Names</th>
         <th>Girls Names</th>
         </tr></br>";
         $count = 0;
     while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)) {
       echo "<tr>";
       echo "<td><a href='' id=".$dbRow["babyNames"]." class='favourites' value=".$dbRow["gender"].">♥ </a>";
       //echo "<a href='' id=".$dbRow["GirlNames"]." class='favourites' value=".$dbRow["GirlNames"].">♥ </a>";
       echo $dbRow["babyNames"]."<td>".$dbRow["gender"];
    }
  }

1 Ответов

Рейтинг:
1

luplup

Вы можете попробовать что-то вроде этого, но лучше всего, может быть, сделать два "застрявших" стола, потому что там, возможно, не одинаковое количество мальчиков и девочек.
Ваши <a> не являются допустимым html-кодом.

if(isset($_GET["initial"])) {
  $initial=$_GET["initial"];
  $dbQuery=$conn->prepare("select * from babynames where babyNames like :initial");
  $initial=$initial.'%';
  $dbParams=array('initial'=>$initial);
  $dbQuery->execute($dbParams);

  $arr = array();
  $count = 0;
  while($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)) {
    if($dbRow['gender'] === 'B') { $arr['BoysName'][] = $dbRow['babyNames']; }
    elseif($dbRow['gender'] === 'G') { $arr['GirlsName'][] = $dbRow['babyNames']; }
    $count++;
  }

  echo '<style type="text/css">
.tableBG {
  border:0;
  width:400px;
}
.tableBG th, .tableBG td {
  border:1px solid gray;
}
.tableBG td.noBorder {
  border:0;
}
</style>

<center>
<table class="tableBG">
<tr>
<th>Boy Names</th>
<th>Girls Names</th>
</tr>';

  $i = 0;
  while($i < $count) {
    echo '<tr>';
    if(isset($arr['BoysName'][$i])) { echo '<td>'.$arr['BoysName'][$i].'</td>'; }
    else{ echo '<td class="noBorder">&nbsp;</td>'; }
    if(isset($arr['GirlsName'][$i])) { echo '<td>'.$arr['GirlsName'][$i].'</td>'; }
    else{ echo '<td class="noBorder">&nbsp;</td>'; }
    echo '</tr>';
    $i++;
  }

  echo '</table></center>';
}


Редактировать:
Проблема с 2 "застрявшими" таблицами-это ваш "центр", который может сделать какую-то проблему правильной...
Поэтому вместо этого попробуйте что-то вроде этого, и вы можете поместить "стиль"в свой основной css-файл.


Member 13637584

Здорово, что это произошло, но, как вы сказали о подсчете, в таблице, похоже, есть несколько добавленных пустых строк. Как я могу получить это, просто показав имена?

luplup

Я обновил решение.
Если есть целые пустые строки, переместите $count++; внутри if и внутри else, просто строкой раньше.