2015-06-03 2 views
0

Как получить данные из таблицы SQL, изменить данные и сохранить их в другой таблице базы данных с несколькими строками столбцов & и с одной кнопкой отправки. Я хочу вставить все строки в время я не знаю, как получить, что скрытое значение и правильно работать с этимВставить несколько строк данных одной кнопкой отправки, используя php

<?php 
include"connect_database.php"; 
if(isset($_POST['submit'])) { 
     $amt = $_POST['total']; 
     if($amt > 0) { 
       $qry = "INSERT INTO attendance(rollno, name, year, attendance, reason) VALUES "; // Split the mysql_query 
       for($i=1; $i<=$amt; $i++) { 
         $qry .= "('".$_POST["rollno$i"]."', '".$_POST["name$i"]."', '".$_POST["year$i"]."', '".$_POST["attendance$i"]."', '".$_POST["reason$i"]."'),"; // loop the mysql_query values to avoid more server loding time 
       } 
       $qry = substr($qry, 0, strlen($qry)-2); 
       $insert = mysqli_query($dbcon, $qry); // Execute the mysql_query 
     } 
// Redirect for each cases 
     if($insert) { 
       $msg = '<script type="text/javascript">alert("added");</script>'; 
     } 
     else { 
       $msg = '<script type="text/javascript">alert("Server Error, Kindly Try Again");</script>'; 
     } 

}; 

if (isset($_POST['select'])) 
{ 
    $sql = "SELECT * FROM data WHERE year='" . $_POST['yr'] . "'"; 
$myData = mysqli_query($dbcon, $sql); 
$num = mysqli_num_rows($myData); 


    echo "<table border=1> 
    <tr> 
    <th>Rollno</th> 
    <th>Name</th> 
    <th>Year</th> 
    <th>Attendance</th> 
    <th>reason</th> 
    </tr>"; 

for ($i=0; $i <$num; $i++) 
{ 
$record = mysqli_fetch_array($myData); 
echo "<form action=smanage.php method=post>"; 
    echo "<tr>"; 
    echo "<td>" . "<input type=text name=rollno$i value=" . $record['rollno'] . " </td>"; 
    echo "<td>" . "<input type=text name=name$i value=" . $record['name'] . " </td>"; 
    echo "<td>" . "<input type=text name=year$i value=" . $record['year'] . " </td>"; 
echo "<td> "."<select name=attendance$i > 
     <option value=Present >present</option> 
     <option value=Absent >Absent</option> 
    </select>"."</td>"; 
    echo "<td>". "<textarea cols=15 rows=2 name=reason$i placeholder=Enter reason ...></textarea>" . "</td>" ; 
    echo "<td>" . "<input type=hidden name=total value=" . $i-1 . "</td>"; 
    echo "</tr>"; 


} 

echo"</table>"; 

echo "<input type=submit name=submit value=save class=Button3>"; 

echo "</form>"; 




}; 


mysqli_close($dbcon); 


?> 
+0

Возникает вопрос, как получить доступ к каждой строке таблицы? Я думаю, что ваша проблема здесь $ _POST ["rollno $ i"]. Я бы сделал так, чтобы изменить его так: $ _POST ["rollno". $ I] Сделав это изменение, вы можете успешно устранить эту переменную правильно. –

+0

Ваш вопрос должен быть четким и кратким. Непонятно –

ответ

0
<?php 
    include"connect_database.php"; 
    if(isset($_POST['submit'])) { 
      $amt = $_POST['total']; 
    $rollnos= $_POST['rollno']; 
      if($amt > 0) { 
        $qry = "INSERT INTO attendance(rollno, name, year, attendance, reason) VALUES "; // Split the mysql_query 
    $i=0; 
        foreach($rollnos as $rollno) { 
          $qry .= "('".$rollno."', '".$_POST["name"][$i]."', '".$_POST["year"][$i]."', '".$_POST["attendance"][$i]."', '".$_POST["reason"][$i]."'),"; // loop the mysql_query values to avoid more server loding time 
$i=$i+1; 
        } 
        $qry = substr($qry, 0, strlen($qry)-2); 
        $insert = mysqli_query($dbcon, $qry); // Execute the mysql_query 
      } 
    // Redirect for each cases 
      if($insert) { 
        $msg = '<script type="text/javascript">alert("added");</script>'; 
      } 
      else { 
        $msg = '<script type="text/javascript">alert("Server Error, Kindly Try Again");</script>'; 
      } 

    }; 

    if (isset($_POST['select'])) 
    { 
     $sql = "SELECT * FROM data WHERE year='" . $_POST['yr'] . "'"; 
    $myData = mysqli_query($dbcon, $sql); 
    $num = mysqli_num_rows($myData); 


     echo "<table border=1> 
     <tr> 
     <th>Rollno</th> 
     <th>Name</th> 
     <th>Year</th> 
     <th>Attendance</th> 
     <th>reason</th> 
     </tr>"; 

    for ($i=0; $i <$num; $i++) 
    { 
    $record = mysqli_fetch_array($myData); 
    echo "<form action=smanage.php method=post>"; 
     echo "<tr>"; 
     echo "<td>" . "<input type='text' name='rollno[]' value='" . $record['rollno'] . "'> </td>"; 
     echo "<td>" . "<input type='text' name='name[]' value='" . $record['name'] . "'> </td>"; 
     echo "<td>" . "<input type='text' name='year[]' value='" . $record['year'] . "'> </td>"; 
    echo "<td> "."<select name='attendance[]' > 
      <option value='Present' >present</option> 
      <option value='Absent' >Absent</option> 
     </select>"."</td>"; 
     echo "<td>". "<textarea cols='15' rows='2' name='reason[]' placeholder='Enter reason ...'></textarea>" . "</td>" ; 
     echo "<td></td>"; 
     echo "</tr>"; 


    } 
    echo "<input type='hidden' name='total' value='" . $i-1 . "'>"; 
    echo"</table>"; 

    echo "<input type='submit' name='submit' value='save' class='Button3'>"; 

    echo "</form>"; 




    }; 


    mysqli_close($dbcon); 


    ?> 
+0

по-прежнему возникает ошибка «неопределенная переменная: всего» – yoyo

+0

обновить ответ проверить сейчас –

+0

все еще показывает ту же ошибку. – yoyo

0

вы открывающимися нескольких форм, для каждой строки в вашей таблице на. Это приводит к тому, что ваш html недействителен, просто запустите форму перед отображением таблицы.

Вы можете использовать этот HTML

<table> 
<?php 
for ($i = 0; $i < $num; $i++) { 
    $record = mysqli_fetch_array($myData); 
?> 
    <tr> 
     <td><input type="text" name="rollno[<?= $record['rollno'] ?>]" value="<?= $record['rollno'] ?>" </td> 
     <td><input type="text" name="name[<?= $record['rollno'] ?>]" value="<?= $record['name']?>" </td> 
     <td><input type="text" name="year[<?= $record['rollno'] ?>]" value="<?= $record['year'] ?>" </td> 
     <td><select name="attendance[<?= $record['rollno'] ?>]" > 
       <option value="Present" >present</option> 
       <option value="Absent" >Absent</option> 
      </select></td> 
     <td><textarea cols="15" rows="2" name="reason[<?= $record['rollno'] ?>]" placeholder="Enter reason ..."></textarea></td> 
    </tr> 
<?php 
} 
?> 
</table> 

с этим ваши ценности будут в каждой строке будут введены в $ _POST-массив, вы можете получить доступ к значениям с помощью индексов (я предполагаю, что rollno представляет идентификатор набор данных). Если вы действительно хотите вставить все значения в таблицу, вы можете оставить индекс. Значение можно написать

<td><input type="text" name="rollno[]" value="<?= $record['rollno'] ?>" </td> 

Вместо

<td><input type="text" name="rollno[<?= $record['rollno'] ?>]" value="<?= $record['rollno'] ?>" </td> 

Вам не нужно скрытое поле, вы можете просто посчитать элементы в массиве.

$total = count($_POST['rollno']); 
+0

Я спрашиваю о вставке .... не извлекаю ... моя проблема в том, чтобы вставить несколько значений строк одной кнопкой отправки в базу данных ... – yoyo

+0

И мой html показывает, как вы можете создать свою форму и таблицу для отправки все данные в backend-script – Philipp

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