Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Popolare array dinamicamente ad ogni submit

    Buon pomeriggio.
    Il mio intento è quello di creare una sorta di Cloud di ricerche, a seconda di una o più parole digitate nei campi del form e poi inviati.
    Al momento avevo pensato di fare cosi:
    codice:
    $word=array();
    if($_POST['ricerca']!=""){
    	array_push($word,$_POST['ricerca']);
    }
    Questo metodo non funziona, nel senso.
    Avrei voluto che, ad ogni parola digitata per la ricerca, la AGGIUNGESSE ad altre già presenti nell'array $word.
    Ma purtroppo, ad ogni submit per la ricerca, l'array viene svuotato per poi tornare ad avere come valore l'ultima parola appena digitata.

    Come risolvo?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Metti l’array in una variabile di sessione

  3. #3
    Quote Originariamente inviata da clasku Visualizza il messaggio
    Metti l’array in una variabile di sessione
    Come funziona il tutto.
    Nel button submit ho inserito anche la funzione javascript "addSearch()" che richiamo attraverso l'onclick.

    Nella index.php
    codice:
    function addSearch(){
                var parola = $("#parola").val();
                $.ajax({
                   type : "POST",
                   url  : "crea-ricerca.php",
                   data : "parola=" + parola,
                    success: function(html){
                        //window.location = "archivio.php";
                    }
                });
                return;
            }
    nella pagina crea-ricerca.php
    codice:
    session_start();
    $_SESSION['word'] = array();
    
    if($_POST['parola']!=""){
        array_push($_SESSION['word'],$_POST['parola']);
    
    }
    nella index.php poi faccio cosi:
    codice:
    include 'crea-ricerca.php';
    var_dump($_SESSION['word']);
    e ad ogni submit elimina la parola digitata precedentemente e la sostituisce con l'ultima.
    array(1) { [0]=> string(4) "lung" }
    array(1) { [0]=> string(5) "maree" }
    ecc ecc

    Perché?

    Vorrei mantenere tutte le parole digitate.
    Grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    In questo modo tu azzeri l'array ogni volta che quella pagina viene caricata.
    Togli questa riga.

    codice:
    $_SESSION['word'] = array();
    p.s. le sessioni ti mantengono i dati durante appunto la sessione, se vuoi una persistenza più "lunga" ti servirà usare un database o comunque un sistema di persistenza.

  5. #5
    si ok funziona, ma ieri l'avevo tolta, perché c'ero arrivato anch'io che azzerava ogni volta che richiamavo la pagina, quindi poi l'avevo rimessa.
    Comunque, vi ringrazio come sempre del vostro aiuto.
    Buona giornata a tutti.

  6. #6
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    In questo modo tu azzeri l'array ogni volta che quella pagina viene caricata.
    Togli questa riga.

    codice:
    $_SESSION['word'] = array();
    p.s. le sessioni ti mantengono i dati durante appunto la sessione, se vuoi una persistenza più "lunga" ti servirà usare un database o comunque un sistema di persistenza.
    adesso volendo eliminarne uno alla volta?
    Avrei pensato di fare in questo modo, ma al click su uno, li elimina tutti.

    Nella index.php ho tutte le parole nelle quali richiamo la funzione per eliminarne una alla volta:
    codice:
    <ul>
    <li><a href="javascript:void(0)" onclick="eliminaRicerca('lungo')">Lungo</a></li>
    <li><a href="javascript:void(0)" onclick="eliminaRicerca('mare')">Mare</a></li>
    <li><a href="javascript:void(0)" onclick="eliminaRicerca('ostia')">Ostia</a></li>
    </ul>
    in index.php
    codice:
    function eliminaRicerca(parola){
    			$.ajax({
    			   type : "POST",
    			   url  : "elimina-ricerca.php",
    			   data : "parola=" + parola,
    				success: function(html){
    					window.location = "archivio.php";
    				}
    			});
    			return;
    		}
    Nella elimina-ricerca.php
    codice:
    session_start();
    if($_POST['parola']!=""){
    $_SESSION[word]=array_diff($_SESSION[word],$_POST['parola']);
    }
    Come faccio?
    Grazie ancora.

  7. #7
    ho fatto cosi e funziona:
    codice:
    unset($_SESSION['word'][$_POST['parola']]);
    Grazie mille.

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.