iT邦幫忙

0

PHP連線Oracle資料查詢回傳結果

各位高手好
我有一個小程式,主要是用來查詢案件數後回傳到前台
前台是

<script>
function maxday(y,m){

   ye=parseInt(y);
   mo=parseInt(m);

   if(mo==2){
       if(ye%2==1)return(29);
       else return(28);
	   }
   if(mo%2==1 && mo!=2 && mo<=7 || mo%2==0 && mo>7)return(31);
   if(mo%2==0 && mo!=2 && mo<7 || mo%2==1 && mo>7)return(30);   
	
}


function changeday(a,b){

	while (document.all("selectday").options.length > 0)
    {
      document.all("selectday").remove(0);
    }
  
	for (var i = 1; i <= maxday(a,b); i++)
    {
      var nOption = document.createElement("OPTION");
      nOption.text=i;
      nOption.value=i;
      document.all("selectday").add(nOption);
    }
}


function Showresult(y,m,d){
   var result,m1,d1;
   if(m<10) m1="0"+m;   
   if(d<10) d1="0"+d;
   result=y+m1+d1;
   location.href="showresult.php?value=" +result;
   
}
</script>  
年:
<select id="selectyear" onchange="changeday(this.value, selectmonth.value)">
<?php

$year=date("Y")-1911;
  for($i=105;$i<=$year;$i++)
     echo '<option value="'.$i.'">'.$i.'</option>';   
?>
</select>
月:
<select id="selectmonth" onchange="changeday(selectyear.value, this.value)">
<option value=1>一月</option>
<option value=2>二月</option>
<option value=3>三月</option>
<option value=4>四月</option>
<option value=5>五月</option>
<option value=6>六月</option>
<option value=7>七月</option>
<option value=8>八月</option>
<option value=9>九月</option>
<option value=10>十月</option>
<option value=11>十一月</option>
<option value=12>十二月</option>
</select>
日:
<select id="selectday">
</select>
<br><br>
<input type="button"  value="查詢"  onclick="Showresult(selectyear.value,selectmonth.value,selectday.value)">
<br><br>
件數:<input type="text" name="result" value="">

後台是

<?php 
    $get = $_GET['value'];
    
    $db = "oci:UAWEB_220.1.110.2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST= 220.1.110.2)(PORT=1521)))(CONNECT_DATA=(SID=UAWEB)(SERVER=DEDICATED)))";
    $username = "system";
    $password = "system";
    $conn = new PDO($db, $username, $password);
    
    $sql="select count(*) from CRSMS where RM07_1='".$get."' and substr(RM03,6,1)='0'";
   
   
    
   // echo $sql;
   // $array = oci_parse($conn,$sql);
  //  oci_execute($array);
   // $r=oci_fetch($array);
    //echo $r;
  
   // echo $array;
  //  $user = $stmt->fetch();
   // echo $user;
    
    
  //  oci_free_statement($array);
 //   oci_close($conn);
    //echo "<script>";
    //echo 'var n=document.getElementByName("result").value;';
    //echo 'document.getElementByName("n").innerHTML= '.$array.";";
    //echo "</script>";*/
?>

後臺註解都是我試過的方法
主要邏輯是 我要在前台選擇好年月日
然後案件數回傳到前台的text
用oci_connect都會失敗,只有用PDO才會成功
網路都爬過文,一直都無法成功
請問我現在應該要怎麼修改??
謝謝

看更多先前的討論...收起先前的討論...
archer9080 iT邦研究生 4 級 ‧ 2021-04-27 14:59:48 檢舉
如果我沒看錯
您目前程式執行後
會停留在showresult.php ( 後台 ) 不會回到 前台 對不?
3w6s6u7 iT邦新手 5 級 ‧ 2021-04-27 15:27:09 檢舉
沒錯 因為在SQL之前都是符合我的邏輯
所以我就先把後面都弄成註解
想問說 接下來我該怎麼寫
因為試很多方式,都沒有結果
archer9080 iT邦研究生 4 級 ‧ 2021-04-27 15:56:36 檢舉
1.後台直接帶著參數轉回前台
echo '<script>window.location.href = "前台.php?result = '.$???.' "</script>';

然後前台的
<input type="text" name="result" value=""> 改成
<input type="text" name="result" value="<?php echo $_GET['result'];?>">

2.前台用ajax,取得資料後節點給值
3w6s6u7 iT邦新手 5 級 ‧ 2021-04-27 16:02:48 檢舉
謝謝回答 但是我現在的問題是 我後台用PDO可以連到資料庫
但是不知道怎麼取出SQL執行出來的東西
3w6s6u7 iT邦新手 5 級 ‧ 2021-04-27 16:10:59 檢舉
$stmt = $conn->prepare($sql);
$stmt->execute();
echo '<script>window.location.href = "newfile1.php?result = '.$stmt.' "</script>';
這樣寫對嗎??
archer9080 iT邦研究生 4 級 ‧ 2021-04-27 16:32:25 檢舉
sorry,搞錯重點@~@
不熟Oracle
不過依照說明看起來跟mysql差不多https://www.php.net/manual/en/function.oci-fetch-array.php
取出來的都是陣列,直接echo當然印不出來
如果$stmt是期望的結果,那應該沒錯
不太熟,就不再獻醜了
3w6s6u7 iT邦新手 5 級 ‧ 2021-04-27 17:02:55 檢舉
還是謝謝
qpalzm iT邦新手 1 級 ‧ 2021-04-27 18:02:10 檢舉
目前個人取資料出來都是用 oci_fetch_array ~ 再用迴圈去跑array ,提供給您參考~
https://www.php.net/manual/en/function.oci-fetch-array.php
3w6s6u7 iT邦新手 5 級 ‧ 2021-04-28 09:23:39 檢舉
現在出現了
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 942 OCIStmtExecute: ORA-00942: 表格或視觀表不存在 (ext\pdo_oci\oci_statement.c:155) in C:\xampp\htdocs\test1\showresult.php:12 Stack trace: #0 C:\xampp\htdocs\test1\showresult.php(12): PDO->query('select count(*)...') #1 {main} thrown in C:\xampp\htdocs\test1\showresult.php on line 12
3w6s6u7 iT邦新手 5 級 ‧ 2021-04-28 09:24:15 檢舉
但是我有在資料表前面加上有權限使用的帳號 還是一樣
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答