我对这段代码进行了编码,当我单独使用它而不将它放在类函数中时它运行良好,但是当我在我的类中放入一个具有多个函数的函数时,更新和删除语句不起作用,虽然插入功能运行良好。我不知道为什么更新和删除不起作用。
我检查了4个小时的代码,但我不知道是什么问题。
这是一个与使用更新表中多列的方法相关的问题吗?
public function admin_ads_manage(){
/*###############site_links#################*/
$sel_links="SELECT * FROM site_links ORDER BY id DESC";
$query_sel_links=mysql_query($sel_links);
// Count table rows
$count_links=mysql_num_rows($query_sel_links);
//add data
$site_name=$_POST['addname'];
$site_link=$_POST['addlink'];
if($_POST['addsubmit']){
$add_site_links="INSERT INTO site_links(site_name,site_link) VALUES ('$site_name','$site_link')";
$query_add_site_links=mysql_query($add_site_links);
echo "<meta http-equiv=\"refresh\"";
}
/*###############site_links#################*/
?>
<div id="adsform">
<form action="<?php echo $PHP_SELF; ?>" method="post">
<h1>ادارة أضف لنك موقعك</h1>
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr><td>اسم الموقع:<input type="text" name="addname" ></td><td>الرابط:<input type="text" name="addlink"><td><input type="submit" name="addsubmit" value="اضف الرابط" ></td></td></tr>
<tr>
<td>
<table width="600" border="0" cellspacing="1" cellpadding="0">
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center"><strong>Id</strong></td>
<td align="center"><strong>اسم الموقع</strong></td>
<td align="center"><strong>رابط الموقع</strong></td>
</tr>
<?php
while($fetch_site_links=mysql_fetch_array($query_sel_links)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $fetch_site_links['id']; ?>"></td>
<td align="center"><? $id[]=$fetch_site_links['id']; ?><? echo $fetch_site_links['id']; ?></td>
<td align="center"><input name="sitename[]" type="text" id="sitename" value="<? echo $fetch_site_links['site_name']; ?>"></td>
<td align="center"><input name="sitelink[]" type="text" id="sitelink" value="<? echo $fetch_site_links['site_link']; ?>"></td>
</tr>
<?php
}
?>
<tr>
<td colspan="4" align="center"><input type="submit" name="Submit" value="تعديل"></td>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="حذف"></td>
</tr>
</table>
</td>
</tr>
</table>
<h1>اعلان اليوم</h1>
<h5 dir="rtl">لاضافة بنر لموضع اعلان اليوم ,كل ما عليك هو استبدال الصورة الموجودة فى مجلدimages بحيث تكون بنفس المقاسات والتى تساوى100 x 300</h5>
<p>adsense 728x90:الاعلان العرضى</p>
<p><textarea cols="50" rows="15" name="ads728"><?php echo $file728; ?></textarea></p>
<p>adsense 600x160:الاعلان المربع</p>
<p><textarea cols="50" rows="15" name="ads600"><?php echo $file600; ?></textarea></p>
<p>adsense 300x250:الاعلان الطولى</p>
<p><textarea cols="50" rows="15" name="ads300"><?php echo $file300 ?></textarea></p>
<p><input type="submit" name="submit" value="حفظ" /></p>
</form>
<?php
// Check if button name "Submit" is active, do this
if($Submit){
for($i=0;$i<$count_links;$i++){
$upd_site_links="UPDATE site_links SET site_name='$sitename[$i]', site_link='$sitelink[$i]' WHERE id='$id[$i]'";
$query_upd_site_links=mysql_query($upd_site_links);
echo "<meta http-equiv=\"refresh\">";
}
}
if($delete){
for($i=0;$i<$count_links;$i++){
$del_id = $checkbox[$i];
$del_links = "DELETE FROM site_links WHERE id='$del_id'";
$query_del_links= mysql_query($del_links);
}}
if($query_del_links){
echo "<meta http-equiv=\"refresh\" >";
}
if($query_upd_site_links){
echo "<meta http-equiv=\"refresh\" >";
}
}
答案 0 :(得分:2)
确保类函数中的代码实际上可以访问您正在使用的所有变量。我想其中一个不在范围内。
$checkbox
,$sitename
,$sitelink
,$id
和$count_links
可能是最有可能的罪魁祸首。
答案 1 :(得分:1)
有很多问题。
mysqli_connect()
(或同等学历)在哪里?您的函数似乎依赖于库上次使用的任何连接句柄。这不是很好的编码。UPDATE
循环会为每一行发送HTTP刷新。register_globals
而你甚至都没有意识到这一点。 You should turn this off。您的操作代码需要从$_POST
或$_GET
(或$_REQUEST
检索所需的所有变量,如果无关紧要的话)。每个动作(你有两个动作)只应该在它需要的所有变量都被考虑之后做它要求做的事情。假设所有字段变量都是自动全局变量,这是非常糟糕的编码。