• User Attivo

    Come posso prelevare dati dal db?

    Salve ragzzi oggi mi sono cimentato, nel provare i drag&drop ma non riesco a mettere le tabelle in ordine prelevando gli arria dal db...poi come mai mi salva nel db tantissiam robba? Mica salva ogni mio spostamento?

    [php]
    <?
    session_start();
    //array elementi -> possono anche essere presi da database
    $elemento[1]['titolo']="TITOLO 1";
    $elemento[1]['contenuto']="Contenuto 1.";
    $elemento[2]['titolo']="TITOLO 2";
    $elemento[2]['contenuto']="Contenuto 2.";
    $elemento[3]['titolo']="TITOLO 3";
    $elemento[3]['contenuto']="Contenuto 3.";

    $elemento[4]['titolo']="TITOLO 4";
    $elemento[4]['contenuto']="Contenuto 4.";
    $elemento[5]['titolo']="TITOLO 5";
    $elemento[5]['contenuto']="Contenuto 5.";
    $elemento[6]['titolo']="TITOLO 6";
    $elemento[6]['contenuto']="Contenuto 6.";

    $elemento[7]['titolo']="TITOLO 7";
    $elemento[7]['contenuto']="Contenuto 7.";
    $elemento[8]['titolo']="TITOLO 8";
    $elemento[8]['contenuto']="Contenuto 8.";
    $elemento[9]['titolo']="TITOLO 9";
    $elemento[9]['contenuto']="Contenuto 9.";

    //conessione al database
    require('../../../config.ini.php');

    $query = mysql_query("SELECT * FROM tab "); // WHERE id = per fare un unica tab metti il where è l'id utente
    if(!$query){ die('Errore: non riesco a eseguire la query'); }
    $risu = mysql_fetch_array($query);

    $array_colonna1 = "".$risu['colonna1']."";
    $array_colonna2 = "".$risu['colonna2']."";
    $array_colonna3 = "".$risu['colonna3']."";
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "h**p://w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="h
    p://w.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title>Drag and drop salvataggio posizione</title>
    <meta h
    p-equiv="content-type" content="text/html; charset=utf-8" />
    <script src="prototype.js" type="text/javascript"></script>
    <script src="scriptaculous.js" type="text/javascript"></script>
    <script src="unittest.js" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script>
    var arraytitoli = new Array();
    var arraycontent = new Array();
    <?for($el=1;$el<=count($elemento);$el++){?>
    arraytitoli.push('<?=$elemento[$el]['titolo']?>');
    arraycontent.push('<?=$elemento[$el]['contenuto']?>');
    <?}?>
    function crea(elemento){
    if(!$('firstlist_key'+elemento) && !$('secondlist_key'+elemento) && !$('thirdlist_key'+elemento)){
    newitem=Builder.node( 'li', {className:'item',id:'firstlist_key'+elemento});
    newtitle=Builder.node( 'div', {className:'handle'},arraytitoli[elemento-1]);
    newchiudi=Builder.node( 'div', {className:'chiudi'});
    newlink=Builder.node( 'a', {href:'javascript:rimuovi('+elemento+')', className:'chiudilink'},'x');

        newitem.appendChild(newtitle);
        newitem.appendChild(newchiudi);
        newchiudi.appendChild(newlink);
        $('firstlist').appendChild(newitem);
                
        $('firstlist_key'+elemento).innerHTML=$('firstlist_key'+elemento).innerHTML+arraycontent[elemento-1];
        
        var myAjax = new Ajax.Request("save.php", {method:'get',parameters:Sortable.serialize('firstlist')+"&"+Sortable.serialize('secondlist')+"&"+Sortable.serialize('thirdlist')});
        rendisortable();
    }
    

    }

    function rimuovi(elemento){
    if($('firstlist_key'+elemento)){$('firstlist_key'+elemento).parentNode.removeChild($('firstlist_key'+elemento));}
    if($('secondlist_key'+elemento)){$('secondlist_key'+elemento).parentNode.removeChild($('secondlist_key'+elemento));}
    if($('thirdlist_key'+elemento)){$('thirdlist_key'+elemento).parentNode.removeChild($('thirdlist_key'+elemento));}

    var myAjax = new Ajax.Request("save.php", {method:'get',parameters:Sortable.serialize('firstlist')+"&"+Sortable.serialize('secondlist')+"&"+Sortable.serialize('thirdlist')});
    rendisortable();
    

    }

    function rendisortable(){
    // <![CDATA[
    Sortable.create("firstlist",
    {dropOnEmpty:true,handle:'handle',containment:["firstlist","secondlist","thirdlist"],constraint:false,
    onUpdate:function(){var myAjax = new Ajax.Request("save.php", {method:'get',parameters:Sortable.serialize('firstlist')+"&"+Sortable.serialize('secondlist')+"&"+Sortable.serialize('thirdlist')}) }});
    Sortable.create("secondlist",
    {dropOnEmpty:true,handle:'handle',containment:["firstlist","secondlist","thirdlist"],constraint:false,
    onUpdate:function(){var myAjax = new Ajax.Request("save.php", {method:'get',parameters:Sortable.serialize('firstlist')+"&"+Sortable.serialize('secondlist')+"&"+Sortable.serialize('thirdlist')}) }});
    Sortable.create("thirdlist",
    {dropOnEmpty:true,handle:'handle',containment:["firstlist","secondlist","thirdlist"],constraint:false,
    onUpdate:function(){var myAjax = new Ajax.Request("save.php", {method:'get',parameters:Sortable.serialize('firstlist')+"&"+Sortable.serialize('secondlist')+"&"+Sortable.serialize('thirdlist')}); }});
    // ]]>
    }
    </script>
    </head>
    <body onload="rendisortable()">
    <?for($el=1;$el<=count($elemento);$el++){?>
    <a href="javascript:crea('<?=$el?>')"><?=$elemento[$el]['titolo']?></a>   
    <?}?>

    <div class="container">
    <div class="colonna">
    <ul class="sortabledemo" id="firstlist">
    <?
    for($elementi=0;$elementi<count($array_colonna1);$elementi++){
    ?>
    <li class="item" id="firstlist_key<?=$array_colonna1[$elementi]?>">
    <div class="handle"><?=$elemento[$array_colonna1[$elementi]]['titolo']?></div>
    <div class="chiudi"><a href="javascript:rimuovi(<?=$array_colonna1[$elementi]?>)" class="chiudilink">x</a></div>
    <?=$elemento[$array_colonna1[$elementi]]['contenuto']?>
    </li>
    <?
    }
    ?>
    </ul>
    </div>
    <div class="colonna">
    <ul class="sortabledemo" id="secondlist">
    <?
    for($elementi=0;$elementi<count($array_colonna2);$elementi++){
    ?>
    <li class="item" id="secondlist_key<?=$array_colonna2[$elementi]?>">
    <div class="handle"><?=$elemento[$array_colonna2[$elementi]]['titolo']?></div>
    <div class="chiudi"><a href="javascript:rimuovi(<?=$array_colonna2[$elementi]?>)" class="chiudilink">x</a></div>
    <?=$elemento[$array_colonna2[$elementi]]['contenuto']?>
    </li>
    <?
    }
    ?>
    </ul>
    </div>
    <div class="colonna">
    <ul class="sortabledemo" id="thirdlist">
    <?
    for($elementi=0;$elementi<count($array_colonna3);$elementi++){
    ?>
    <li class="item" id="thirdlist_key<?=$array_colonna3[$elementi]?>">
    <div class="handle"><?=$elemento[$array_colonna3[$elementi]]['titolo']?></div>
    <div class="chiudi"><a href="javascript:rimuovi(<?=$array_colonna3[$elementi]?>)" class="chiudilink">x</a></div>
    <?=$elemento[$array_colonna3[$elementi]]['contenuto']?>
    </li>
    <?
    }
    ?>
    </ul>
    </div>
    </div>
    </body>
    </html>
    [/php]


  • User Attivo

    Ciao Zomer,
    dando uno sguardo veloce penso che ti salvi qualunque attività.

    Se guardi la funzione rimuovi scopri che ad ogni chiamata alla funzione,
    questa esegue una chiamata ajax alla pagina save.php.

    Adesso,
    io non conosco il codice di quella pagina, ma dal nome si intuisce quello che fa 😉

    Ciao


  • User Attivo

    Grazie! Avevo intuito qualcosa del genere... Infatti ho pensato anche ad un eventuale soluzione! Potrei mettere un bottone il quale una volta teminate le azione, utente interagnedo con esso venga salvata un unica array senza salvare ogni postamento ora il fatto e che io non sono partico qualcuno mi potrebbe dare una mano, o indirizzarmi?


  • User Attivo

    Ciao,
    ma se funziona perchè lo devi toccare?

    Cos'è che ti da problemi?


  • User Attivo

    No, 😉 il fatto è che non funziona come puoi anche vedere tu qui h**p://zomer.altervista.org/blog/drag_drop/mysql/sposta_blocchi.php
    😢😢 allora visto che che non funziona e lo devo modificare volevo anche perferzionarlo, perchè nel databse per ogni utente mi fa un "milione" di righe...


  • User Attivo

    Ciao,
    guarda che a me ha funzionato tutto tranne l'eliminazione.
    Ma questo perchè ho provato su uno dei 3 div creati di default.

    Prova a caricare la pagina senza quei tre div, perchè non hanno l'id da passare alla funzione javascript rimuovi.

    Se passi il mouse sulla X vedrai nella status-bar che richiamano rimuovi(,);
    e quindi non fa niente.

    Ma se utilizzo i div creati cliccando su titolo1, titolo2 ecc... mi pare che funziona tutto.

    Che browser stai usando? Io utilizzo FF3.5.

    Ciao


  • User Attivo

    Allora ora ti spiego tutto qui tre div di default non li ho fatti io sono usciti da se, poi quello che non funziona è propio il salvataggio! Facci caso, metti qualche div in una posizione ad esempio fai la prima riga 1,2,3 e poi chiudi la pagina, logicamnte ora la posizione dei div si avrebbe dovuto salvare nel db? ma se riapri la pagina ritovi di nuvo quei div di default...⭕o:o

    P.s. ho il tuo stesso broswer...


  • User Attivo

    Scusa,
    ma l'aggeggio serve a far si che un utente personalizzi la propria home page,
    oppure è uno strumento di amministrazione per facilitare la costruzione di un layout?

    In entrambi i casi avrebbe bisogno di salvare un riferimento alla singola utenza. Come potrebbe mai capire quando carico la pagina che sono lo stesso che la ha chiusa un minuto prima o 10 giorni prima?

    Lavora con i cookies?

    Ciao


  • User Attivo

    No vabè quello e una cosa tutta basata sul mysql e id ma se non riconosce quello di 10 secondi prima...cioè io salvo i dati nel db non capisco dove sbaglio....


  • User Attivo

    Ciao,
    cosa salvi nel db per capire che utente ha richiesto la pagina?

    Un id, la session_id, l'indirizzo ip: sicuramente visto che non c'è login qualcosa dovrai prendere in considerazione!:bho:

    :mmm: Ciao


  • User Attivo

    Ok, ti racconto tutto, io voglio permettere ad ogni mio untete di poter creare una propia pagina personale per questo ho deciso di inseirire dei drag e drop ( per renderla aconra più personalizzabile ) comunque il mio sito si puoi definire un social network COME facebook ma non uguale, perchè stiamo cercado di "di cucire un abito intorno ad gli utneti e non di costruire un abito per vendorlo ad gli utenti" ovviamente anche noi avremo i nostri guadagni e abbiamo già pensato a delle strategie per far popolare la nostra creazione, ora ti spiego tutto quando un utente si registra ( e attiva il suo account ) con mkdir viene creata un cartella con il nome dell'utente, alll'interno di essa con fwrite creiamo una pagina ( index.php ) di con un layout di base, questa pagina sarà la prima pagina del blog succesivamente l'utente entrato nella home page ( dove può cercare, amici, creare gruppi, album fotografici, ecc ) inizia la sua creazione del blog con dei form html ( nel salvataggio dei dati nel database, viene memorizzato l''id utente è un id blog) succesivamnte confronto l'id blog con l'id blog corrispondente al nikname se i due id combaciano compare un link, modifica blog l'utente ci clicca e viene mandato alla apgina di ammministrazione dove ci sono gli script per il drag e drop (con il javascript mentre nella pagina pubblica senza java) e modifica i blocchi poi faccio una query con un where dove c'è una variabile qualsiasi es: titolo trova l'array delle tabelle e le sistema.

    Però io prima di fare tutto questo casino volevo fare delle semplici prove, che come hai visto tu non fungono.
    Ora mi pare che non ti devo dire più niente 😄 (lo so che non hai capito niente)... Mi potresti aiutare?


  • User Attivo

    Buona giornata Zomer,
    mi sorge il dubbio che il motivo per cui non ti funziona correttamente è
    proprio che attualmente non 'leghi' i dati del DB con la sessione utente (blog_id),
    e quindi ogni utente che prova è sempre diverso:
    non trovando nessun legame tra i dati salvati delle personalizzazioni e l'utente che le esegue ogni volta il sistema ripresenta la pagina di default con i 3 div vuoti.

    Potrebbe essere così?

    Ciao


  • User Attivo

    Non ho cpaito bene cosa vuoi dire, comunque ora lo script lo sto testando solo io, non è online quindi l'unico utente sono io, mi dovrebbe riconoscere:?


  • User Attivo

    Io non conosco lo script,
    ma potrebbe anche essere che non ti riconosca.

    Prendi per esempio questa situazione:
    se lo script associa i salvataggi ad una session_id allora ogni volta che chiudi e riapri il browser richiedi una nuova sessione utente e quindi potrebbe non riconoscerti.

    Devi capire bene come funzione lo script,
    altrimenti ti limiterai a perder molto tempo per fare solo dei tentativi.

    Buon appetito.


  • User Attivo

    Ma io ho già un idea, so già come deve funzionare tutto il fatto è perchè non funziona? Perchè mi crea 3 box?


  • User Attivo

    Ciao,
    prova a togliere l'attributo onload da qui:
    [PHP]<body onload="rendisortable()"> [/PHP]

    Ciao


  • User Attivo

    Ho modificato quello che mi hai detto tu con <body> ma, non funge, le tabelle non si spostano più. ❌x❌x❌x


  • User Attivo

    Ciao,
    ce la faremo?

    Ho notato che quando crei la pagina nel <body> ci sono 3 <div class="colonna">con dentro altri elementi.

    Siccome il menu lo dichiari prima,
    non è che sono quelli che ti fregano?

    Ciao


  • User Attivo

    No ma ho trovato una cosa interessante lo stesso script però la versione con salvataggio a cookie ecco qui la parte interessata

    [php]
    if(!isset($_COOKIE['cookie_colonna1']) && !isset($_COOKIE['cookie_colonna2']) && !isset($_COOKIE['cookie_colonna3'])){
    setcookie ( "cookie_colonna1","1,2,3",time()+2592000);
    setcookie ( "cookie_colonna2","4,5,6",time()+2592000);
    setcookie ( "cookie_colonna3","7,8,9",time()+2592000);
    $array_colonna1=array(1,2,3);
    $array_colonna2=array(4,5,6);
    $array_colonna3=array(7,8,9);
    }else{
    if(isset($_COOKIE['cookie_colonna1'])){
    $array_colonna1=explode(",",$_COOKIE['cookie_colonna1']);
    }else{
    $array_colonna1=Array();
    }
    if(isset($_COOKIE['cookie_colonna2'])){
    $array_colonna2=explode(",",$_COOKIE['cookie_colonna2']);
    }else{
    $array_colonna2=Array();
    }
    if(isset($_COOKIE['cookie_colonna3'])){
    $array_colonna3=explode(",",$_COOKIE['cookie_colonna3']);
    }else{
    $array_colonna3=Array();
    }
    }
    [/php]

    Io non ne capisco molto ma a te che te ne pare?


  • User Attivo

    Ciao Zomer,
    mi pare di capire che se non ci sono cookies settati li setta lo script,
    dopo di che controlla se esistono (e non possono non esistere) e crea le colonne:

    questo potrebbe essere il nocciolo della questione per la quale esistono sempre i tre DIV riposizionabili tramite il drag&drop.

    Ciao