2016-12-15 127 views
1

在我的第一個PHP文件中,我從mysql獲取結果並將它們顯示在表中。一列中的每行值都必須具有「是」或「否」的值。添加值爲「否」的新請求時。在「否」點擊我想打開另一個php(zatvaranje_zadatka.php),併發送id_zadatka和broj_zadatka到新的php文件,並用表格輸入請求的解決方案。在提交新的PHP文件我想改變MySQL的表1中的標誌爲「是」,並寫入解決方案到MySQL中的另一個表。 在第一個PHP的簡短說明:PHP值不更新MySQL表

while ($row = mysql_fetch_array($result)) 
{ 
    echo '<tr><td>' .$row["id_zadatka"] .'</td>'; 
    echo '<td><a href="zatvaranje_zadatka.php?id_zadatka='.$row["id_zadatka"].'">Zatvori</a></td>'; 
} 

在zatvaranje_zadatka.php我:

$id_zadatak = isset($_GET['id_zadatka']) ? $_GET['id_zadatka'] : ''; 
$br_zht = isset($_GET['broj_zadatka']) ? $_GET['broj_zadatka'] : ''; 
if($id_zadatak != '') { 
    echo '<form action="zatvaranje_zadatka.php?go.php" method="POST" id="zatv_zad" name="zatv_zad">'; 
    echo '<fieldset>'; 
    echo ' Broj zadatka je:'; 
    echo '<legend>Rješenje zadatka</legend>'; 
    echo ' <textarea id= "rjesenje" name = "rjesenje" rows="4" cols="50"></textarea>'; 
    echo '</fieldset>'; 
    echo '<button type="submit" id="submit_zatv" name="submit_zatv"> Zatvori zadatak </button>'; 
    echo '</form>'; 

    $rjesenje = isset($_GET['rjesenje']) ? $_GET['rjesenje'] : ''; 

    $query2 = "INSERT INTO rjesenje(broj_zadatka, rjesenje_zadatka) VALUES ('$br_zht', '$rjesenje')"; 
    $result2 = mysql_query($query2) or die ("Nije uspio zapis u bazu" .mysql_error()); 
} 

輸出表rjesenje什麼。

回答

0

這所有的代碼看起來混亂和懷疑,但你可以試試這個測試,以找出如何,這一切都是在最後的工作..

$id_zadatak = $_GET['id_zadatka']; // we set this via URL 
    //$br_zht = $_GET['id_zadatka']; // id i broj su ista stvar 
    $rjesenje = $_POST['rjesenje']; 


    if($id_zadatak != '') { 

      echo '<form action="zatvaranje_zadatka.php?id_zadatka='.$id_zadatak.'" method="POST" id="zatv_zad" name="zatv_zad">'; 
       echo '<fieldset>'; 
        echo ' Broj zadatka je:'; 
        echo '<legend>Rješenje zadatka</legend>'; 
        echo ' <textarea id= "rjesenje" name = "rjesenje" rows="4" cols="50"></textarea>'; 
       echo '</fieldset>'; 
       echo '<button type="submit" id="submit_zatv" name="submit_zatv"> Zatvori zadatak </button>'; 
      echo '</form>'; 




     if(isset($rjesenje)) 
{ 
       $query2 = "INSERT INTO rjesenje(broj_zadatka, rjesenje_zadatka) VALUES ('$id_zadatak', '$rjesenje')"; 
       $result2 = mysql_query($query2) or die ("Nije uspio zapis u bazu" .mysql_error()); 
} 

     } 
+0

這解決了我的問題稍微修改$ rjesenje到(isset($ _ POST [「rjesenje」])?$ _ POST [「rjesenje」 ]:'');多謝! – MikeL

+0

@JoeMay另一種方式來確定的變量是否是空的或沒有,是通過'空()'函數。它檢查一個變量是否包含一個值,以及該變量是否被設置。 http://php.net/manual/en/function.empty.php – 2016-12-16 21:47:04

0

這可能是由於輸入錯誤。您需要在表名和行名之間留出空格。 (例如rjesenje_(broj_zadatka,rjesenje_zadatka))

但什麼更糟糕的是,你的數據庫是脆弱的SQL注入。請看看prepared statements

+1

「您需要在表名和行名之間留出空格。」 ---這是不正確的。你不需要。表名和括號之間的空格是可選的。你甚至可以編寫一個像這樣插入到用戶(id,下載)值(4,7)的查詢,並且它仍然可以正確插入。更可能的錯誤是'$ _GET ['rjesenje']'沒有設置。可能是因爲表單發佈和請求檢查$ _GET – 2016-12-15 16:22:07

0

您的形式是method="POST"你檢查$_GET變量。因此,錯誤rjesenje是空的。這應該導致錯誤,但是您檢查是否設置了$_GET['rjesenje']。它不是,因此變量的值是什麼都沒有,正如你檢查它是否被設置的那樣。

$rjesenje = isset($_GET['rjesenje']) ? $_GET['rjesenje'] : ''; 

返回false => $ rjesenje沒什麼

改變行至下面=:

$rjesenje = isset($_POST['rjesenje']) ? $_POST['rjesenje'] : ''; 

爲了解決上述問題,或者改變表單的請求方法到method="get"或檢查$_POST變量代替,如上面所建議的。

一種方法來檢查,如果這是真的,你可以嘗試打印出變量在調試:

print_r($_GET); 

print_r($_POST); 

請確保您有而你的錯誤調試

error_reporting(E_ALL); 

閱讀更多:How to get useful error messages in PHP?


此外,我想建議你,而不是使用MySQL的庫MySQLi或PDO的功能。在MySQL功能被棄用的PHP版本5.5和7.0的PHP完全刪除,因爲MySQL的功能很容易受到攻擊。

http://php.net/manual/en/intro.mysql.php

+0

從您的文章中,我學到了一些新的東西。謝謝! – MikeL

+0

這的確是這樣的目的,我很高興地聽到,@MikeL :) – 2016-12-16 11:23:29