Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    problema con registrazione dati drag&drop

    Ho una pagina in cui utilizzo una funzione (JS) per il drag&drop, e che consente di spostare degli elementi sulla pagina, registrandone l'ordine su db - via request AJAX e PHP.
    Funziona tutto perfettamente.
    In un'altra pagina, invece, devo utilizzare una variante della stessa funzione, che consente il drag&drop da una colonna a sinistra ad una a destra.
    E qui, invece, il drag&drop funziona ma non registra i dati.
    Questa è la funzione JS:
    Codice PHP:
    $(document).ready(function(){                                  
    $(function() {         
    $(
    "#contentLeft ul, #contentRight ul").sortable({ 
    connectWith'.connSort'opacity0.8cursor'move'update: function() {             
    var 
    order = $(this).sortable("serialize") + '&action=updateRecordsListings';
    $.
    post("sortoffer.php"order, function(theResponse){
    $(
    "#contentRight").html(theResponse);
              });
            }                                           
        });     
      });  
    }); 
    E questo il codice della pagina PHP che dovrebbe gestire la registrazione:
    Codice PHP:
    $action $_POST['action'];
    $updateRecordsArray $_POST['recordsArray'];
    if (
    $action == "updateRecordsListings"){
        
    $listingCounter 1;
        foreach (
    $updateRecordsArray as $idValue) {
            
    $query "UPDATE offerte SET hotel_pos = " $listingCounter " WHERE id = " $idValue;
            
    mysql_query($query) or die('Error, insert query failed');
            
    $listingCounter $listingCounter 1;    
        }

    Non dà errore, semplicemente non registra i dati...
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    up?
    metatad
    graphic & web design

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ho solo dato una lettura di massima... è possibile semplicemente che non entri nell' "IF"... ti direi di creare un semplice log su un file txt che registri l'URL di chiamata per verificare che questa avvenga davvero e con quali parametri...

    insomma nello script PHP aggiungere qualcosa tipo...

    ALL'INIZIO:
    $fp = fopen('log.txt', "W");
    $riga = date("H:i:s")."\r\n".var_export($_GET)."\r\n\r\n";
    fwrite ($fp, $riga);

    ALLA FINE
    fclose($fp);

    (codice da verificare)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ho provato, più velocemente, con un echo:
    Codice PHP:
     $action $_POST['action']; 
    $updateRecordsArray $_POST['recordsArray']; 
    if (
    $action == "updateRecordsListings"){     
    echo 
    $updateRecordsArray;     
    $listingCounter 1;     
    foreach (
    $updateRecordsArray as $idValue) {         
    $query "UPDATE offerte SET hotel_pos = " $listingCounter " WHERE id = " $idValue;         
    mysql_query($query) or die('Error, insert query failed');         
    $listingCounter $listingCounter 1;         


    Che mi stampa a video: array
    Quindi, se non sto facendo/dicendo stupidaggini, non trasmette i dati relativi alla seconda colonna... giusto? In tal caso, mi sa che il problema è nel codice AJAX, non nel PHP...
    metatad
    graphic & web design

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ho provato a fare una modifica nel codice AJAX, da così:
    Codice PHP:
    $(document).ready(function(){      
    $(function() {         
    $(
    "#contentLeft ul, #contentRight ul").sortable({ connectWith'.connSort'opacity0.9cursor'move'update: function() {             
    var 
    order = $(this).sortable("serialize") + '&action=updateRecordsListings';              
    $.
    post("sortoffer.php"order, function(theResponse){ 
    $(
    "#contentRight").html(theResponse);
             });
           }
        });
      });
    }); 
    a così:
    Codice PHP:
    $(document).ready(function(){      
    $(function() {         
    $(
    "#contentLeft ul, #contentRight ul").sortable({ connectWith'.connSort'opacity0.9cursor'move'update: function() {             
    var 
    order = $("#contentRight").sortable("serialize") + '&action=updateRecordsListings';              
    $.
    post("sortoffer.php"order, function(theResponse){ 
    $(
    "#contentRight").html(theResponse);
             });
           }
        });
      });
    }); 
    e l'echo mi restituisce questo messaggio:
    Warning: Invalid argument supplied for foreach() in D:\...\testing_et\sortoffer.php on line 13
    La linea 13 è questa:
    Codice PHP:
    foreach ($updateRecordsArray as $idValue) { 
    metatad
    graphic & web design

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dunque: io dicevo di fare un log perchè se la chiamata usa AJAX è possibile che il codice PHP non produca output (dipende dalla struttura del tutto in realtà)... in ogni caso anzichè stampare la sola variabile che hai usato prova comunque (sia che sia un file di log che a video) con un var_export($_GET, true) e var_export($_POST, true) (cioè anzichè echo $updateRecordsArray; metti echo - o crea il log meglio - echo var_export($_GET, true);echo var_export($_POST, true);)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ho fatto la prova che dici, l'echo mi restituisce:
    Codice PHP:
    array ( )array ( 'recordsArray' => array ( => '87', ), 'action' => 'updateRecordsListings', ) 
    ...
    metatad
    graphic & web design

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    allora dovrebbe essere tutto corretto... non è che per caso è sbagliato l'SQL?

    Per fare il debugging:

    aggiungi SUBITO PRIMA della riga con mysql_query la solita "stampa" dei dati così:

    Codice PHP:
    echo var_export($querytrue); 
    così si può vedere esattamente quali istruzioni SQL vengono eseguite.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ok... sono uno stupido io, non mi ero accorto che facevo la query per caricare i dati nella colonna di sx con un ordine diverso da quello modificato con lo spostamento nella seconda... ecco perché mi sembrava non lo modificasse...
    Però adesso mi sono accorto di un'altro problema...
    Quando sposto un'elemento dalla colonna a sx in quella a destra, appena la request AJAX è stata eseguita l'elemento scompare dalla pagina! Poichè a me serve dare la possibilità di modficare l'ordine di più elementi, spostandoli da sx a dx (lo so, si potrebbe già fare modificando l'ordine in una sola colonna... ma lo vogliono così...), ho bisogno che gli elementi trascinati sulla colonna di dx rimangano visibili, e nella posizioni assegnata...
    Questo significa due cose - direi - e cioè:
    - devo avere un feedback AJAX che riguardi la posizione nella colonna di dx
    - per avere il quale devo registrare i dati temporanei, relativi alle posizioni dei vari elementi trascinati sulla colonna...
    Dico bene?
    metatad
    graphic & web design

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    forse sì, ma non sono sicuro di seguirti... al limite uno screenshot?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.