Проблема с запросом Mootools Ajax и отправкой формы - PullRequest
0 голосов
/ 02 марта 2011

У меня есть таблица с контентом, поступающим из базы данных. Теперь я попытался реализовать способ (а) удалить строки из таблицы (б) редактировать содержимое строки «на лету». (а) работает отлично (б) заставляет мою голову курить!

Вот полный код Mootools:

    <script type="text/javascript">
window.addEvent('domready', function() {

var eDit = $('edit_hide');
eDit.slide('hide'); 

var del = new Request.HTML(
{
    url: 'fuss_response.php',
    encoding: 'utf-8',
    update: eDit,
    onComplete: function(response)
    {
    eDit.slide('in');
    }
});

$$('input.delete').addEvent( 'click', function(e){
      e.stop();
    var aID = 'delete_', bID = '';
    var deleteID = this.getProperty('id').replace(aID,bID); 
      new MooDialog.Confirm('Soll der Termin gelöscht werden?', function(){
        del.send({data : "id=" + deleteID}); 
      }, function(){
      new MooDialog.Alert('Schon Konfuzius hat gesagt: Erst denken dann handeln!');
      });  
    });

var edit = new Request.HTML(
{
    url: 'fuss_response_edit.php',
    update: eDit,
    encoding: 'utf-8',
    onComplete: function(response)
    {
    $('sst').addEvent( 'click', function(e){
      e.stop();
    safe.send();
    });
    }
});

var safe = new Request.HTML(
{
    url: 'termin_safe.php',
    encoding: 'utf-8',
    update: eDit,
    onComplete: function(response)
    {

    }
});

$$('input.edit').addEvent( 'click', function(e){
      e.stop();
    var aID = 'edit_', bID = '';
    var editID = this.getProperty('id').replace(aID,bID); 
      edit.send({data : "id=" + editID});
      $('edit_hide').slide('toggle');
    });

});
</script>

Вот часть PHP, которая создает форму редактирования:

<?php

$cKey = mysql_real_escape_string($_POST['id']);

$request = mysql_query("SELECT * FROM fusspflege WHERE ID = '".$cKey."'");
  while ($row = mysql_fetch_object($request))
    {
    $id = $row->ID;
    $name = $row->name;
    $vor = $row->vorname;
    $ort = $row->ort;
    $tel = $row->telefon;
    $mail = $row->email;
    }
echo '<form id="termin_edit" method="post" action="">';
echo '<div><label>Name:</label><input type="text" id="nns" name="name" value="'.$name.'"></div>';
echo '<div><label>Vorname:</label><input type="text" id="nvs" name="vorname" value="'.$vor.'"></div>';
echo '<div><label>Ort:</label><input type="text" id="nos" name="ort" value="'.$ort.'"></div>';
echo '<div><label>Telefon:</label><input type="text" id="nts" name="telefon" value="'.$tel.'"></div>';
echo '<div><label>eMail:</label><input type="text" id="nms" name="email" value="'.$mail.'"></div>';
echo '<input name="id" type="hidden" id="ids" value="'.$id.'"/>';
echo '<input type="button" id="sst" value="Speichern">';
echo '</form>';
?>

И последний Код termin_safe.php

$id = mysql_real_escape_string($_POST['id']);
$na = mysql_real_escape_string($_POST['name']);
$vn = mysql_real_escape_string($_POST['vorname']);
$ort = mysql_real_escape_string($_POST['ort']);
$tel = mysql_real_escape_string($_POST['telefon']);
$em = mysql_real_escape_string($_POST['email']);  
$score = mysql_query("UPDATE fuspflege SET name = '".$na."', vorname = '".$vn."', ort = '".$ort."', telefon = '".$tel."', email = '".$em."' WHERE ID = '".$id."'");

Насколько я вижу, запрос работает, но данные не обновляются! я думаю, что-то не так с опубликованными вещами За любые предложения буду рад с удовольствием!

PS после некоторых комментариев: я вижу проблему в этой части:

var edit = new Request.HTML(
{
    url: 'fuss_response_edit.php',
    update: eDit,
    encoding: 'utf-8',
    onComplete: function(response)
    {
    $('sst').addEvent( 'click', function(e){
      e.stop();
    safe.send();
    });
    }
});

Запрос «Изменить» открывает форму с предварительно заполненными полями ввода, а затем присоединяет событие нажатия к кнопке отправки, которая должна вызывать новый запрос при нажатии. Этот третий запрос я не могу передать данные полей ввода. я попытался получить значение каждого поля следующим образом:

var name = $('nns').getProperty('value');

и передайте это так

.send({data : "name=" + name});

пока не работает

PPS: в соответствии с просьбой код, который делает HTML с основного сайта

<?php  $request = mysql_query("SELECT * FROM fusspflege");
  echo '<form id="fusspflege" method="post" action="">';
  echo '<table class="fuss_admin">';
  echo '<tr><th>Name</th><th>Vorname</th><th>Ort</th><th>Telefon</th><th>eMail</th><th>Uhrzeit</th><th>Datum</th><th></th><th></th></tr>';
  echo '<tr><td colspan=8 id="upd"></td></tr>';
  while ($row = mysql_fetch_object($request))
    {
    $id = $row->ID;
    $name = $row->name;
    $vor = $row->vorname;
    $ort = $row->ort;
    $tel = $row->telefon;
    $mail = $row->email;
    $dat = $row->datum;
    $uhr = $row->uhrzeit;

    echo '<tr><td>'.$name.'</td><td>'.$vor.'</td><td>'.$ort.'</td><td>'.$tel.'</td><td>'.$mail.'</td><td>'.$uhr.'</td><td>'.$dat.'</td>';
    echo '<td><input id="delete_'.$id.'" class="delete" type="button" value="X"></td>';
    echo '<td><input id="edit_'.$id.'" class="edit" type="button" value="?"></td>';
    echo '</tr>';
    }
  echo '</table>';
  echo '</form>';
  echo '<div id="edit_hide"></div>';
?>

UPDATE:

       <form action="" method="post" id="termin_edit">
    <div>
        <label>
            Name:
        </label>
        <input type="text" value="NAME" name="name" id="nns">
    </div>
    <div>
        <label>
            Vorname:
        </label>
        <input type="text" value="Marianne" name="vorname" id="nvs">
    </div>
    <div>
        <label>
            Ort:
        </label>
        <input type="text" value="MArkt Wald" name="ort" id="nos">
    </div>
    <div>
        <label>
            Telefon:
        </label>
        <input type="text" value="" name="telefon" id="nts">
    </div>
    <div>
        <label>
            eMail:
        </label>
        <input type="text" value="info@rudolfapotheke.de" name="email" id="nms">
    </div>
    <input type="hidden" value="115" id="ids" name="id">
    <input type="button" value="Speichern" id="sst">
</form>

1 Ответ

1 голос
/ 02 марта 2011

Обновление:

Это скрипт mootools, основанный на предоставленной вами форме, который должен работать с вашим html:

$('sst').addEvent('click', function(event) {
    var data;
    event.stop();
    var myInputEl = $$('#termin_edit input');
    for(var i=0; i<myInputEl.length; i++){
        if(i == 0)
            data = myInputEl[i].name + "=" + myInputEl[i].value;
        else
            data += "&" + myInputEl[i].name + "=" + myInputEl[i].value;
    }
    myRequest.send(data);
});

Также добавьте оповещение в вашПопросите перезвонить для редактирования, просто чтобы проверить, работает ли ajax:

    onSuccess: function(responseText) {
        alert("done! " + responseText);
    },
    onFailure: function() {
        alert("failed");
    }

На стороне php создайте новый файл PHP и поместите в него следующее, а ajax target:

<?php
print_r($_POST);
?>

Ajax должен вернуть массив $ _POST в окне предупреждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...