2013-06-15 4 views
2

양식에 문제가 있습니다. 동일한 양식 (while 루프 사용)을 사용하여 내 DB에서 값을 DB에 다시 두 행을 표시하고 있습니다. 문제는 두 번째 또는 표시되는 맨 아래 행은 정상적으로 작동하지만 맨 위의 값 하나를 클릭하면 맨 위의 값 하나를 클릭하면 작동합니다.PHP 양식 제출

내 웹 사이트가 스스로 체크 아웃 www.albsocial.us/test/seria.php, 난 그냥이 경우 비디오를 포함 http://www.youtube.com/watch?v=xGwPd_P65oM

<?php 
session_start(); 
include("connect.php"); 

$query = "SELECT * FROM test ORDER BY `id` ASC LIMIT 2"; 
$result = mysql_query($query); 

echo "<h2>Seria A</h2><hr/>"; 

while($row = mysql_fetch_array($result)){ 

    $id = $row['id']; 
    $home = $row['home']; 
    $away = $row['away']; 
    $win = $row['win']; 
    $draw = $row['draw']; 
    $lose = $row['lose']; 


    echo "<br/>",$id,") " ,$home, " - ", $away; 

    echo " 

    <form action='seria.php' method='post' id='$id'> 
    <select name='test'>   
     <option value=\"\">Parashiko</option> 
     <option value='1'>1</option> 
     <option value='X'>X</option> 
     <option value='2'>2</option>    
     <input type='submit' name='submit' value='Submit'/> 
     <input type='hidden' name='id' readonly value='".$row['id']."'/> 

    </select>   

    <br/> 

    </form>";   

    echo "Totali ", $sum = $win+$lose+$draw, "<br/><hr/>"; 

} 

if (!empty($_POST)) { 

    $id=isset($_POST['id'])&&is_numeric($_POST['id']) ? $_POST['id']:false; 

    $select = isset($_POST['test']) ? $_POST['test']:false; 

    switch ($select) { 
    case 1: 
    $select = $win + $select; 
    mysql_query("UPDATE test SET win='$select' WHERE id='$id'"); 
    break; 

    case 'X': 
    $select = '1'; 
    $select = $draw + $select; 
    mysql_query("UPDATE test SET draw='$select' WHERE id='$id'"); 
    break; 

    case 2: 
    $select = '1'; 
    $select = $lose + $select; 
    mysql_query("UPDATE test SET lose='$select' WHERE id='$id'"); 
    break; 
    default: 
    } 
    header('Location: ../test/seria.php'); 
} 

?> 
+0

아니요 아래쪽에있는 행 ID 중 어느 것이 든 작동합니다. 그 다음 맨 아래에있는 값 = 1을 클릭하면 동일한 값을 클릭하면 상단이 작동합니다. –

+0

예를 들어 아래쪽을 클릭하면 행 값 i jusst는 그 값을 제출하고 싶습니다. 그런 다음 꼭대기를 클릭하기로 결정하면 그 값 하나를 제출해야합니다 @Prix –

+0

비디오를 확인하십시오. .. –

답변

0

당신이 선택한 choise에 1을 더하여 wins, lose, draws의 값을 업데이트하고 싶습니다. 코드를 제안으로 조금 변경했습니다. wokrs가되기를 바랍니다.

<?php 

session_start(); 

include("connect.php"); 

$submit = @$_POST["submit"]; 
$tests = @$_POST["test"]; 

// If the user submitted the form. 
// Do the updating on the database. 
if (!empty($submit)) 
{ 
    if (count($tests) > 0) 
    { 
     foreach ($tests as $test_id => $test_value) 
     { 
      switch ($test_value) 
      { 
       case 1: 
        mysql_query("UPDATE test SET win = win + 1 WHERE id = '$test_id'"); 
       break; 

       case 'X': 
        mysql_query("UPDATE test SET draw = draw + 1 WHERE id = '$test_id'"); 
       break; 

       case 2: 
        mysql_query("UPDATE test SET lose = lose + 1 WHERE id = '$test_id'"); 
       break; 

       default: 
        // DO NO THING. 
      } 
     } 
    } 

    // Redirect to seria page. 
    header('Location: ../test/seria.php'); 
} 

// Whenever this wiil be fetched it will be updated. 
$query = "SELECT * FROM test ORDER BY `id` ASC LIMIT 2"; 
$result = mysql_query($query); 

echo "<h2>Seria A</h2><hr/>"; 

while($row = mysql_fetch_array($result)){ 

    $id = $row['id']; 
    $home = $row['home']; 
    $away = $row['away']; 
    $win = $row['win']; 
    $draw = $row['draw']; 
    $lose = $row['lose']; 


    echo "<br/>",$id,") " ,$home, " - ", $away; 

    echo " 

    <form action='seria.php' method='post'> 

    <select name='test[$id]'>   
     <option value=\"\">Parashiko</option> 
     <option value='1'>1</option> 
     <option value='X'>X</option> 
     <option value='2'>2</option> 
    </select> 

    <input type='submit' name='submit' value='Submit'/> 

    <br/> 

    </form>";   

    echo "Totali ", $sum = $win+$lose+$draw, "<br/><hr/>"; 

} 

?> 

감사합니다, Hussam.

+0

생명의 은인 제 친구 ... 고마워요. 오빠. .. 그레이트 솔루션 그 일 .. 내가 뭘 잘못했는지 설명 해줄 수 있겠 니?. 이걸 내야했다. ---> $ submit = @ $ _ POST [ "submit "]; $ tests = @ $ _ POST [ "test"]; foreach –

+0

코드를 두 부분으로 나눈 것 같습니다. 하나는 데이터베이스에서 데이터를 검색하여 표시하는 것이고 다른 하나는 데이터를 데이터베이스에 저장 (업데이트)하는 것입니다. 데이터베이스를 나중에 쿼리하기로 결정할 때 데이터가 최신 상태가되기 때문에 업데이트가 처음이라면 훨씬 더 좋습니다. 또 다른 한 가지는 페이지에서 많은 양식을 사용하는 반면 한 양식을 사용하고 입력을 배열로 사용할 수 있다는 것입니다. –

+0

고마워. 내 친구 .. 정말 도움이 됐어.이제 너 덕분에. –

0

문제는 당신이 있다는 것입니다 while 루프를 사용하여 HTML 양식을 표시하므로 양식이 제출되고 $_POST['test']에 액세스하려고하면 HTML이 값을 대체하므로 마지막 값만 수신합니다. 당신이 오류를 얻을 것이다 양식 $_POST['test][0], $_POST['test'][1] 등 인덱스 0 모든 값으로해야합니다 제출할 때

그래서 그냥 test[]test에서 필드의 이름을 변경한다 무엇을해야 지금 무슨이다 첫 번째 필드의 값과 모두 1은 두 번째 형식의 값을 갖는 식으로 계속됩니다.

희망이 있습니다. :)

+0

형제가 작동하지 않는 것 같아요.이 줄을 변경해야합니다 -> $ select = isset ($ _ POST [ 'test'] [0])? $ _POST [ 'test'] [0] : 거짓; –

+0

HTML에서 name 속성을 "test []"로 변경 했습니까? –

+0

이 여전히 $ _POST를 인쇄하고 내가 제공 한 이론에 따라 로직을 변경하는 형제 –