2015-08-29 6 views
-2

Я использую форму, и у меня есть три кнопки отправки. Изменить, Удалить и Сбросить, но кнопки «Удалить» и «Сброс» не работают.три кнопки отправки в одной форме html и mysql запросы

Я что-то не так?

echo '<form action="" method="post"> 
    <input type="text" name="login" value="'.htmlspecialchars($object['login']).'" placeholder="Login" /><input type="text" name="password" value="'.htmlspecialchars($object['password']).'" placeholder="Password" /> 
     <input type="submit" value="Edit" /> 
     <input type="hidden" name="action" value="edit" /> 
     <input type="hidden" name="id" value="'.$object['id'].'" /> 
     <input type="submit" value="Delete" /> 
     <input type="hidden" name="action" value="dell" /> 
     <input type="submit" value="Reset" /> 
     <input type="hidden" name="action" value="res" /> 
</form>; 

В PHP это выглядит как

if($_POST){ 
$action=(string)$_POST['action']; 
$id=(int)$_POST['id']; 
$name=(string)$_POST['name']; 

$name=trim($_POST['name']); 
$name=htmlspecialchars($name,ENT_QUOTES); 

    if($action=='add' && $name){ 
    mysql_query("INSERT INTO `stages` SET 
    `name`='".mysql_real_escape_string($name)."'"); 
    } else if($action=='edit' && $name){ 
    mysql_query("UPDATE `stages` SET 
    `name`='".mysql_real_escape_string($name)."' 
    WHERE `id`='".$id."' LIMIT 1"); 
    } else if($action=='edit'){ 
       mysql_query("DELETE FROM `stages` WHERE `id`='".$id."' LIMIT 1"); 
    mysql_query("DELETE FROM `questions` WHERE `stage_id`='".$id."'"); 
    } else if($action=='dell'){ 
    mysql_query("DELETE FROM `stages` WHERE `id`='".$id."' LIMIT 1"); 
    mysql_query("DELETE FROM `questions` WHERE `stage_id`='".$id."'"); 
    } else if($action=='reset'){ 
    mysql_query("UPDATE `stages` SET 
    `name`=NULL 
    WHERE `id`='".$id."' LIMIT 1"); 

    } 
} 
+1

Сначала прочитайте http://stackoverflow.com/help/mcve –

+0

В форме нет поля с именем «имя», поэтому он не получит POSTED. Каждая из кнопок - кнопка отправки, так что это лотерея, поля которой фактически будут обрабатываться скриптом php после отправки формы. Где «имя» получает свою ценность? – RamRaider

ответ

0

Это может быть больше рода, что вам нужно, чтобы сделать эту работу - хотя это не тестировалась.

<?php 
echo ' 
<form id="actions" action="" method="post"> 
    <input type="text" name="login" value="'.htmlspecialchars($object['login']).'" placeholder="Login" /> 
    <input type="text" name="password" value="'.htmlspecialchars($object['password']).'" placeholder="Password" /> 

    <input type="button" value="Edit" data-action="edit" /> 
    <input type="button" value="Delete" data-action="dell" /> 
    <input type="button" value="Reset" data-action="res" /> 

    <input type="hidden" id="id" name="id" value="'.$object['id'].'" /> 
    <input type="hidden" id="action" name="action" /> 
</form> 

<script type="text/javascript"> 
    var col=document.getElementById("actions").querySelectorAll("input[type=\'button\']"); 
    if(col){ 
     for(var n in col)if(n && col[n] && col[n].nodeType==1) col[n].addEventListener(\'click\', function(e){ 
      document.getElementById("action").value=this.dataset.action; 
      this.parentNode.submit(); 
     }.bind(col[n]),false); 
    } 
</script>'; 


    if($_POST){ 
     $action=(string)$_POST['action']; 
     $id=(int)$_POST['id']; 
     $name=(string)$_POST['name']; 

     $name=trim($_POST['name']); 
     $name=htmlspecialchars($name,ENT_QUOTES); 

     if($action=='add' && $name){ 
      mysql_query("INSERT INTO `stages` SET `name`='".mysql_real_escape_string($name)."'"); 
     } else if($action=='edit' && $name){ 
      mysql_query("UPDATE `stages` SET `name`='".mysql_real_escape_string($name)."' WHERE `id`='".$id."' LIMIT 1"); 
     } else if($action=='edit'){ 
      mysql_query("DELETE FROM `stages` WHERE `id`='".$id."' LIMIT 1"); 
      mysql_query("DELETE FROM `questions` WHERE `stage_id`='".$id."'"); 
     } else if($action=='dell'){ 
      mysql_query("DELETE FROM `stages` WHERE `id`='".$id."' LIMIT 1"); 
      mysql_query("DELETE FROM `questions` WHERE `stage_id`='".$id."'"); 
     } else if($action=='reset'){ 
      mysql_query("UPDATE `stages` SET `name`=NULL WHERE `id`='".$id."' LIMIT 1"); 
     } 
    } 

?> 

Кнопки будут вызывать функцию javascript, которая затем отправляет форму с соответствующим действием и другими параметрами.

+0

К сожалению, кнопки не работают – Valentina

+0

Получаете ли вы какие-либо ошибки в консоли, потому что я сейчас тестировал и отправляет форму, как ожидалось? – RamRaider

+0

Я бы предположил, что вы создаете операторы sql как переменные для каждого действия и эхо из них после отправки формы, чтобы вы могли видеть, как выглядит sql. Отредактируйте их, если они выглядят неправильно, и как только вы на самом деле вызываете функцию mysql_query. Кроме того, вы можете опустить оператор 'limit 1' из инструкции delete – RamRaider

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