2

PHP ページ上のフォームを使用して Mysql テーブルを更新すると、送信を押してもページが自動的に更新されません。更新された行を表示するには、更新を押す必要があります。私は試しましたが、これはうまくいきませんでしたか?

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

///////////////////////Edited Bottom////////////////////////////////////////////////////////

<?php

include ("../header.php");
include ("../header2.php");

?>
<?php
include('../config.php');
include ('../ac.thumbs.php');

 if ($_GET['sil']) {
    $sil = htmlspecialchars(stripslashes($_GET['sil']));
    mysql_query("DELETE FROM CloseOut WHERE itemNO = $sil limit 1");
    echo "<h1>$sil item nolu kayit silinmistir</h1><br>";
}

    $edit = htmlspecialchars(stripslashes($_GET['edit']));
 $data = mysql_query("SELECT * FROM CloseOut WHERE itemNO=$edit") or die(mysql_error()); 

 //Puts it into an array 
 while($info = mysql_fetch_array( $data )) 
 { echo "
<center>
<a href=\"edit.php?sil=$info[itemNO]\"onclick=\"return confirm('Do you really want to erase this entry?')\">[ Delete ]</a><br>
<a href=../../large.php?f=upload/".$info['resim'], $thumblarge .">
<img src=../../small.php?f=upload/".$info['resim'], $thumbsmall .">
</a>";
$editresim = $info[resim];
$editisim = $info[isim];
$editalan1 = $info[alan1];
$editalan2 = $info[alan2];
$editalan3 = $info[alan3];
$editalan4 = $info[alan4];
} 

 //Resimlerin yuklenecegin yer
 $target = "../../upload/";  
 //////////////////////////////////////////////////////////////////////
 ///////////////////////////////Resim1/////////////////////////////////
 //////////////////////////////////////////////////////////////////////
 $target1 = $target . basename( $_FILES['resim1']['name']) ; 
 //Formdan gelen bilgileri almasi icin
 $resim=($_FILES['resim1']['name']); 
 $isim=$_POST['isim1']; 
 $alan1=$_POST['alan11']; 
 $alan2=$_POST['alan21']; 
 $alan3=$_POST['alan31']; 
 $alan4=$_POST['alan41']; 



/////////////Formdaki bos alanlara bos bilgi kayit etmemesi icin////////////////////////

$updates = array();
if (!empty($resim))
  $updates[] = 'resim="'.mysql_real_escape_string($resim).'"';
if (!empty($isim))
  $updates[] = 'isim="'.mysql_real_escape_string($isim).'"';
if (!empty($alan1))
  $updates[] = 'alan1="'.mysql_real_escape_string($alan1).'"';
if (!empty($alan2))
  $updates[] = 'alan2="'.mysql_real_escape_string($alan2).'"';
if (!empty($alan3))
  $updates[] = 'alan3="'.mysql_real_escape_string($alan3).'"';
if (!empty($alan4))
  $updates[] = 'alan4="'.mysql_real_escape_string($alan4).'"';
$updates = implode(', ', $updates);


/////////////////////////////////////////////////////////////////////////////////////////
 //update etmesi icin
if(move_uploaded_file($_FILES['resim1']['tmp_name'], $target1)) 
{   
mysql_query("UPDATE CloseOut SET $updates WHERE itemNO='$edit' ");
echo "Tebrikler, ". basename( $_FILES['resim1']['name']). " isimli dosya yuklendi ve database'e basariyla islendi!<br>"; 
 } 




?>

<br>
<center> 
<table width="900" border="5" style="background-color:white; "bordercolor="#000000">
    <tr>
        <td width="120" height="50" bgcolor= "545454"><b>RESIM</b></td>
        <td width="120" height="50" bgcolor= "545454"><b>NAME</b></td>
        <td width="120" height="50" bgcolor= "545454"><b>CATAGORY</b></td>
        <td width="120" height="50" bgcolor= "545454"><b>QUANTITY</b></td>
        <td width="120" height="50" bgcolor= "545454"><b>LOCATION</b></td>
        <td width="120" height="50" bgcolor= "545454"><b>PRICE</b></td>
    </tr>
    <tr>
<form enctype="multipart/form-data" method="post" action="">
<td><input type="file" name="resim1" value="<?php echo $editresim;?>"> </td>
<td><input type="text" name="isim1" value="<?php echo $editisim;?>"> </td>
<td><input type="text" name="alan11" value="<?php echo $editalan1;?>"> </td>
<td><input type="text" name="alan21" value="<?php echo $editalan2;?>">  </td>
<td><input type="text" name="alan31" value="<?php echo $editalan3;?>"></td>
<td><input type="text" name="alan41" value="<?php echo $editalan4;?>"></td>
</tr>

<td colspan="6"><center><input type="submit"></center></td>


</form>
</table>
</center>
4

2 に答える 2

2

今見えますか?$editresim値は$info[resim]です。

フォームを送信すると、$info[resim]現在のデータベース値です。データベースは以下/その後に更新されました。

送信すると、送信された値が実際にデータベースに配置される前に、以前のデータが表示されます。したがって、更新されたデータを表示するには、そのページを再度開く必要があります。

これを修正する1つの方法は、コードを移動してデータを更新する前にSELECT * FROM CloseOut WHERE itemNO=$edit、クエリが最新/更新されたデータを提供するようにする必要があります。

サンプルコードを提供していないことをお詫びしますが、混乱を招く可能性のある小さなエラーが発生する可能性があります。そして、あなたがそれを自分で解決しようとすると、実際にはより良いです。

幸運を!

ps:あなたの論理

Get data from db

Put to data to VAR

If form is submitted:

    Update data in DB

Show VAR // This is *not* the latest submitted data
于 2013-02-01T04:49:57.047 に答える
1

問題は、情報を取得した後でデータベースを更新していることです。

コードのこの部分を入れます

//Resimlerin yuklenecegin yer
 $target = "../../upload/";  
 //////////////////////////////////////////////////////////////////////
 ///////////////////////////////Resim1/////////////////////////////////
 //////////////////////////////////////////////////////////////////////
 $target1 = $target . basename( $_FILES['resim1']['name']) ; 
 //Formdan gelen bilgileri almasi icin
 $resim=($_FILES['resim1']['name']); 
 $isim=$_POST['isim1']; 
 $alan1=$_POST['alan11']; 
 $alan2=$_POST['alan21']; 
 $alan3=$_POST['alan31']; 
 $alan4=$_POST['alan41']; 



/////////////Formdaki bos alanlara bos bilgi kayit etmemesi icin////////////////////////

$updates = array();
if (!empty($resim))
  $updates[] = 'resim="'.mysql_real_escape_string($resim).'"';
if (!empty($isim))
  $updates[] = 'isim="'.mysql_real_escape_string($isim).'"';
if (!empty($alan1))
  $updates[] = 'alan1="'.mysql_real_escape_string($alan1).'"';
if (!empty($alan2))
  $updates[] = 'alan2="'.mysql_real_escape_string($alan2).'"';
if (!empty($alan3))
  $updates[] = 'alan3="'.mysql_real_escape_string($alan3).'"';
if (!empty($alan4))
  $updates[] = 'alan4="'.mysql_real_escape_string($alan4).'"';
$updates = implode(', ', $updates);


/////////////////////////////////////////////////////////////////////////////////////////
 //update etmesi icin
if(move_uploaded_file($_FILES['resim1']['tmp_name'], $target1)) 
{   
mysql_query("UPDATE CloseOut SET $updates WHERE itemNO='$edit' ");
echo "Tebrikler, ". basename( $_FILES['resim1']['name']). " isimli dosya yuklendi ve database'e basariyla islendi!<br>"; 
 } 

直前:

$edit = htmlspecialchars(stripslashes($_GET['edit']));
于 2013-02-01T04:58:58.327 に答える