-1

我正在制作一个 PHP 代码,它使用 SQL 查询显示保存在数据库中的所有条目。它正确显示了条目,但现在我正在尝试做一个允许用户删除一个条目的 jQuery 对话框。
这是我的代码:

<?php
    $username="HIDDEN";
    $password="HIDDEN";
    $database="HIDDEN";

    mysql_connect(localhost,$username,$password);
    @mysql_select_db($database) or die( "Non riesco a scaricare la lista degli eventi del Diario. L'errore &egrave; dovuto a noi. Riprova pi&ugrave; tardi. Ci scusiamo per il disagio.");
    $query= ("SELECT * FROM diary WHERE Username = '{$_SESSION['Username']}' AND NOT (folder = 'c') ORDER BY " . $_GET['sort']);
    $result= mysql_query($query);

    $i=0;
    while ($i < $num) {

    $type = mysql_result($result,$i,"type");
    $create_date = mysql_result($result,$i,"create_date");
    $priority = mysql_result($result,$i,"priority");
    $date = mysql_result($result,$i,"date");
    $materia = mysql_result($result,$i,"materia");
    $descr = mysql_result($result,$i,"descr");
    $id = mysql_result($result,$i,"id");

    ?>
<!-- finestra eliminazione -->
<div id="dialog-delete<?= $id; ?>" title="Sei sicuro di voler spostare nel cestino <?php echo($type . ' di ' . $materia); ?>" style="display: none;">
<div style="margin: 20px">
<img src="http://cdn1.iconfinder.com/data/icons/DarkGlass_Reworked/128x128/apps/konsolekalendar.png" alt="" height="127" width="120" style="margin-right: 30px; float: left" /><span class="auto-style4">Sei sicuro di voler eliminare <?php echo $type . ' di ' .$materia; ?>?<br>
</span><span class="auto-style5">Stai per spostare nel cestino questo 
elemento<br>creato in data <?php echo $create_date; ?>.<br><br></span>
<table style="width: 70%">
    <tr>
        <td style="width: 50%">
        <button onclick="javascript:window.close();" style="width: 96px; height: 28px;">Annulla</button>&nbsp;</td>
        <td class="auto-style6" style="width: 50%">
        <form name="form" method="post">
        <input type="submit" style="width: 95px; height: 28px; float: right" name="deletediary" value="Elimina">&nbsp;
        </form>
        </td>
        <?php

        if(isset($_POST['deletediary'])){

        $username="HIDDEN";
        $password="HIDDEN";
        $database="HIDDEN";

        mysql_connect(localhost,$username,$password);
        @mysql_select_db($database) or die( "Non riesco a leggere l'elemento. L'errore &egrave; dovuto a noi. Riprova pi&ugrave; tardi. Ci scusiamo per il disagio.");
        $query= ("UPDATE diary SET folder = 'c' WHERE (Username = '{$_SESSION['Username']}') AND (id = '".$id."') LIMIT 1");
        $result= mysql_query($query);


        $num = mysql_numrows($result);

        mysql_close();

        echo("Evento diario spostato correttamente nel cestino.");

        }
        ?>
    </tr>
</table>
</div>
</div>
    <?php
    echo('  <script type="text/javascript">
    function showDialogDelete'.$id.'()
    {
        $( "#dialog-delete'.$id.'" ).dialog({
                width: 650,
                height: 250,
                modal: true,
                open: function(event, ui)
                {

                }
            });
    }
</script>');
    ?>
    <table style="margin-bottom: 5px; width: 100%" cellspacing="10px">
    <tr>
    <td rowspan="2" style="width: 80px">
    <table cellpadding="10px" style="width: 70px; height: 60px">
    <tr>
    <td>
    <center style="padding: 5px">&nbsp;&nbsp;</center>
    </td>
    </tr>
    <tr>
    <td>
    <center style="padding: 5px">&nbsp;&nbsp;</center>
    </td>
    </tr>
    </table>
    </td>
    <td>
    <b><?php echo $type . ' di ' . $materia ?></b><div style="float: right; color: #585858; font-size: 16pt"><span class="tooltip" onmouseover="tooltip.pop(this, '<a href=read.php?id=<?= $id?>&type=diary>Apri</a><br/><a href=\'javascript:void(null);\' onclick=\'showDialogDelete<?= $id; ?>();\'>Elimina</a>')" style="color: <?= $_SESSION['accent'] ?>">...</span></div>
    </td>
    </tr>
    <tr>
    <td>
    <b>Priorit&agrave;: </b><?php echo $priority; ?>
    </td>
    </tr>
    </table>

问题是当我尝试删除一个条目时,SQL 代码总是删除第一个条目,而不是我选择的那个。
我也尝试使用 POST、GET 和 AJAX 来解决这个问题,但它总是会删除第一个条目。
任何人都可以帮助我吗?

4

1 回答 1

1

有很多方法可以做这种事情,我的只是一种。

您需要确保的基本流程是:

确保每个显示的可删除条目都是可识别的。如果每个条目都有自己的按钮,则需要以下内容:

<INPUT type='button' value='delete' onClick='deleteFunction(uniqueIdForThisLine)'>

然后您的 deleteFunction 对删除相关条目的小 PHP 文件执行 ajax 调用。

提示:如果将整个条目包装在 span vis 中:

<SPAN id='uniqueIdForThisLine.spn'>diary text</SPAN>

当 php 在后台完成工作时,很容易使条目消失(显示:无;)。

我怀疑您的问题是由于您的所有条目都被赋予了相同的 id,或者更有可能是您不小心将 id 的零值传递给了您的 SQL。

检查您是否正确拼写了变量名

回显你的 sql 以确保它看起来像它应该的(这通常显示数据传递错误)

将错误报告设置为所有人 - 这很痛苦,但它确实强制执行了良好的编码实践,并且大部分时间都会选择拼写错误的变量名称。

于 2013-05-26T12:17:12.393 回答