2013-06-14 9 views
0

Im пытается отобразить 2 строки из моей базы данных, но я хочу, чтобы это было, когда я щелкаю 1-ю строку радиообмена, первая строка обновляется .. этого не происходит ... когда я нажимаю 1-ю строку, вторая строка обновляется .. проверьте сами жить пожалуйста --->http://albsocial.us/seria.phpОшибка PHP при отправке

<?php 

include("connect.php"); 

    $query = "SELECT * FROM test ORDER BY `id` DESC 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 $home, " - ", $away,"<br/>"; 

     echo "<form action='' method='post'> 

     <input type='hidden' name='id' value='".$row['id']."'> 

     <input type='radio' name='select' value='1'>1 
     <input type='radio' name='select' value='X'>X 
     <input type='radio' name='select' value='2'>2 

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

     </form> 
     "; 

     echo $home, " -> ", $win; 
     echo "<br/>Barazim -> ", $draw,"<br/>"; 
     echo $away, " -> ", $lose,"<hr/>"; 
    } 

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

    if (isset($_POST) && $_POST['select'] == 1){ 
     $select = $_POST['select']; 
     $select = $win + $select; 
     mysql_query("UPDATE test SET win='$select' WHERE id='$id'"); 
     header('Location: ../seria.php'); 
    }else if (isset($_POST) && $_POST['select'] == 'X'){ 
     $select = $_POST['select']; 
     $select = '1'; 
     $select = $draw + $select; 
     mysql_query("UPDATE test SET draw='$select' WHERE id='$id'"); 
     header('Location: ../seria.php'); 
    }else if (isset($_POST) && $_POST['select'] == 2){ 
     $select = $_POST['select']; 
     $select = '1'; 
     $select = $lose + $select; 
     mysql_query("UPDATE test SET lose='$select' WHERE id='$id'"); 
     header('Location: ../seria.php'); 
    } 

    ?> 
+0

Вбрасывание в скрытом ввода с значение id? –

ответ

0

Ваш цикл в то время как всегда будет оставить $id набор на идентификатор последней строки в наборе данных.

Вам понадобится способ отправки идентификатора для каждой строки в вашей форме. Затем получите это значение, когда вы извлекаете переменные POST.

Если вы правильно структурируете, вам не нужно будет перенаправлять заголовок.

Кроме того, я предлагаю переместить тест isset($_POST) в его собственный оператор if, так что ни один из этих кодов не будет выполнен, если ничего не опубликовано.

Вот как я бы переработать его:

<?php 

include("connect.php"); 


// if data is submitted, update database 
if (!empty($_POST)) { 

    $id = isset($_POST['id']) && is_numeric($_POST['id']) ? $_POST['id'] : false; 
    $select = isset($_POST['select'])&&in_array($_POST['select'],array('win','lose','draw')) ? $_POST['select'] : false; 

    if ($id && $select) { 
    $sql="UPDATE `test` SET `$select`=`$select`+1 WHERE `id`='$id';"; 
    mysql_query($sql) or die(mysql_error()); 
    } 

} 


// get data from database 
$query = "SELECT * FROM test ORDER BY `id` DESC LIMIT 2"; 
$result = mysql_query($query) or die(mysql_error()); 

// output 
?><h2>Seria A</h2><hr/><?php 

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

    ?><p><?=$row['home']?> - <?=$row['away']?></p> 

    <form action="" method="post"> 
     <input type="hidden" name="id" value="<?=$row['id']?>"> 
     <input type="radio" name="select" value="win">1 
     <input type="radio" name="select" value="draw">X 
     <input type="radio" name="select" value="lose">2 
     <input type="submit" name="submit" value="Submit"> 
    </form> 

    <p><?=$row['home']?> -> <?=$row['win']?></p> 
    <p>Barazim -> <?=$row['draw']?></p> 
    <p><?=$row['away']?> -> <?=$row['lose']?></p><?php 

} 


?> 

Кстати, как вы обработки «домой» против «прочь» игры?

+0

Эй, спасибо тебе за помощь. Где я должен включать $ id = isset ($ _ POST ['id']) && is_numeric ($ _ POST ['id'])? $ _ POST ['id']: false; в каждом представлении, если у меня есть заявление? –

+0

Поскольку 'id' будет одинаковым независимо от значения' $ _POST ['select'] ', я думаю, вы должны добавить его только один раз, перед вашим первым оператором if:' if (isset ($ _ POST) && $ _POST ['select'] == 1) {'Я отредактировал свой ответ соответственно. – showdev

+0

Я включил мой обновленный код .. вы можете проверить его onlone а также @showdev на www.albsocial.us/seria.php –

0

проблема с вашей кнопкой имя. вы должны указать каждое имя своей кнопки, другое имя друг от друга, чтобы сервер знал, какая форма отправляется. Вы могли бы попытаться дать свое имя кнопки на основе идентификатора, как это:

<input type='submit' name='submit<?php echo $id; ?>' value='Submit'/> 

, то вы могли бы сделать условный оператор, чтобы увидеть, какая кнопка нажата, как это:

if (isset($_POST['submit$id'])) { } 
+0

Это еще один метод, но сложнее разобрать имя кнопки, чтобы получить значение id. Вместо этого вам нужно создать оператор if для каждого возможного имени кнопки, который не кажется очень масштабируемым. – showdev

+0

Ну, это не работает для меня :( –

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