показать конкретные img на основе результатов MYSQL из 2 таблиц.SELECT, PHP - PullRequest
1 голос
/ 07 мая 2011

Я пытаюсь создать систему оценки пользователей на основе содержимого, хранящегося в 2 таблицах MYSQL.

Одна таблица называется «маркерами изображений», а другая - «маркерами».

Я хочу проверить строку «authorid», которая одинакова в обеих таблицах, где хранится число, основанное на «authorid» пользователя.

Я хочу показать конкретное изображение в зависимости от того, сколько раз определенный идентификатор пользователя находился в "authorid" из обеих таблиц "маркеры" и "маркеры изображений".

это объявляется в верхней части страницы:

  $theID = $_GET['id'];

Код, который у меня есть на данный момент:

   <? $img0 = "<img src='../webimages/0star.png'>"; 
  $img1 = "<img src='../webimages/1star.png'>"; 
  $img2 = "<img src='../webimages/2star.png'>";
  $img3 = "<img src='../webimages/3star.png'>";
  $img4 = "<img src='../webimages/4star.png'>";
  $img5 = "<img src='../webimages/5star.png'>"; ?>

  <? $result3 = mysql_query("SELECT * FROM `markers`, `imagemarkers` WHERE authorid = $theID");
$rows = mysql_num_rows($result3);  ?>

 <?php 
while($row = mysql_fetch_array($result3)){

 if ($result3 > 1) {
     echo "$img1";
 } elseif ($result3 == 5) {
     echo "$img2";
 } elseif ($result3 == 10) {
     echo "$img3";
 } elseif ($result3 == 20) {
     echo "$img4";
 } elseif ($result3 == 30) {
     echo "$img5";
 } else {
     echo "$img0";
 }
 ?>

 <? } ?>

Моя строка таблицы mysql "authorid" имеет видхранится как INT, 11, и разрешить галочку

Ошибка, которую я получаю:

   Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource....

Пожалуйста, помогите мне решить эту проблему.Большое спасибо за ваше время.

Обновление. Это новый код, который у меня есть, и он по-прежнему отображает '$ img0', когда должен отображаться '$ img3':

 <? $img0 = "<img src='../webimages/0star.png'>"; 
$img1 = "<img src='../webimages/1star.png'>"; 
$img2 = "<img src='../webimages/2star.png'>";
$img3 = "<img src='../webimages/3star.png'>";
$img4 = "<img src='../webimages/4star.png'>";
$img5 = "<img src='../webimages/5star.png'>";   ?>

 <? $row[0] = mysql_query("SELECT * FROM `markers`, `imagemarkers` WHERE authorid = '".    (int)$theID."'");

  if ($row[0] > 1) {
      echo "$img1";
  } elseif ($row[0] > 5) {
      echo "$img2";
  } elseif ($row[0] > 10) {
      echo "$img3";
  } elseif ($row[0] > 20) {
      echo "$img4";
  } elseif ($row[0] > 30) {
      echo "$img5";
  } else {
      echo "$img0";
  }
  ?>

Я рассчитываю, где конкретный номер пользователя показывает и совпадает с «theID» в строке «authorid» из обеих таблиц «imagemarkers» и «markers».Пользователь хранит другие данные в базе данных, и при этом он заполняет строку authorid как маркеров, так и маркеров изображений, в зависимости от того, какую форму они заполняют для хранения информации.

Надеюсь, это поможет вам понять, что я пытаюсь сделать ..

Ответы [ 3 ]

0 голосов
/ 07 мая 2011
 <? 
$result3 = mysql_query("SELECT * FROM `markers`, `imagemarkers` WHERE authorid=".(int)$theID.")";
$rows = mysql_num_rows($result3);  
?>
0 голосов
/ 07 мая 2011

Прежде всего, если строка 'authorid' существует в обеих таблицах, вы должны указать в запросах, на какой из них вы ссылаетесь:

$theID = intval($_GET['id']); // to avoid SQL-injections
$result3 = mysql_query("SELECT * FROM `markers` m, `imagemarkers` im WHERE m.authorid = $theID AND im.authorid = $theID");
// m and im are just table-aliases for brevity, you can use whatever names you like

Во-вторых, замените $ result3 на $ row [0]везде внутри цикла while:

if ($row[0] > 1) { ...

И, наконец, с логикой что-то не так.

Можете ли вы объяснить полную структуру DB, какие столбцы есть, кроме authorid?

0 голосов
/ 07 мая 2011

добавьте одинарные кавычки вокруг $theID, также убедитесь, что $ theID отмечен как целое число или место (int) перед ним:

$result3 = mysql_query("SELECT * FROM `markers`, `imagemarkers` WHERE authorid = '".(int)$theID."'");

если ошибка все еще возникает, замените ее и посмотрите, какую ошибку вы получите:

$result3 = mysql_query("SELECT * FROM `markers`, `imagemarkers` WHERE authorid = '".(int)$theID."'") or die(mysql_error());

Потому что тогда $result3 не является допустимым ресурсом результата для mysql_num_rows

...