0

我的动态数据库运行良好。

我的登录系统运行良好。

有那些“欢迎用户”链接。

“用户”是指向用户在数据库中拥有的所有内容的链接。当用户想要更改内容时,只需单击“用户”。你得到表格 ChangeStuff.php

除了其他好东西,我还有这个

<form action="IamStuck.php">

<li> Property ID: <?php  print  $row['P_ID'] ?>  <?php $P_ID =  $row['P_ID']; $_SESSION['P_ID']  = $P_ID  ?><input name="edit" type="submit" value="edit" /><br /><br />
&ensp;&ensp;  Address: <?php print $row['address']?>,   <?php print $row['city'] ; ?> 
</li>  
</form>

这基本上会产生这样的东西:

编辑列表

您想更新您的列表吗?

  • 物业 ID:14 (提交按钮在此处)

       地址:1845 Oak Park Blvd,普莱森顿山

  • 物业 ID:16 (提交按钮在此处)

       地址:埃默里维尔 3111 Adeline Ave

然后在 IamStuck.php 上,我有一个完整的表单 (html+php),它可以提取数据库上的所有信息并允许用户更新信息(查询很好并且工作得很好):

    <?php  session_start();
.....
        $P_ID = $_SESSION ['P_ID'];
        if(isset($_POST['Submit'])){//if the submit button is clicked
        $day = $_POST['day'];
        $address = $_POST['address'];
        etc
        etc.


    $update = "UPDATE property 
                    SET day='$day', city='$city', state='$state', address='$address', price = $price, sq_ft = $sq_ft, lot_sq_ft = $lot_sq_ft,zip_code = $zip_code, bedroom = $bedroom, bathroom = $bathroom, partial_bath = $partial_bath, sunday_info = '$sunday_info',
                    web = '$web', broker_info='$broker_info', map_info='$map_info', youtube = '$youtube'

                     WHERE P_ID = ".$P_ID;
        $db->query($update) or die("Cannot update");//update or error

问题是从 ChangeStuff.php 中获取正确的 P_ID

我用锚链接和 post/get 尝试了这个,效果很好,除了 P_ID 会进入 URL,你可以更改 id 并更改其他人的数据库信息:O

不好。

回到会议。只要您想更改数组的最后一个值,它就可以很好地工作:)

如果您想更改属性 14(如示例中所示),您将无法 :( 仅提取最后一个地址(这仍然是您在 DB 中的信息 - 但不是应该更新的信息。

不好。

在蓝色星球有没有人可以提供一些想法?

全面披露:我对 PHP、MYSQL、Javascript CSS 这些东西很陌生,我在过去几个月里一直在学习这些很棒的东西:/

感谢您的时间。

PS。正如您可能已经发现的那样,数组是动态的,会因人而异,甚至从今天到下个月的同一个人。

编辑

基于@Just Wood 下面的评论之一,我回到了我原来的 Post/Get 方法。changeStuff.php 是这样的:

<form action="IamLessStuck.php" method="post">

    <li> <a href="IamLessStuck.php?P_ID=<?php echo $row['P_ID']; ?>">Property ID: <?php  print  $row['P_ID'] ?> </a><br /><br />
    &ensp;&ensp;  Address: <?php print $row['address']?>,   <?php print $row['city'] ; ?> 
    </li>  
    </form>

IamLessStuck.php 是这样的(只是 WHERE 改变了):

$update = "UPDATE property 
            SET day='$day', city='$city', state='$state', address='$address', price = $price, sq_ft = $sq_ft, lot_sq_ft = $lot_sq_ft,zip_code = $zip_code, bedroom = $bedroom, bathroom = $bathroom, partial_bath = $partial_bath, sunday_info = '$sunday_info',
            web = '$web', broker_info='$broker_info', map_info='$map_info', youtube = '$youtube'

             WHERE P_ID = ".$P_ID." and 
                           username =  '".(htmlentities($_SESSION['user']['username']))."'";

$db->query($update) or die("Cannot update");//update or error

谢谢你。有用。我还更改了查询 SELECT *.... 的代码/查询以在编辑发生之前获取所有值,并添加了相同的 WHERE 子句(id=$_post id 和 user = session[user])。现在一个人只能看到和改变他/她唯一的东西。谢谢你。

4

1 回答 1

1

P_ID将URL放入根本没有问题。您需要做的就是在允许他们编辑/查看之前检查以确保该用户有权访问该条目。

只需执行 SQL 查询即可检查。

作为旁注,正如我在评论中提到的,我不同意将P_ID其余会话信息放入其中。这P_ID与单个请求有关,而不是与整个会话有关。

于 2013-09-11T19:10:41.073 回答