MySQL, PHP - Formlar Yardım

1 Cevap php

Selamlar,

Ben aşağıdaki kodu var

          <?       
        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");
      }
      ?>

Screenshot of the form : http://img395.imageshack.us/my.php?image=1226818203913yi6.png

Kullanıcıların giriş onlar veri eklemek için gereken kaç satır ve sütun. Sütun 5 ise ekran görüntüsünde benim satırlar 10 olduğunu.

Now the part where i stuck is, how can i make sure, all inputted data in < input type="text" name="kpistatus" id="kpistatus"> get saved in kpistatus mysql table..

Lütfen bana yardımcı olun.

Teşekkürler.

1 Cevap

Bir input adını köşeli parantez koyarsanız, php otomatik sonrası dizi sizin için bir diziye dönecek. Sonra sadece yineleme ve bunları gerektiği gibi kaydedebilirsiniz. Formdaki, sen vereceğini

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

(İki parantez eklenmesini Not).

Sonra, form işleme kodu, sen $_POST['kpistatus'] bir dizi olarak olurdu. Sen implode(',', $_POST['kpistatus'] gibi bir şey yaparak bir virgülle ayrılmış liste haline çevirmek için PHP'nin implode işlevini kullanabilirsiniz.

Hızlı bir not:

Kodunuzda, size bunları eklemeden önce tüm değişkenler üzerine mysql_real_escape_string kullanmanız gerekir. Aksi takdirde, bir kullanıcı girişlerinden birine SQL kodunu girmek ve onlar (bu SQL enjeksiyonu) denir istedi ne yapmak mümkün olabilir.

Birisi kendi statü dizge içinde bir tek teklif olsaydı ne olacağını düşünün. En iyi ihtimalle, bir hata neden olur en kötü ihtimalle onlar veri üzerine veya silmek olabilir.

Üzgünüz, bu sizin için açıktır, ama ben sadece onu karşılamak için emin olmak istiyorsanız.