2015-03-13 67 views
0

我是一種PHP新手,遇到了一個問題,我不知道如何解決它。 我想做一個簡單的系統,在按下按鈕(是/否)後,數據庫中的某些值正在改變。不幸的是,我的$ _SESSION和$ _POST似乎沒有與我合作並返回空值。 下面的代碼(我已經刪除線,包括口令等):

<?php 
session_start(); 
echo get_defined_vars(); 
echo var_dump($_session); 
echo var_dump($_POST); 
if(!isset($_SESSION['zalogowany'])) { 
    $_SESSION['text'] = 'Nie jesteś zalogowany!'; 
    header('Location: login.php'); 
    exit(); 
} 
if(isset($_POST['Submit_Yes'])) 
{ 
    $id = $_SESSION['id']; 
    $link = mysql_connect($host, $database_username, $database_password); 
    mysql_select_db($database, $link); 
    $sql = 'UPDATE Tickets SET Głosy=Głosy+1 WHERE ID_Ticketu=$id'; 
    $result = mysql_query($sql, $link); 
} 
if(isset($_POST['Submit_No'])){ 
    $id = $_SESSION['id']; 
    $link = mysql_connect($host, $database_username, $database_password); 
    mysql_select_db($database, $link); 
    $sql = 'UPDATE Tickets SET Głosy=Głosy-1 WHERE ID_Ticketu=$id'; 
    $result = mysql_query($sql, $link); 
} 
?> 

編輯: FORM代碼:

<Form Name=single_ticket_form Method="POST" ACTION="ticket_vote.php"> 
    <?php   
    mysql_select_db($database, $link); 
    $sql = "Select * from Tickets WHERE ID_Ticketu=$id"; 
    $result = mysql_query($sql, $link); 
    $row = mysql_fetch_array($result); 
    echo '<span>Nick:<p class=ticket_result>' . $row['Nazwa'] . '</p></span>'; 
    echo '<span>Imię i Nazwisko postaci:<p class=ticket_result>' . $row['Imię_Nazwisko'] . '</p></span>'; 
    echo '<span>Dział:<p class=ticket_result>' . $row['Dział'] . '</p></span>'; 
    echo '<span>Treść:<p class=ticket_result_msg>' . $row['Treść'] . '</p></span>'; 
    echo '<INPUT class=button_yes TYPE = "Submit" Name = "Submit_yes" value="Tak">'; 
    echo '<INPUT class=button_no TYPE = "Submit" Name = "Submit_no" value="Nie">'; 
    $_SESSION['id'] = $id; 
    } 
    ?> 
    </Form> 
+2

你並不需要一個'echo'中的var_dump'前()'。 – Sirko 2015-03-13 11:57:45

+0

此外,我們需要看到表格 – 2015-03-13 11:58:12

+0

你在哪裏*設置*這些會議和郵政價值? – David 2015-03-13 11:58:58

回答

1

INFOS

  • get_defined_vars返回@array =>'echo'=>'var_dump '
  • $ _SESSION回報@array =>不需要額外的' 回聲 '前' 的var_dump '
  • $ _ POST回報@array =>不需要額外的' 回聲 '前' 的var_dump
  • $ _session =>$ _SESSION
  • 在HTML表單,您提交的名稱爲 'Submit_yes' 和你的病情 'isset' 你寫 'Submit_Yes'
  • 在你的行$ sql中,你把簡單的引用而不是雙引號,所以'$ id'裏面的變量沒有被解釋。

FORM:

<form name="single_ticket_form" method="POST" action="ticket_vote.php"> 
<?php 
    $_SESSION['id'] = $id; 
    mysql_select_db($database, $link) or die(mysql_error()); 
    $sql = "SELECT * FROM Tickets WHERE ID_Ticketu = $_SESSION['id']"; 
    $result = mysql_query($sql, $link) or die(mysql_error()); 
    $row = mysql_fetch_array($result); 
    if ($row) 
    { 
     var_dump($row); 
?> 
     <span>Nick:<p class="ticket_result"><?php echo $row['Nazwa']; ?></p></span>'; 
     <span>Imię i Nazwisko postaci:<p class="ticket_result"><?php echo $row['Imię_Nazwisko']; ?></p></span> 
     <span>Dział:<p class=ticket_result><?php echo $row['Dział'] ?></p></span> 
     <span>Treść:<p class=ticket_result_msg><?php echo $row['Treść'] ?></p></span> 
     <input type="submit" class="button_yes" name="Submit_yes" value="Tak" /> 
     <input type="submit" class="button_no" name="Submit_no" value="Nie" /> 
<?php 
    } 
    else 
    { 
     echo "Wrong id"; 
    } 
?> 
</form> 

FORM ACTION:

<?php 
    session_start(); 

    var_dump(get_defined_vars()); 
    var_dump($_SESSION); 
    var_dump($_POST); 

    if(!isset($_SESSION['zalogowany'])) 
    { 
     $_SESSION['text'] = 'Nie jesteś zalogowany!'; 
     header('Location: login.php'); 
     exit(); 
    } 

    if(isset($_POST['Submit_yes']) || isset($_POST['Submit_no'])) 
    { 
     $id = $_SESSION['id']; 
     $link = mysql_connect($host, $database_username, $database_password) or die(mysql_error()); 
     mysql_select_db($database, $link) or die(mysql_error()); 
     if (isset($_POST['Submit_yes'])) 
      $sql = "UPDATE Tickets SET Głosy=Głosy+1 WHERE ID_Ticketu=$id"; 
     else 
      $sql = "UPDATE Tickets SET Głosy=Głosy-1 WHERE ID_Ticketu=$id"; 
     $result = mysql_query($sql, $link) or die(mysql_error()); 
    } 
?> 
+0

改變你發佈的行之後,var_dump($ _ SESSION)給了我適當的值,但數據庫中的值仍然沒有變化。對此有何想法? – fakenso 2015-03-13 12:29:40

+0

檢查我的編輯,在你的行$ sql('UPDATE Tickets SETGłosy=Głosy+ 1 WHERE ID_Ticketu = $ id'),你把簡單的報價而不是雙引號,所以'$ id'裏面的變量沒有被解釋。 – 2015-03-13 12:32:56

+0

所以我早點改變了它。我用你發佈的代碼替換了我的代碼,並且仍然在列「Głosy」沒有改變。 – fakenso 2015-03-13 12:37:25