2013-05-26 4 views
-1

Я делаю PHP-код, который показывает всю запись, сохраненную в базе данных, с SQL-запросом. Он корректно показывает запись, но теперь я пытаюсь сделать диалог jQuery, который позволяет пользователю удалить одну запись.
Это мой код:
jQuery Диалог с запросом MySQL

<?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, но всегда удаляет первую запись.
Может ли кто-нибудь мне помочь, пожалуйста?

+1

Вы не должны выполнять функцию echo'ing 'showDialogDelete', btw 'id' должен быть параметром, нет причин создавать определенную функцию для каждой записи. Тем не менее BTW, php является языком на стороне сервера, после его выполнения вы не можете изменить его на стороне клиента. Это, как говорится, ваша логика где-то не так. –

ответ

1

Существует множество способов сделать такие вещи, а мой - только один.

Основной процесс, который вы должны обеспечить это:

Убедитесь каждый воспроизводимый файл удаляемый запись идентифицировать. Если каждый элемент должен иметь свою собственную кнопку, вам нужно что-то вдоль линий:

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

Ваш deleteFunction затем разыгрывает в Ajax вызов небольшой PHP файл, который удаляет соответствующую запись.

Подсказка: если вы обернуть весь вход в пролете отношению:

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

Это очень легко сделать запись Vanish (дисплей: нет;) в то время как PHP делает работу в фоновом режиме.

Я подозреваю, что ваша проблема возникает из-за того, что все ваши данные имеют одинаковый идентификатор или, возможно, более вероятно, что вы случайно передаете нулевое значение для вашего SQL-кода.

Проверьте вы видите ваши имена переменных правильно

Echo ваш SQL, чтобы убедиться, что он выглядит, как он должен (это обычно показывает, передавая данные ошибки)

Набор сообщений об ошибках для всех - это боль, но это действительно применяет хорошую практику кодирования и большую часть времени забирает имена переменных с ошибками.

+0

Спасибо! Оно работает! –