как выбрать разные строки из mysql и обновить их на одной странице

Я хочу выбрать несколько строк из базы данных sql. первый пользователь должен вставить две переменные, которые я могу выбрать в этих строках. затем на этой странице есть таблица, которая будет обновлять эти строки, но проблема в том, что когда я выбираю эти столбцы без входных данных, я могу обновить базу данных, но когда я хочу использовать входные переменные, она показывает таблицу, но не может ее обновить. где я ошибся?

выбор столбцов базы данных без использования входных данных:

<?php
include 'mytool.php';
        // username and password sent from form
    $myusername=$_SESSION["mys"];

    $host="localhost"; // Host name
    $username='username'; // Mysql username
    $password='password'; // Mysql password
    $db_name="db"; // Database name
    $tbl_name="test"; // Table name

    // Connect to server and select database.

     $link=mysql_connect($host,$username,$password)or die("cannot connect");
    $selected=mysql_select_db($db_name,$link)or die("cannot select DB");
    $sql="SELECT * FROM $tbl_name where classnum='106' and level='i4' ";

    $result=mysql_query($sql,$link);

    $count=mysql_num_rows($result);     

?>

входные переменные:

<form id="searchform" method="post" dir="rtl" action=""> 
                    level :<input name="level"  type="text" id="level" />
                    classnumber :<input name="classnum"  type="text" id="classnum" />

                           <input style="margin-top:10px; margin-left:120px; font-size: 14px;  padding: 5px 14px;" type="submit" value="search" name="enter"   />

                </form>

                <?php   
                    if(isset($_POST['enter'])){         
                    $sql="SELECT * FROM $tbl_name where classnum='106' and level='i4' ";

                    $result=mysql_query($sql,$link);

                    $count=mysql_num_rows($result);
                    }
                ?>

обновить код таблицы после кода выше:

 <form name="form1" action="" method="POST">
                                <center>
                                    <div>
                                        <div align="center" width = 615>
                                            <table class="stats" cellspacing="0" width="615" border="1">
                                                <tr>
                                                    <th width="20" scope="col" >Id</th>
                                                    <th width="60" scope="col">Name</th>
                                                    <th width="60" scope="col">Last Name</th>
                                                    <th width="42" scope="col">Midterm</th> 
                                                    <th width="54" scope="col">Class mark</th>
                                                    <th width="42" scope="col">Final Quiz</th>
                                                    <th width="54" scope="col">State</th>
                                                    <th width="54" scope="col">Details</th>

                                                </tr>
                                                <?php
                                                while($rows=mysql_fetch_array($result)){
                                                    $id[]=$rows['id']; 
                                                 ?>
                                                <tr>
                                                    <td align="center">
                                                    <input name="id[]" type="text" id="id" value="<? echo $rows['id']; ?>" >
                                                    </td>
                                                    <td align="center"><input type="text" name="name[]" id="name" value= "<? echo $rows['name']; ?>"  /></td>
                                                    <td align="center"><input type="text" name="lastname[]" id="lastname" value= "<? echo $rows['lastname']; ?>"  /></td> 
                                                    <td align="center"><input type="text" name="midmark[]" id="midmark" /></td>
                                                    <td align="center"><input type="text" name="classmark[]" id="classmark" /></td>
                                                    <td align="center"><input type="text" name="finalmark[]" id="finalmark" /></td>
                                                    <td align="center"><input type="text" name="state[]" id="state" /></td>
                                                    <td align="center"><input type="text" name="details[]" id="details"  /></td>

                                                </tr>
                                                <?php
                                                 }
                                                 ?>
                                            </table>
                                        </div>

                                <input type="submit" value="ثبت" name="Submit"   />
                                </form>

                                <?php
                                // Check if button name "Submit" is active, do this 
                                if(isset($_POST['Submit']))
                                {
                                     for($i=0;$i<$count;$i++)
                                     {
                                    $sql1=mysql_query(" UPDATE `".$tbl_name."` SET midmark='".$_REQUEST['midmark'][$i]."' , classmark='".$_REQUEST['classmark'][$i]."' , finalmark='".$_REQUEST['finalmark'][$i]."' , state='".$_REQUEST['state'][$i]."' , details='".$_REQUEST['details'][$i]."'  WHERE id='".$_REQUEST['id'][$i]."' ");
                                    $result1=mysql_query($sql1);
                                    }
                                }

                                    if($result1){
                                    header("location:results.php");
                                    }
                                    mysql_close();
                                ?>

person Mohammad_Hosseini    schedule 05.03.2013    source источник


Ответы (1)


сравните эти строки.

if(isset($_POST['Submit']))
           {
                for($i=0;$i<$count;$i++)
                 {
                    **$sql1=mysql_query(" UPDATE `".$tbl_name."` SET midmark='".$_REQUEST['midmark'][$i]."' , classmark='".$_REQUEST['classmark'][$i]."' , finalmark='".$_REQUEST['finalmark'][$i]."' , state='".$_REQUEST['state'][$i]."' , details='".$_REQUEST['details'][$i]."'  WHERE id='".$_REQUEST['id'][$i]."' ");
                    $result1=mysql_query($sql1);**
                 }
           }

с этими.

$sql1=" UPDATE `".$tbl_name."` SET midmark='".$_REQUEST['midmark'][$i]."' , classmark='".$_REQUEST['classmark'][$i]."' , finalmark='".$_REQUEST['finalmark'][$i]."' , state='".$_REQUEST['state'][$i]."' , details='".$_REQUEST['details'][$i]."'  WHERE id='".$_REQUEST['id'][$i]."' ";
$result1=mysql_query($sql1);
person user991554    schedule 05.03.2013
comment
можешь сказать поконкретнее? с какой строчкой? - person Mohammad_Hosseini; 05.03.2013
comment
Извините, но я запутался, что вы имеете в виду, сравнивая эти строки? разница между mysql_query в первом. Я удалил эту часть, но проблема осталась. - person Mohammad_Hosseini; 05.03.2013
comment
попробуйте добавить error_reporting(E_ALL) для ошибок. вставьте любую ошибку, если она произошла. - person user991554; 05.03.2013
comment
эти ошибки произошли :.......... Примечание: неопределенная переменная: результат /var/www/qeshmnewtechers/results.php в строке 206 ............ Предупреждение: mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, значение null указано в /var/www/qeshmnewtechers/results.php в строке 206.................................. Примечание: не определено переменная: подсчет в /var/www/qeshmnewtechers/results.php в строке 236.........Примечание: неопределенная переменная: result1 в /var/www/qeshmnewtechers/ results.php в строке 243 - person Mohammad_Hosseini; 05.03.2013
comment
Вы можете вставить строку №. 206 - person user991554; 05.03.2013
comment
строка 206: ‹?php while($rows=mysql_fetch_array($result)){ $id[]=$rows['id']; ?› - person Mohammad_Hosseini; 05.03.2013
comment
$sql=SELECT * FROM $tbl_name, где classnum='106' и level='i4'; - этот запрос имеет проблему. проверьте это в phpmyadmin или проверьте столбцы таблицы. - person user991554; 05.03.2013
comment
заранее спасибо за ваше внимание. это кодовая страница, в которой находятся все коды: dropbox.com/s /zbedsizmcbvfsgn/results.php?m - person Mohammad_Hosseini; 05.03.2013
comment
код не имеет проблем. существует ли эта тестовая таблица в БД со столбцами classnum и level? - person user991554; 05.03.2013
comment
Да, это так. это скриншот базы данных: dropbox.com/s/mfpsaygo1m2olyx/database.png? м - person Mohammad_Hosseini; 05.03.2013
comment
удалить ссылку $из строки $result=mysql_query($sql,$link); просто используйте $result=mysql_query($link); - person user991554; 05.03.2013
comment
в строке 159 на кодовой странице, которую я загружаю в Dropbox, я изменил ее, но она все равно не работает - person Mohammad_Hosseini; 05.03.2013
comment
удалить $link из всех вхождений. - person user991554; 05.03.2013
comment
еще один пункт заменяет этот запрос - $sql=SELECT * FROM $tbl_name where classnum='106' and level='i4' ; с $sql=SELECT * FROM $tbl_name, где classnum='106' и `level`='i4'; - person user991554; 05.03.2013
comment
Я сделал все, что вы сказали, но ничего не изменилось. см. обновленный код: dropbox.com/s/zbedsizmcbvfsgn/results.php?m - person Mohammad_Hosseini; 05.03.2013
comment
когда я меняю место строк: 157 159 161 на 116, это работает, но я не могу использовать ввод кодовой страницы: dropbox.com/s/zbedsizmcbvfsgn/results.php?m .............отредактированная кодовая страница: dropbox.com/s/gllu4zp02p7pfqt/resultsedited.php?m - person Mohammad_Hosseini; 05.03.2013
comment
смотри проблема в этом коде if(isset($_POST['enter'])){ .... когда я пишу этот код по неизвестной причине он не работает я не знаю почему ! но когда я стираю это как из кода, это работает !!! - person Mohammad_Hosseini; 05.03.2013
comment
Во-первых, в файле нет такого кода, как if(isset($_POST['enter'])){... это if(isset($_POST['Submit'])){... который определенно будет работать, так как имя кнопки отправки - Submit. попробуйте print_r($_POST), чтобы проверить это. - person user991554; 06.03.2013
comment
так вот проблема с submit . на этой странице есть две кнопки отправки: одна для ввода данных поиска, другая для обновления строк таблицы. Я обновил код следующим образом: dropbox.com/s/zbedsizmcbvfsgn/results.php? m ......... теперь, когда я загружаю oage, он передает первую кнопку отправки, не дожидаясь, пока пользователь нажмет ее, и будет ждать второй отправки !!! - person Mohammad_Hosseini; 06.03.2013
comment
измените имя кнопки формы поиска на «Поиск» или что-то в этом роде. - person user991554; 06.03.2013
comment
я изменил имя для поиска. тип — отправить. и если(isset($_POST['поиск'])){ . но он проходит так, как будто он всегда установлен. но когда я меняю команду if на: if(isset($_POST['Submit'])) она всегда отключена!!! - person Mohammad_Hosseini; 06.03.2013
comment
он не работает, он просто выбирает все строки и игнорирует кнопку отправки, но когда я меняю отправку на поиск, он работает, я имею в виду, что он просто создает таблицу, но когда я ее обновляю, ничего не произойдет - person Mohammad_Hosseini; 06.03.2013
comment
Пожалуйста, очистите ваше требование. 1. по умолчанию не показывать результат. 2.поиск 3.показать результат 4.обновить записи это ваше требование? - person user991554; 06.03.2013
comment
да 1- нет данных или информации . 2- поиск двух входов. 3- показать строки или столбцы из базы данных. 4- обновить их и снова вернуться на эту страницу. - person Mohammad_Hosseini; 06.03.2013
comment
Извините, но он не обновляет строки, он просто показывает выбранные строки, и я пробовал это раньше. - person Mohammad_Hosseini; 06.03.2013
comment
я обновил код. используйте этот код и дайте мне знать, если произошла какая-либо ошибка. dropbox.com/s/bqawbvuieod8igu/results.php?m - person user991554; 06.03.2013
comment
Я не знаю, как отблагодарить тебя. Это сработало Еще раз спасибо. еще одна вещь, есть ли способ сбросить входные значения после перезагрузки страницы? потому что после обновления страницы поисковые запросы все еще находятся в полях. - person Mohammad_Hosseini; 06.03.2013
comment
в конце концов. :). я сделал это изменение, потому что в сообщении говорится, что значения обновлены, и пользователю нужно видеть обновленные изменения, поэтому поток продолжался таким образом. вы можете изменить его так, как хотите. - person user991554; 06.03.2013