2016-03-04 2 views
1

У меня есть страница (auditplanentry.php), которая содержит элементы управления формой для ввода данных. после того, как данные будут сохранены в mysql, используя запрос PDO в том же файле php. Im, отображающий все данные в виде таблицы на другой странице PHP (auditplan.php). В том, что в каждой строке у меня есть кнопка редактирования, после нажатия на нее другая php-страница (auditplanedit.php) с теми же формами, которые заполняются данными из mysql. После редактирования это обновление im в mysql с помощью запроса Update на той же странице auditplanedit.php. Здесь я хочу знать, как я могу использовать ту же страницу auditplanentry.php как для входа, так и для обновления. Здесь im повторяет ту же форму управления кодированием на другой странице, кроме im, определяя значения для элементов управления из mysql.Вставьте и отредактируйте данные, используя ту же форму в php

Просто дайте мне понять, как это сделать.?

auditplanentry.php

<div class="form-group"> 
    <label class="control-label col-sm-2" for="pwd">Year:</label> 
    <div class="col-sm-5"> 
     <input type="text" class="form-control col-xs-3" id="year" name ="year"> 
    </div> 
</div> 

<div class="form-group"> 
    <label class="control-label col-sm-2" for="usr">Month:</label> 
    <div class="col-sm-5"> 
     <input type="text" class="form-control" id="month" name ="month"> 
    </div> 
</div> 

//query code: 

$sql = "INSERT INTO auditplan(auditid,year,month,status,comment) VALUES " . "(:audit, :year, :month, :status, :comment)"; 

     try {   
       $stmt = $DB->prepare($sql);    
       $stmt->bindValue(":audit", $audit); 
       $stmt->bindValue(":year", $year); 
       $stmt->bindValue(":month", $month); 
       $stmt->bindValue(":status", $status); 
       $stmt->bindValue(":comment", $comment); 
       // execute Query 
       $stmt->execute();   
      } 
      catch (Exception $ex) 
      { 
       $_SESSION["errorType"] = "danger"; 
       $_SESSION["errorMsg"] = $ex->getMessage(); 
      } 

auditplanedit.php

<?php 
include("config.php"); 
include("header.php"); 
try { 
    $sql = "SELECT * FROM auditplan WHERE id = :cid"; 
    $stmt = $DB->prepare($sql); 
    $stmt->bindValue(":cid",intval($_GET['cid'])); 
    $stmt->execute(); 
    $results = $stmt->fetchAll(); 
} catch (Exception $ex) { 
    echo $ex->getMessage(); 
} 

?>  
<div class="form-group"> 
     <label class="control-label col-sm-2" for="pwd">Year:</label> 
     <div class="col-sm-5"> 
      <input type="text" class="form-control col-xs-3" id="year" name ="year" value="<?php echo $results[0]["year"] ?>"> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label class="control-label col-sm-2" for="usr">Month:</label> 
     <div class="col-sm-5"> 
      <input type="text" class="form-control" id="month" name ="month" value="<?php echo $results[0]["month"] ?>"> 
     </div> 
    </div> 

//database query: 
$sql = "UPDATE auditplan SET auditid = :audit, year = :year, month = :month, status = :status, comment = :comment" . " WHERE id = :cid ";  

     try {   
       $stmt = $DB->prepare($sql);    
       $stmt->bindValue(":audit", $audit); 
       $stmt->bindValue(":year", $year); 
       $stmt->bindValue(":month", $month); 
       $stmt->bindValue(":status", $status); 
       $stmt->bindValue(":comment", $comment); 
       $stmt->bindValue(":cid", $cid);    
       $stmt->execute(); 
      } 
      catch (Exception $ex) 
      {     
       $_SESSION["errorMsg"] = $ex->getMessage(); 
      } 
     header("Location:auditplan.php"); 

Кнопки в auditplan.php:

<?php $getId = $row["id"];?> 
        <td> 
        <a href="auditplanedit.php?cid=<?php echo $getId; ?>"><i class="ion ion-edit"></i></a>&nbsp&nbsp &nbsp&nbsp; 
        <a href="deleteauditplan.php?cid=<?php echo $getId; ?>" onclick="return confirm('Are you sure?')"><i class="ion ion-close"></i></a>&nbsp;    
        </td> 
+0

Если действие является редактированием, вы можете установить параметр '$ _GET ['action']' как 'edit' на странице' auditplanentry.php'. Если '$ _GET ['action']' установлен для редактирования, тогда выберите записи и отобразите их в текстовых полях и измените имя кнопки отправки. После этого в 'auditplan.php' проверьте, опубликовано ли действие редактирования или нет, и выполните обновление/вставку. – Apb

+0

Вы можете использовать скрытое текстовое поле, в котором упоминаете свое действие .. Либо «новое», либо «обновление» .. Заполните это поле соответствующим образом. – Daniel

+0

Вы знакомы с синтаксисом 'INSERT ... UPDATE'? – Strawberry

ответ

0

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

if(isset($_GET['id'])) 
{ 
    // get record from table of that id and show into form 
    try 
    { 
     $sql = "SELECT * FROM auditplan WHERE id = :cid"; 
     $stmt = $DB->prepare($sql); 
     $stmt->bindValue(":cid",intval($_GET['cid'])); 
     $stmt->execute(); 
     $results = $stmt->fetchAll(); 
    } 
    catch (Exception $ex) 
    { 
     echo $ex->getMessage(); 
    } 
    // Show your form fields here.like below 
    ?> 
     <input type="text" class="form-control col-xs-3" id="year" name ="year" value="<?php echo $results[0]["year"] ?>"> 
    <?php 

} 
else 
{ 
    // Its create action , so show your form fields like 
?> 
    <input type="text" class="form-control col-xs-3" id="year" name ="year"> 
<?php 
} 
0

Вы можете использовать параметр $_GET, чтобы форма знала, если вы редактируете или нет.

Таким образом, вы PHP код будет выглядеть примерно так:

<?php 

if($_GET['act']=="edit"){ // If $_GET['act'] equals to 'edit' 
    // Select query 

try { 
    $sql = "SELECT * FROM auditplan WHERE id = :cid"; 
    $stmt = $DB->prepare($sql); 
    $stmt->bindValue(":cid",intval($_GET['cid'])); 
    $stmt->execute(); 
    $results = $stmt->fetchAll(); 
} catch (Exception $ex) { 
    echo $ex->getMessage(); 
} 

    if(isset($_POST['submit'])){ 
    // Edit query 
    $sql = "UPDATE auditplan SET auditid = :audit, year = :year, month = :month, status = :status, comment = :comment" . " WHERE id = :cid ";  

     try {   
       $stmt = $DB->prepare($sql);    
       $stmt->bindValue(":audit", $audit); 
       $stmt->bindValue(":year", $year); 
       $stmt->bindValue(":month", $month); 
       $stmt->bindValue(":status", $status); 
       $stmt->bindValue(":comment", $comment); 
       $stmt->bindValue(":cid", $cid);    
       $stmt->execute(); 
      } 
      catch (Exception $ex) 
      {     
       $_SESSION["errorMsg"] = $ex->getMessage(); 
      } 
     header("Location:auditplan.php"); 
    } 

}else{ // if $_GET['act'] doesn't equal to 'edit' 

if(isset($_POST['submit'])){ 

    // Add query  
    $sql = "INSERT INTO auditplan(auditid,year,month,status,comment) VALUES " . "(:audit, :year, :month, :status, :comment)"; 
    try {   
     $stmt = $DB->prepare($sql);    
     $stmt->bindValue(":audit", $audit); 
     $stmt->bindValue(":year", $year); 
     $stmt->bindValue(":month", $month); 
     $stmt->bindValue(":status", $status); 
     $stmt->bindValue(":comment", $comment); 
     // execute Query 
     $stmt->execute();   
     } 
     catch (Exception $ex) 
     { 
     $_SESSION["errorType"] = "danger"; 
     $_SESSION["errorMsg"] = $ex->getMessage(); 
     }  
    } 
} 

?> 

Вы HTML форма будет выглядеть примерно так:

<form method="POST"> 
    <input type="text" name="day" value="<?php echo isset($_GET['act']) && $_GET['act']=="edit" ? $results[0]["day"] : ""; ?>" /> 
    <input type="text" name="month" value="<?php echo isset($_GET['act']) && $_GET['act']=="edit" ? $results[0]["month"] : ""; ?>" /> 
    <input type="submit" name="submit"/> 
</form> 

И вы ссылка будет выглядеть примерно так:

<a href="script.php/">add</a> 
<a href="script.php?act=edit&cid=<?php echo $getId; ?>">Edit</a> 
-1

В вашем макете .. Просто вставьте символ @ перед значениями, которые вы хотите отобразить в форме. Вставка символа @ указывает компилятору подавить ошибку из-за необъявленной переменной, когда страница вызвала добавление новых данных. Следовательно, ваша страница будет выглядеть так:

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