2016-06-30 3 views
0

Предполагается, что данные из базы данных получены и отображаются в таблице. На каждой записи есть текстовое поле, в которое можно вставить номер квитанции и отправить. При отправке номер квитанции должен быть вставлен в базу данных для этой записи, а страница перезагружает отображение вставленной записи вместо текстового поля. Я не уверен, что я делаю неправильно, потому что страница загружается на пустую страницу.Отправить форму из таблицы HTML PHP

$sql = "SELECT * FROM customer"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

    echo " <table><tr><th>ID</th><th>Name</th> 
<th>Amount</th><th>TransactionID</th><th>Mobile Number</th> 
<th>Time Paid</th><th>Account</th> 
<th>Receipt Number</th></tr>"; 

    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<tr><td>" . $row["id"]. "</td> 
<td>" . $row["name"]. "</td><td>" . $row["amount"]. "</td> 
<td>" . $row["trans_id"]. "</td><td>" . $row["msisdn"]. "</td> 
<td>" . $row["time_paid"]. "</td> 
<td>" . $row["status"]. "</td> 
<td><form action= 'receipt.php' method='post'> 
    <input type ='text' name='receipt'> 
    <input type ='hidden' name='hidden' value='".$row["receipt"]."'> 
    <input type='submit' name='submit' value='submit'></td></form></tr>"; 
} 
echo "</table> "; 


// receipt.php 

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

//connection 

$sql = "INSERT INTO customer (receipt, date_entered) VALUES ('" . $_POST['receipt'] . "','NOW()')"; 


if ($conn->query($sql) === TRUE) { 

    // echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 


header('Location: http://localhost/com/payf.php'); 
} 
    else { 
    echo "Please Enter the Receipt Number"; 
    header('Location: http://localhost/com/payf.php'); 
    } 
+0

Чтобы он отображался на каждой записи, полученной из базы данных –

+0

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

+0

Похоже, вы не входите в это условие. if ($ result-> num_rows> 0) {попробуйте повторить ряд строк результата и убедитесь, что он соответствует этим критериям – Jeff

ответ

0

в вашем файле receipt.php;

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>title</title> 
    </head> 
    <body> 
<?php 

//NEW 
    $servername = "example.com"; 
    $username = "username"; 
    $password = "password"; 
    $dbname = "database"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
//NEW 

$sql = "SELECT * FROM customer"; 
$result = $conn->query($sql); 


if ($result->num_rows > 0) { 

    echo " <table><tr><th>ID</th><th>Name</th> 
<th>Amount</th><th>TransactionID</th><th>Mobile Number</th> 
<th>Time Paid</th><th>Account</th> 
<th>Receipt Number</th></tr>"; 

    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<tr><td>" . $row["id"]. "</td> 
<td>" . $row["name"]. "</td><td>" . $row["amount"]. "</td> 
<td>" . $row["trans_id"]. "</td><td>" . $row["msisdn"]. "</td> 
<td>" . $row["time_paid"]. "</td> 
<td>" . $row["status"]. "</td> 
<td><form action= 'receipt.php' method='post'> 
    <input type ='text' name='receipt'> 
    <input type ='hidden' name='tid' value='".$row["id"]."'> 
    <input type='submit' name='submit' value='submit'></td></form></tr>"; 
} 
echo "</table>"; 
} else { //FIX ************ 
    echo "no results"; 
} 
// receipt.php 

if(isset($_POST['submit'])) { 
    //connection 
    //$sql = "INSERT INTO customer (receipt, date_entered) VALUES ('".$_POST['receipt']."',NOW())"; //FIX *** 
    $sql = "UPDATE customer SET `receipt` = '".$_POST['receipt']."', `date_entered` = NOW() WHERE `id` = '".$_POST['tid']."'"; //NEW 
    if ($conn->query($sql) === TRUE) { 
    // echo "New record created successfully"; 
    } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
     exit(); //NEW 
    } 

    $conn->close(); 
    header("Location: http://{$servername}/project/payf.php"); //FIX ************ 
} else { 
    //echo "Please Enter the Receipt Number"; //FIX ************ this goes into payf.php 
    //header("Location: http://{$servername}/project/payf.php");//FIX ******** this redirects when main table is dispayed 
    } 
echo "</body></html>"; 

?> 
</body></html> 

много вопросов в этом коде, как в комментариях

  • эхо, прежде чем заголовок перенаправления
  • нет установки $ сопп
  • перенаправлять когда таблица отображается
  • отсутствует закрывающая скобка
  • неправильный SQL синтаксис (кавычки)
  • вставить вместо этого обновления
  • бедных HTML
  • бедных структура

пожалуйста, просмотрите эти страницы;

  • соединение MySQLi и выберите here
  • MySQLi обновление here
  • HTML структура here
  • PHP и MySQL учебник youtube
  • PHP учебник youtube

этот код является функциональным и проверено. счастливое кодирование!

+0

ahh только что отметил, что вы //receipt.php посередине. теперь предположим, что вы показываете два файла не один. вы должны разбить это на два блока кода. Я полностью пропустил это и сделал этот функционал из одного файла. – 2114L3

+0

Собирался спросить вас то же самое. Так что все остальное стоит для остановки? @ 2114L3 –

+0

приведенный выше код является одним файлом. отображается для получения.php. если вы хотите переименовать, измените имя в форме на новое. если вы хотите разделить его на два, вам придется повторно объявить $ conn и очистить html – 2114L3

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