Ссылка на столбец базы данных PHP MySQL - PullRequest
0 голосов
/ 13 апреля 2011

извините, что беспокою вас снова, но я действительно застрял!

Как можно было бы сделать оператор if, ссылающийся на то, где или нет данные из определенного столбца, или убрать последнее число в имени столбца и ссылаться на него таким образом?

По сути, у меня есть база данных музыкантов, где человек из таблицы PEOPLE связан с помощью идентификатора с инструментами в таблице INSTRUMENTS, у меня есть функция поиска по электронной почте, которая мне нужна для отправки относительных данных на соответствующие инструменты. Поэтому, если кто-то играет на гитаре в качестве своего второго инструмента, а кто-то играет на своем пятом, мне нужны соответствующие класс, стандарт и комментарии, которые будут отправлены вместе с ними в функции электронной почты.

Я хочу получить комментарии [i], оценка [i], стандарт [i] соответствующего инструмента [i]

Расположение моих таблиц: (Я знаю, что это не очень эффективно, и я буду смотреть на нормализацию БД в будущем!)


Таблица: ПРИБОРЫ

КОЛОННЫ:

 id   instrument1   grade2  standard3   comments4   
      instrument2   grade2  standard2   comments2   
      instrument3   grade3  standard3   comments3   
      instrument4   grade4  standard4   comments4   
      instrument5   grade5  standard5   comments5

ТАБЛИЦА: ЛЮДИ

КОЛОННЫ:

id  first  last  snumber  course  email  graduate  inumber

EDIT:

      while($getresults = mysql_fetch_assoc($result)){
      $peoplequery = "SELECT * FROM people WHERE id = {$getresults [id]}";
      $peopleresults = @mysql_query($peoplequery);
      $getpeopleresults = mysql_fetch_assoc($peopleresults);

 //add the details returned by the database to the table:


      $table .= "  
      <td><p>{$getpeopleresults [first]} {$getpeopleresults [last]}</p></td>
      <td><p>{$getpeopleresults [email]}</p></td>
      <td><p>{$getpeopleresults [course]}</p></td>
      <td><p>{$getresults [grade]}</p></td>
      <td><p>{$getresults [standard]}</p></td>
      <td><p>{$getresults [comments]}</p></td></tr>
      <tr><td colspan=8><hr size=1 color=gray></td></tr>
      }

  ";

}

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Вы чувствуете себя действительно застрявшим, потому что вы пытаетесь раздавить квадратный колышек в круглое отверстие. Это было бы действительно легко, если бы вы использовали макет таблицы, которая позволяла вам использовать БД так, как БД предназначались для функционирования.

Единственный хак, который пока работает, - это писать сумасшедшие длинные операторы SQL, тщательно проверяя каждую возможность или объединяя все поля и ища частичные совпадения. Пожалуйста, не делай этого. Потратьте некоторое время на изменение макета таблицы, чтобы вы могли использовать объединения и запросы, используя стандартные методы SQL.

0 голосов
/ 13 апреля 2011

Я согласен с @Caleb Но все же вы хотите быть с этим дизайном базы данных, вы можете сделать это, это наиболее неэффективный способ из-за структуры вашей БД.

Я не проверял это, поэтому могут быть некоторые синтаксические ошибки.

$selQuery = "select * from instruments LEFT JOIN people ON instruments.id=people.id where instrument1 like 'guitar' OR instrument2 like 'guitar' OR instrument3 like 'guitar' OR instrument4 like 'guitar' OR instrument5 like 'guitar'";

$resQuery = mysql_query($selQuery)

$peoples = array();
while($row = mysql_fetch_assoc($resQuery))
{
   for($i = 1; $i<= 5; $i++ )
   {
       if(strtolower($row['instrument'.$i]) == strtolower('Guitar'))
       {
            $people = array();
            $people['id'] = $row['id'];
            $people['first'] = $row['first'];
            $people['email'] = $row['email'];
            $people['instrument'] = $row['instrument'.$i];
            $people['grade'] = $row['grade'.$i];
            $people['standard'] = $row['standard'.$i];
            $people['comments'] = $row['comments'.$i];
            array_push($peoples , $people);
            break;
       }
   }
}

хорошо, я просмотрел ваш код,

внести изменения, как показано ниже

//Find instruments searched for:

$query = "SELECT * from instruments where '$search' in (instrument , instrument2, instrument3, instrument4, instrument5)";

$result = @mysql_query($query);

//Start building the table:
    $table = "<th><p><b>You searched for $search</b></p></th>
        <table>
        <th> <p><b>Name </b></p></th>

    <th> <p><b>Email </b></p> </th>

    <th> <p><b>Course </b></p></th>

    <th> <p><b>Grade </b></p></th>

    <th> <p><b>Standard </b></p></th>

    <th> <p><b>Comments</b></p>

</th></tr>";


    $peoples = array();
          while($row = mysql_fetch_assoc($result)){

           if(strtolower($row['instrument']) == strtolower($search))
       {
            $people = array();
            $people['id'] = $row['id'];
            $people['instrument'] = $row['instrument'.$i];
            $people['grade'] = $row['grade'.$i];
            $people['standard'] = $row['standard'.$i];
            $people['comments'] = $row['comments'.$i];
            array_push($peoples , $people);
            continue;
       }

   for($i = 2; $i<= 5; $i++ )
   {
       if(strtolower($row['instrument'.$i]) == strtolower($search))
       {
            $people = array();
                $people['id'] = $row['id'];
                $people['instrument'] = $row['instrument'.$i];
                $people['grade'] = $row['grade'.$i];
                $people['standard'] = $row['standard'.$i];
                $people['comments'] = $row['comments'.$i];
                array_push($peoples , $people);
                break;
           }
       }

 }

       foreach($peoples as $people)
       {
          $peoplequery = "SELECT * FROM people WHERE id = '".$people[id]."'";

          $peopleresults = @mysql_query($peoplequery);

          $getpeopleresults = mysql_fetch_assoc($peopleresults);



  //add the details returned by the database to the table:





          $table .= " 

          <td><p>{$getpeopleresults[first]} {$getpeopleresults[last]}</p></td>

          <td><p>{$getpeopleresults[email]}</p></td>

          <td><p>{$getpeopleresults[course]}</p></td>

                  <td><p>{$people[grade]}</p></td>

          <td><p>{$people[standard]}</p></td>

          <td><p>{$people[comments]}</p></td></tr>

                  <tr><td colspan=8><hr size=1 color=gray></td></tr>

                  }



          ";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...