2015-07-17 4 views
0

Я пытаюсь написать инструкцию if else, зависящую от значения поля mySQL.PHP mysql if else

В основном, в таблице наград, если id_project является PRJ000, то я хочу, чтобы $tempID и $tempProjectName быть разные значения.

В данный момент этот код работает, но результаты на странице следующие за кодом "else", что заставляет меня думать, что я установил "if" неправильно. Любой совет?

<?PHP 
$query = "SELECT * FROM `awards` "; 
$query .= "WHERE `active` = '1' "; 
$query .= "ORDER BY `date` DESC "; 
$query .= "LIMIT $idStart, 10 "; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)){ 
    $query2 = "SELECT * FROM `projects` "; 
    $query2 .= "WHERE `id_fm` = '".$row["id_project"]."' AND `active` = '1' "; 
    $result2 = mysql_query($query2); 
    while($row2 = mysql_fetch_array($result2)){ 
    if($row["id_project"] == "PRJ000"){ 
     $tempID = "#"; 
     $tempProjectName = "General"; 
    } 
    else { 
     $tempID = $row2["id_x"]; 
     $tempProjectName = $row2["title"]; 
    } 
    } 
    ?> 
+2

Каково значение '$ row [" id_project "]'? –

+0

Синтаксически это нормально. Каковы некоторые из значений '$ row [" id_project "]' на каждой итерации? –

+0

Извините, если это не совсем ответит на ваши вопросы, но для $ row ["id_project"] установлено значение поля в таблице mySQL. Когда я повторяю $ row ["id_project"], он корректно выводит как другие номера проекта), такие как PRJ012, PRJ0134 и т. Д., Но когда он включен в оператор if, он не работает. – nephenee245

ответ

2

Я понял ваш код и сделал ошибку в последнем ответе, заменяя обновленный код

<?php 
$query = "SELECT * FROM `awards` "; 
$query .= "WHERE `active` = '1' "; 
$query .= "ORDER BY `date` DESC "; 
$query .= "LIMIT $idStart, 10 "; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)){ 
$projectId = $row["id_project"]; //Set a variable here and use later 
    $query2 = "SELECT * FROM `projects` "; 
    $query2 .= "WHERE `id_fm` = '$projectId' AND `active` = '1' "; 
    $result2 = mysql_query($query2); 
    while($row2 = mysql_fetch_array($result2)){ 
    if($projectId == "PRJ000"){ 
     $tempID = "#"; 
     $tempProjectName = "General"; 
    } 
    else { 
     $tempID = $row2["id_x"]; 
     $tempProjectName = $row2["title"]; 
    } 
} 
?> 
+0

спасибо! к сожалению, это не сработало. Хотя это выглядит как $ row ["id_project"], $ row2 ["id_project"] не имеет значений. Каков наилучший способ переписать код, учитывая эту проблему? – nephenee245

+0

Я обновил ответ, я неправильно понял код, мой плохой – Shehary

+0

, кстати, вы можете сделать это с помощью более простого запроса, присоединившись к обеим таблицам – Shehary

0

InstEd строку row2

if($row2["id_project"] == "PRJ000"){ 
     $tempID = "#"; 
     $tempProjectName = "General"; 
    } 
    else { 
     $tempID = $row2["id_x"]; 
     $tempProjectName = $row2["title"]; 
    } 
0

Если вы собрали все строки из исходного запроса (с foreach или с помощью функции iterator_to_array(), тогда вы можете перебрать этот простой массив данных и выполнить внутренний запрос на досуге.

Это также облегчило бы отладку, поскольку вы можете просто легко сбрасывать строки между запросами.

В долгосрочной перспективе вы можете преобразовать запрос в таблицу проектов в таблицу вознаграждений, основанную на id_project = id_fm, и поэтому для получения дальнейшей обработки возвратите свои данные отдельно для конкретного проекта.