2016-01-28 2 views
-1

Iam поражен запросом. У меня есть два запроса. Мне нужно, чтобы он выполнял и заканчивал первый запрос. После завершения первого запроса он должен выполнить второй запрос. Как я это сделаю? Php-страница немного огромна, поэтому я не отправлял ее. ОК. Теперь это первая страница php, ее обновление данных о ценах с использованием последних данных о валюте. Сценарий ниже:Выполнение двух запросов один за другим в php/mysql

<?php 
$tender_id=$_GET['tender_id']; 

include('config.php'); 

?> 

<?php 
$sql_rateinr = "select * from currency1"; 

$result_rateinr = mysql_query($sql_rateinr) or die($sql_rateinr."<br/><br/>".mysql_error()); 
while($row_rate = mysql_fetch_array($result_rateinr)) 
{ 

$currency= $row_rate['currency']; 
    if ($currency=='INR') { 
     $rate_inr1 = $row_rate['rate']; 
    } else if ($currency=='USD') { 
     $rate_usd = $row_rate['rate']; 
    } else if ($currency=='GBP'){ 
     $rate_gbp = $row_rate['rate']; 
    } else if ($currency=='EUR'){ 
     $rate_eur = $row_rate['rate']; 
    } else if ($currency=='SGD'){ 
     $rate_sgd = $row_rate['rate']; 
    } else if ($currency=='AUD'){ 
     $rate_aud = $row_rate['rate']; 
    } else if ($currency=='CAD'){ 
     $rate_cad = $row_rate['rate']; 
    } else if ($currency=='CHF'){ 
     $rate_chf = $row_rate['rate']; 
    } else if ($currency=='JPY'){ 
     $rate_jpy = $row_rate['rate']; 
    } else if ($currency=='MYR'){ 
     $rate_myr = $row_rate['rate']; 
    } else if ($currency=='ZAR'){ 
     $rate_zar = $row_rate['rate']; 
    } 
} 

//(Total/item rate) * INR rate 
$result = mysql_query("SELECT * FROM comparitive_st_sup where tender_id='$tender_id'"); 
//echo '<table width=100% border=1>'; 
while($row = mysql_fetch_array($result)) 
{ 
$id=$row['id']; 
$item_name=$row['item_name']; 
$currency1 =$row['currency']; 
$total =$row['total']; 
$total_inr =$row['total_inr']; 
$supplier_name =$row['supplier_name']; 

if ($currency1=='INR') { 
    $convertedtotal = $total; 
} else if ($currency1=='USD') { 
    $convertedtotal = ($total * $rate_inr1); 
} else if ($currency1=='GBP'){ 
    $convertedtotal = (($rate_inr1/$rate_gbp) * $total); 
} else if ($currency1=='EUR'){ 
    $convertedtotal = (($rate_inr1/$rate_eur) * $total); 
} else if ($currency1=='SGD'){ 
    $convertedtotal = (($rate_inr1/$rate_sgd) * $total); 
} else if ($currency1=='AUD'){ 
    $convertedtotal = (($rate_inr1/$rate_aud) * $total); 
} else if ($currency1=='CAD'){ 
    $convertedtotal = (($rate_inr1/$rate_cad) * $total); 
} else if ($currency1=='CHF'){ 
    $convertedtotal = (($rate_inr1/$rate_chf) * $total); 
} else if ($currency1=='JPY'){ 
    $convertedtotal = (($rate_inr1/$rate_jpy) * $total); 
} else if ($currency1=='MYR'){ 
    $convertedtotal = (($rate_inr1/$rate_myr) * $total); 
} else if ($currency1=='ZAR'){ 
    $convertedtotal = (($rate_inr1/$rate_zar) * $total); 
} 

$query_update = "UPDATE comparitive_st_sup SET total_inr = '$convertedtotal' WHERE id = '$id' and tender_id='$tender_id' "; 
mysql_query($query_update) or die ("Error in query: $query_update"); 

} 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
?> 

Это вторая PHP страница с обновленными данными валюты, РМКО обновление другой таблицы данных:

запрос ниже:

mysqli_query($con,"INSERT INTO quotation_terms (tender_id, export_charges, export_charges_inr, iata_charges, iata_charges_inr, coc_charges, coc_charges_inr, calibration_charges, calibration_charges_inr, tp_inspe_charges_inr, tp_inspe_charges, ultrason_inspe_charges_inr, ultrason_inspe_charges, opt_access_cost, opt_access_cost_inr, ext_warranty_cost_inr, ext_warranty_cost, inst_training_cost_inr, inst_training_cost, approx_freight_inr, approx_freight, other_charges_inr, other_charges, currency1) 

VALUES ('$tender_id','$export_charges','$exportinr','$iata_charges','$iatainr','$coc_charges','$cocinr','$calibration_charges','$calibrationinr','$tpinr','$tp_inspe_charges', '$ultrasoninr', '$ultrason_inspe_charges', '$opt_access_cost', '$optinr', '$extinr', '$ext_warranty_cost', '$instinr', '$inst_training_cost', '$freightinr', '$approx_freight', '$otherinr', '$other_charges', '$currency')"); 
echo "<br>Checkbox Values submitted to Terms DB"; 

После запуска первый запрос php, он должен запустить второй запрос. Любые намеки ..?

+0

Где ваши два вопроса ??? – Saty

+0

Пожалуйста, напишите ваши усилия. –

+0

@ Сати и @ AddWeb. Я обновил вопрос с помощью php php script. –

ответ

0

Я предполагаю, что второй запрос зависит от того, что было помещено в предыдущий запрос. Если это так, вы можете захотеть заглянуть в «mysqli_insert_id», который получит идентификатор, сгенерированный в запрошенном запросе.

Подробнее: http://php.net/manual/en/mysqli.insert-id.php

+0

Пожалуйста, не предлагайте устаревшие и удаленные функции PHP7. –

+0

мой плохой: http://php.net/manual/en/mysqli.insert-id.php –

0

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

function multiQueryExec($type = 'SELECT', $arrParam = array()){ 

    $returnVal = array(); 

    if($type == 'SELECT'){ 

     $tender_id = $arrParam['tender_id']; 

     //(Total/item rate) * INR rate 
     $result = mysql_query("SELECT * FROM comparitive_st_sup where tender_id='$tender_id'"); 

     while($row = mysql_fetch_array($result)){ 
      $id=$row['id']; 
      $item_name=$row['item_name']; 
      $currency1 =$row['currency']; 
      $total =$row['total']; 
      $total_inr =$row['total_inr']; 
      $supplier_name =$row['supplier_name']; 

      if ($currency1=='INR') { $convertedtotal = $total; 
      } else if ($currency1=='USD') { $convertedtotal = ($total * $rate_inr1); 
      } else if ($currency1=='GBP'){ $convertedtotal = (($rate_inr1/$rate_gbp) * $total); 
      } else if ($currency1=='EUR'){ $convertedtotal = (($rate_inr1/$rate_eur) * $total); 
      } else if ($currency1=='SGD'){ $convertedtotal = (($rate_inr1/$rate_sgd) * $total); 
      } else if ($currency1=='AUD'){ $convertedtotal = (($rate_inr1/$rate_aud) * $total); 
      } else if ($currency1=='CAD'){ $convertedtotal = (($rate_inr1/$rate_cad) * $total); 
      } else if ($currency1=='CHF'){ $convertedtotal = (($rate_inr1/$rate_chf) * $total); 
      } else if ($currency1=='JPY'){ $convertedtotal = (($rate_inr1/$rate_jpy) * $total); 
      } else if ($currency1=='MYR'){ $convertedtotal = (($rate_inr1/$rate_myr) * $total); 
      } else if ($currency1=='ZAR'){ $convertedtotal = (($rate_inr1/$rate_zar) * $total); 
      } 
     } 

     $returnVal['currency1'] = $currency1; 
     $returnVal['convertedtotal'] = $convertedtotal; 
    } 
    else { 
     $id = $arrParam['id']; 
     $convertedtotal = $arrParam['convertedtotal']; 
     $tender_id = $arrParam['tender_id']; 

     $query_update = "UPDATE comparitive_st_sup SET total_inr = '$convertedtotal' WHERE id = '$id' and tender_id='$tender_id' "; 
     mysql_query($query_update) or die ("Error in query: $query_update"); 
     $returnVal['tender_id'] = $tender_id; 
    } 
    return $returnVal; 

//Call for first select query after currency query 
$arrParam = array(); 
$arrParam['tender_id'] = $tender_id; 
$getResult = multiQueryExec('SELECT', $arrParam); 

//Call for update second query 
$arrParam = array(); 
$arrParam['tender_id'] = $tender_id; 
$arrParam['convertedtotal'] = $convertedtotal; 
$arrParam['id'] = $id; 
$getResult = multiQueryExec('SELECT', $arrParam); 

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

+0

Да, спасибо. Фактический сценарий - первая страница, обновляющая некоторые данные в базе данных. Второй запрос - это просто использование обновленных данных из db. Так что, наверное, мне не нужно переносить данные на вторую страницу? –

+0

Нужно ли мне вызвать функцию в форме? –

Смежные вопросы