2015-11-01 5 views
1

Попытка сократить его. У меня есть цикл в то время как grid.php файл, чтобы заполнить таблицу как таковой ...Запрос UPDATE не работает php

<?php while($product = $products->fetch_assoc()) { ?> 
    <tr> 
    <td><?php echo $product['cd_id']?></td> 
    <td><?php echo $product['cd_title']?></td> 
    <td><?php echo $product['cd_musician_fname']?></td> 
    <td><?php echo $product['cd_musician_lname']?></td> 
    <td><?php echo $product['cd_price']?></td> 
    <td><a href="edit.php?id=<?echo $product['cd_id'];?>" type="button" class="btn btn-primary">Edit</a></td> 
    <td><a href="delete.php?id=<?echo $product['cd_id'];?>" type="button" class="btn btn-danger">Delete</a></td> 
    </tr> 
<?php } ?> 

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

<?php include '_includes/db.php'; 
$cd_id = trim($_GET['id']); 
$message = ''; 
include '_includes/connection.php'; 
if($db->connect_error){ 
    $message = $db->connect_error; 
}else{ 
    $sql = "SELECT * FROM CD WHERE cd_id = $cd_id"; 
    $result = $db->query($sql); 
    $row = $result->fetch_assoc(); 
    if($db->error){ 
    $message = $db->error; 
    } 
} 
?> 

Теперь я покажу HTML из edit.php

<!--  Product Musician last name--> 
     <fieldset class="form-group"> 
     <label for="cd_musician_lname">Musician's lirst name</label> 
     <input type="text" class="form-control" id="cd_musician_lname" name="cd_musician_lname" value="<?php echo $row['cd_musician_lname'];?>"> 
     </fieldset> 
     <!--  End of Musician last name--> 

     <!--  Product price--> 
     <fieldset class="form-group"> 
     <label for="cd_price">Product price</label> 
     <input type="text" class="form-control" id="cd_price" name="cd_price" value="<?php echo $row['cd_price'];?>"> 
     </fieldset> 
     <!-- End of Product price--> 

     <!-- Form submit button--> 
     <a href="edit_confirm.php?id=<?echo $row['cd_id'];?>" type="submit" class="btn btn-primary">Update Record</a> 
     <a class="btn btn-primary" href="index.php" role="button">Go Back Home</a> 

У меня есть страница edit.php работает просто отлично, но если внести изменения в поля и нажмите отправить якорный тег, я получаю все поля строки пустые, но PK. Вот код для окончательного edit_confirm.php файла

<?php 
include '_includes/db.php'; 

$cd_id    = trim($_GET['id']); 
$cd_title   = $_POST['cd_title']; 
$cd_musician_fname = $_POST['cd_musician_fname']; 
$cd_musician_lname = $_POST['cd_musician_lname']; 
$cd_price   = $_POST['cd_price']; 

$message = ''; 
include '_includes/connection.php'; 

if($db->connect_error){ 
    die("Connection failed: ".$db->connect_error); 
} else { 
$sql = "UPDATE CD SET cd_title='".$cd_title."', cd_musician_fname='". 
$cd_musician_fname."', cd_musician_lname='". 
$cd_musician_lname."', cd_price='".$cd_price."' WHERE cd_id = $cd_id "; 
$db->query($sql); 
var_dump($sql); 
} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<?php include '_includes/main-head.php';?> 
</head> 
    <body> 
    <?php include '_includes/main-navbar.php';?> 

    <div class="container"> 
    <hr> 
    <?php 
    if($db->query($sql) === TRUE){ ?> 
     <h1>Record updated successfully.</h1> 
     <?php echo $cd_title; ?> 
     <?php echo $record->affected_rows ?> 
     <p> record was updated in the database.</p></br> 
    <?php } else { ?> 
    <p>Error updating the record: </p> <?php $db->error; ?> 
    <?php }; ?> 


    <hr> 
    <a class="btn btn-primary" href="index.php" role="button">Go Back Home</a> 
    </div> 
    <?php include '_includes/main-script.php';?> 
    </body> 
</html> 

Если вы заметили в edit_confirm.php я сделал var_dump, чтобы увидеть, какие значения в переменных, и это показывает пустой.

Мне нужна помощь в этом. Спасибо заранее.

+0

У вас есть короткие теги включен? '' (Не использовав короткие теги, когда-либо, я не уверен, что эхо может столкнуться с этим даже). Вы также не должны просто передавать пользовательский ввод напрямую в SQL. – chris85

+0

Cd_price заключен в кавычки. Является ли это типом данных типа char или number? –

+0

Я не знаю, включены ли короткие теги. Я просто добавляю php, который отсутствовал. Я думаю, что один был единственным. – Gilbert

ответ

2

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

formsample.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
    </head> 

    <body> 
    <?php 
    include("connection.php"); 
    $id = $_GET['id']; 
    $query= "select * from clients where id = '$id'"; 

    $sql = mysqli_query($connect, $query); 
    $result = mysqli_fetch_assoc($sql); 
    ?> 
    <form action="process.php" method="post"> 
    <input type="text" name="name" id="name" value="<?php echo $result['name'] ?>" /> 
    <input type="text" name="email" id="email" value="<?php echo $result['email'] ?>" /> 
    <input type="hidden" name="id" id="id" value="<?php echo $id?>" /> 
    <input type="submit" /> 
    </form> 
    </body> 
    </html> 

process.php

 <?php 
    include("connection.php"); 
    $id = $_POST['id']; 
    $name = $_POST['name']; 
    $email= $_POST['email']; 
    $query = "UPDATE clients set name= '$name', email ='$email' where id = '$id'"; 
    $sql = mysqli_query($connect, $query); 


    ?> 
+0

Он пуст. Не знаю, почему это не получает ценность с поста. – Gilbert

+0

Попробуйте опубликовать его в другом php-файле в действии формы формы action = 'dostuff.php' в другом файле u отладить результат –

1
<a href="edit_confirm.php?id=<?echo $row['cd_id'];?>" type="submit" class="btn btn-primary">Update Record</a> 

Это не правильный способ отправить форму - она ​​не будет работать вообще.

Необходимо иметь открывающий и закрывающий тег формы, адрес цели находится в атрибуте действия элемента формы, а метод также включен и должен быть сообщением для этой формы (method="POST"). В вашем коде у вас есть ссылка, в которой у вас должен быть вход для отправки, поэтому он не будет отправлять данные, он просто перенаправит вас на этот URL. Вы должны иметь что-то вроде этого:

<input type="submit" value="Update Record" /> 

http://www.w3schools.com/html/html_forms.asp

+0

Это оболочка в тегах формы. Я просто прошёл последний раз до полей. – Gilbert

+0

Тег 'a' все равно не будет работать (даже если' type = "submit" 'в нем), он не отправляет форму, просто перенаправляя вас. – Octo

+0

Хороший ответ. Может захотеть называть входной файл, так что есть только одна вещь, чтобы проверить, отправлена ​​ли страница. – Terminus