根据用户输入显示表单域

时间:2010-12-07 05:09:02

标签: php mysql

我在这里为我的数据库中的每辆车显示一组行。 每行都有一个表单字段,登录用户可以在其中提交商品。 当用户为任何汽车提出要约时,表单字段将替换为显示已提交要约价值的文本。

然而,我所经历的并不是理想的结果。 如果我提出一行,很好,逻辑是有效的。如果我继续为另一行提出另一个提议,那么逻辑就有效,除了前一行现在再次显示该表格的事实。

如果有必要,我可以提供更多细节,但也许有人已经熟悉了这一点。

提前致谢。

<?php

require("db-connect.php");

$display = "SELECT filename, car_id, make, model, year, mileage, vin, description, GROUP_CONCAT(filename) FROM scraplis_cars LEFT JOIN scraplis_images USING (car_id) GROUP BY car_id ORDER BY date_time DESC";

$dResult = mysql_query($display) or die('error:' . mysql_error());

$offer = "SELECT car_id, user_id, offer_id, value FROM scraplis_offers WHERE user_id = '".$_SESSION['user_id']."'";

$oResult = mysql_query($offer) or die('Error ' . mysql_error());

$oRow = mysql_fetch_array($oResult);

if(!isset($_SESSION['access'])){
    header("location:index.php"); 
}


?>

<?php if($dResult): ?>
    <table class="post">
        <thead>
            <tr>
        <?php if(isset($_SESSION['email']) && $_SESSION['access'] == 0) : ?>
                <th scope="col">Images</th>
                <th scope="col">Make</th>
                <th scope="col">Model</th>
                <th scope="col">Year</th>
                <th scope="col">Mileage</th>
                <th scope="col">VIN #</th>
                <th scope="col">Description</th>
                <th scope="col">Offer</th>
            </tr>
        </thead>
        <tbody>

        <?php while($dRow = mysql_fetch_array($dResult)) : ?>

            <?php  $str = $dRow[8]; ?>
            <?php $images = explode(',', $str); ?>
            <tr>
                <td>
                    <ul>
                <?php if(!empty($str)) : ?>
                    <?php foreach($images as $value) :?>
                        <li>
                            <a href="images/<?php echo $value; ?>" rel="lightbox[<?php echo $row['car_id']; ?>]">
                                <img src="images/<?php echo $value; ?>"/>
                            </a>
                        </li>
                    <?php endforeach; ?>
                <?php endif; ?>
                    <ul>
                </td>
                <td><?php echo $dRow['make']; ?></td>
                <td><?php echo $dRow['model']; ?></td>
                <td><?php echo $dRow['year']; ?></td>
                <td><?php echo number_format($dRow['mileage']); ?></td>
                <td><?php echo $dRow['vin']; ?></td>
                <td><span><?php echo $dRow['description']; ?></span></td>
                <td>
                <?php if($oRow['car_id'] == $dRow['car_id']) : ?>   
                    Offer pending approval - $<?php echo $oRow['value']; ?>
                <?php else : ?>
                    <form id="offer" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
                        <input type="text" id="price" name="offer" />
                        <input type="hidden" name="submitted" value="<?php echo $dRow['car_id']; ?>" />
                        <input type="submit" name="price" value="Submit" />
                    </form>
                <?php endif; ?>
                </td>
            </tr>
        <?php endwhile; ?>
        <?php else : ?>
                <th scope="col">Delete</th>
                <th scope="col">Images</th>
                <th scope="col">Make</th>
                <th scope="col">Model</th>
                <th scope="col">Year</th>
                <th scope="col">Mileage</th>
                <th scope="col">VIN #</th>
                <th scope="col">Description</th>
            </tr>
        </thead>
        <tbody>
        <?php while($dRow = mysql_fetch_array($dResult)) : ?>
            <?php  $str = $dRow[8]; ?>
            <?php $images = explode(',', $str); ?>
            <tr>
                <td>
                    <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
                        <input type="checkbox" name="record" value="<?php echo $row['car_id']; ?>" />
                        <input type="submit" name="delete-car" value="Delete" />
                    </form>
                </td>
                <td>
                    <ul>
                <?php if(!empty($str)) : ?>
                    <?php foreach($images as $value) :?>
                        <li>
                            <a href="images/<?php echo $value; ?>" rel="lightbox[<?php echo $row['car_id']; ?>]">
                                <img src="images/<?php echo $value; ?>"/>
                            </a>
                        </li>
                    <?php endforeach; ?>
                <?php endif; ?>
                    </ul>
                </td>
                <td><?php echo $dRow['make']; ?></td>
                <td><?php echo $dRow['model']; ?></td>
                <td><?php echo $dRow['year']; ?></td>
                <td><?php echo number_format($dRow['mileage']); ?></td>
                <td><?php echo $dRow['vin']; ?></td>
                <td><span><?php echo $dRow['description']; ?></span></td>
            </tr>
        <?php endwhile; ?>          
    <?php endif; ?>
        </tbody>        
    </table>
<?php endif; ?>

1 个答案:

答案 0 :(得分:1)

安全第一的重要事情:

搜索:

if(!isset($_SESSION['access'])){
    header("location:index.php"); 
}

替换:

if(!isset($_SESSION['access'])) {
  header("Location: index.php");
  exit;
}

查看header()exit()的PHP文档 - 两者都在此处描述了exit()的需求(或安全问题)。

问题:

你只有$oResult$oRow的第一行 - 所以你有(例如)1000辆汽车,但只有一个。您需要在循环中获取$oResult的结果(while()for(),... - 您更喜欢...)然后检查您是否可以找到{{1} }(在car_id内也在优惠中)。

代码示例(非常容易理解):

$dRow

我希望我没有弄错你,没有犯错(需要早起)这对你有帮助; - )。