MySQL, PHP - Справка по формам - PullRequest
0 голосов
/ 16 ноября 2008

Привет,

У меня есть следующий код

          <?       
        include("conn.php");
        $sn=$_GET["sn"];
        $sql="select * from kpi where no='$sn'";

        $result=mysql_query($sql,$connection) or die(mysql_error());
        while($row=mysql_fetch_array($result)) {
            $sn=$row['id'];
            $no=$row['no'];
            $pdetails=$row['pdetails'];
            $kpistatus=$row['kpistatus'];
            $status=$row['status'];
            $cols=$row['cols'];
            $rows=$row['rows'];
        }
    ?>

    <form name="form1" method="post" action="formsubmit.php?mode=addtable">
        <table width="100%" border="1" align="center" cellpadding="2" cellspacing="2">
          <tr>
            <td colspan="2"><strong>Add Table</strong></td>
               </td>
          </tr>
          <tr>
            <td>NO</td>
            <td><input name="no" type="text" id="no" value="<? echo $no; ?>"></td>
          </tr>
          <tr>
            <td>PROJECT DETAILS</td>
            <td><textarea name="pdetails" rows="10" cols="100"><? echo $pdetails; ?></textarea></td>
          </tr>
                        <tr>
            <td>KPISTATUS</td>
            <td>
            <?
            echo "<table border=\"1\" align=\"left\">\n";
            $j=0;
            while ($j < $rows) 
            {
            echo "<tr>\n";
            $i=0;
            while ($i < $cols) 
            {
            ?>
            <td><input type="text" name="kpistatus" id="kpistatus"></td>
            <?
            $i++;
            }       
            echo "</tr>\n";
            $j++;
            }
            echo "</table>\n";
            ?>
            </td>
            </tr>
            <tr>
            <td>STATUS</td>
            <td><textarea name="status" rows="10" cols="100"><? echo $status; ?></textarea></td>
          </tr>
          <tr>
            <td colspan="2"><input type="submit" name="Submit" value="ADD TABLE"></td>
          </tr>
        </table>
      </form>
        elseif($mode=="addtable") {
        $no=$_POST["no"];
        $pdetails=$_POST["pdetails"];
        $kpistatus=$_POST["kpistatus"];
        $status=$_POST["status"];
        $sn=$_POST["id"];
        $sql="update kpi set pdetails='$pdetails',kpistatus='$kpistatus',status='$status' where no='$no'";
        //echo $sql;
        $result=mysql_query($sql,$connection) or die(mysql_error());
        //header("location: index.php");
      }
      ?>

Скриншот формы: http://img395.imageshack.us/my.php?image=1226818203913yi6.png

Пользователи могут ввести, сколько строк и столбцов им нужно для вставки данных. На скриншоте мои строки 10, тогда как столбец 5.

Теперь часть, где я застрял, как я могу убедиться, что все введенные данные в сохранить в таблице kpistatus mysql

Пожалуйста, помогите мне.

Спасибо.

1 Ответ

4 голосов
/ 16 ноября 2008

Если вы поместите квадратные скобки в имя input, php автоматически превратит их в массив для вас в массиве post. Затем вы можете просто пройти через это и сохранить их по мере необходимости. В вашей форме вы бы положили

<input type="text" name="kpistatus[]" id="kpistatus">

(обратите внимание на добавление двух скобок).

Тогда в вашем коде обработки формы вы будете иметь $_POST['kpistatus'] в качестве массива. Вы можете использовать функцию PHP implode, чтобы превратить этот список в список через запятую, выполнив что-то вроде implode(',', $_POST['kpistatus'].

Краткое примечание:

В вашем коде вам нужно использовать mysql_real_escape_string для всех ваших переменных, прежде чем вставлять их. В противном случае пользователь может ввести код SQL в один из входов и иметь возможность делать все, что ему нужно (это называется инъекцией SQL).

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

Извините, если это очевидно для вас, но я просто хочу убедиться, что это скрыто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...