Как вывести перебором правильно? php mysql [Облако тегов]

CEPlllAHT

Новичок
Делаю Облако Тегов, всё очень просто но интересно одно ... //

PHP:
<a href ="Index.php?tag=">Index</a><br><a href ="Index.php?tag=1">Guitar</a> <a href ="Index.php?tag=2">Piano</a> <a href ="Index.php?tag=3">Accustik</a> <a href ="Index.php?tag=4">Electro</a> <br>

<?php
$mysqli = new mysqli('localhost', 'root', '', 'Sound');
if (mysqli_connect_errno()) {
  echo mysqli_connect_error();
  exit;
}
//-----------------------------------------------------------------//
$tag = $_GET['tag'];
if ($tag > 0)
{
  if ($result = $mysqli->query("SELECT * FROM tags WHERE id='$tag'"))
      {
      while( $tag_id = $result->fetch_assoc())
          {
          echo (' ID NAME(' . $tag_id['name'] . ') TAG: ' . $tag_id['id']  . '<br>'  );
          $tag_id_data = $tag_id['id'];
          }
      }

}
//-----------------------------------------------------------------//
if ($tag > 0)
{
if ($result = $mysqli->query("SELECT * FROM tags_data WHERE tag_id='$tag_id_data'"))
      {
      while( $tags_data = $result->fetch_assoc())
          {
          echo $tags_data['main_id'] . ' '; //Странно тут выводит 3,4,7,10...
          $main_id =  $tags_data['main_id'] . ' ';
          }
      }
}

echo '<br>';
//-----------------------------------------------------------------//
if ($tag > 0)
{
if ($result = $mysqli->query("SELECT * FROM main WHERE id='$main_id'"))
      {
      while($tag_s = $result->fetch_assoc())
          {
          echo $tag_s['id'] . ' ';
          echo $tag_s['name'] . ' ';
          echo $tag_s['description'] . ' ';
          echo $tag_s['URL'] . ' <br>'; //А тут не выводит 3<br>4<br>7<br>10... Выводит тока последнее найденное "10" ...
          }
      }
}
?>
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
И что тут интересно?

PHP:
$main_id = $tags_data['main_id'] . ' ';
//...
$result = $mysqli->query("SELECT * FROM main WHERE id='$main_id'")
Это вообще нормально, как ты считаешь? Пытаться вытащить из БД данные, подразумевая, что у тебя в id полонке должен быть пробел в конце?
 

CEPlllAHT

Новичок
Точно не заметил. Исправил не помогло.
Щас поковырял:
PHP:
echo $tags_data['main_id'] . ' '; //Странно тут выводит 3,4,7,10...
если сделаю например так:
PHP:
echo text; //Странно тут выводит 3,4,7,10...
то он выведет два раза text;

Вообщем не правильный у меня скрипт написан, помогите пожалуйста, направьте в правильном направлении.
 

Вложения

Вурдалак

Продвинутый новичок
Наверное, это баг в PHP, такое бывает. Попробуй обновиться до 7-й версии.
 

CEPlllAHT

Новичок
Сделал Работает!
Кому будет интересно берите!
PHP:
<?php
$mysqli = new mysqli('localhost', 'root', '', 'sound');
if (mysqli_connect_errno()) {
  echo mysqli_connect_error();
  exit;
}
//-----------------------------------------------------------------//
$tag = $_GET['tag'];
if ($tag > 0)
{
  if ($result = $mysqli->query("SELECT * FROM tags WHERE id='$tag'"))
      {
      while($tag_id = $result->fetch_assoc())
          {
          echo (' ID NAME(' . $tag_id['name'] . ') TAG: ' . $tag_id['id']  . '<br>'  );
          $tag_id_data = $tag_id['id'];
          }
      }

}
//-----------------------------------------------------------------//
if ($tag > 0)
{
if ($result = $mysqli->query("SELECT * FROM tags_data WHERE tag_id='$tag_id_data'"))
      {
      while($tags_data = $result->fetch_assoc())
          {
          echo $tags_data['main_id'] . ' ';
          $main_id = $tags_data['main_id'];
                    if ($result2 = $mysqli->query("SELECT * FROM main WHERE id='$main_id'"))
                              {
                                while($tag_s = $result2->fetch_assoc())
                                  {
                                    echo $tag_s['id'] . ' ';
                                    echo $tag_s['name'] . ' ';
                                    echo $tag_s['description'] . ' ';
                                    echo $tag_s['URL'] . ' <br>';
                                  }
                              }
   

          }
      }
}
else
{
if ($result = $mysqli->query("SELECT * FROM main"))
      {
      while($tag_s = $result->fetch_assoc())
          {
          echo $tag_s['id'] . ' ';
          echo $tag_s['name'] . ' ';
          echo $tag_s['description'] . ' ';
          echo $tag_s['URL'] . ' <br>';
          }
      }

}
//-----------------------------------------------------------------//
?>
 

Вложения

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А лучше - займись отладкой и чтением книг, как и что делать - на форуме обсуждалось. Ищи.

PS: Это точно никому интересно здесь не будет.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Это значит, что у тебя дырка в SQL.
 
Сверху