• User

    Connessione a mysql

    Lo scopo principale è creare una tabella temporanea che esiste finche non si ci disconnette dal database.

    Riesco a crearla e scriverci,ma quando cambio pagina la tabella si cancella.Quato credo perchè si chiuda la connessione al db,infatti io metto ad ogni inizio pagina lo script di accesso,altrimenti non mi funziona.

    Quindi:come faccio a rimanere connesso al db anche navigando nel sito?


  • User Attivo

    Ciao djalessio,
    all'interno di ogni script la connessione al db mysql viene aperta e chiusa quasi-improrogabilmente.
    Esiste la possibilità di creare le connessioni persistenti che però non credo risolvano il tuo problema perché vengono sostanzialmente usate per carichi di lavoro pesanti e se non ben configurate possono bloccare l'esecuzione di alcuni script. Inoltre non sono persistenti nel senso che si potrebbe erroneamente intendere.

    Qual'è il comando che usi per cancellare la tabella?

    Perché non prendi in cosiderazione alternative meno dispendiose? Tipo le sessioni o la possibilità di usare sempre la stessa tabella senza crearla ed eliminarla ogni volta?

    Se ci dai maggior dettagli, tentiamo di aiutarti meglio!
    :ciauz:


  • User

    Ti ringrazio...ma ho risolto usando mysql_pconnect invece di mysql_connect

    Ciao e grazie


  • User Attivo

    Attenzione:
    mysql_pconnect è appunto il comando per le connessioni persistenti! Verifica bene il numero di connessioni che puoi aprire: se vai in saturazione lo script per alcuni utenti potrebbe non essere in grado di aprire ulteriori connessioni.


  • User

    Ma il problema sorge nel caso in cui ci fossere più utenti collegati allo stesso momento al sito?

    Cioè comunque quando chiudo il browser la connessine si chiude,o no?

    E comunque sai come posso controllare il numero di connessioni massime supportare dal db?


  • User

    azz!!!

    Dopo aver pubblicato il mio lavoro ho visto che il provider non supporta le connessioni persistenti :arrabbiato:

    Hai qualche consiglio su come fare una cosa simile?

    Praticamente usavo la tabella temporanea come carrello...nel caso in cui l'utente chiudeva il browser la tabella si cancellava e non mi andava a creare una tabella fissa sul database che poi non sarebbe mai stata cancellata,con conseguente occupazione di spazio non più utilizzato.


  • User Attivo

    Immaginavo ma non volevo fare il guastafeste...
    Per il carrello elettronico, in assoluto, lo strumento di gran lunga più adatto, più semplice e più flessibie è la sessione.

    All'inizio di ogni script scrivi:

    session_start();

    poi quando vuoi memorizzare qualcosa scrivi:

    $_SESSION['quantita']=3;
    $_SESSION['prodotto']='scatola di fagioli';
    $_SESSION['quello_vuoi']='quello che vuoi 2 volte!';

    l'array $_SESSION è simile a $_POST o $_GET: è una variabile globale sempre disponibile. La cosa bella è che passando da una pagina all'altra (o anche andando in altri siti e tornando) il dato è sempre lì (beh... più o meno :D).

    Quando hai fatto tutti i giochi che vuoi (email, ordini, aggiornamenti db, ecc) se vuoi puoi chiudere la sessione con:

    session_unset();
    $_SESSION = array();
    setcookie(session_name(), '', 1, '/');
    session_destroy();

    E' molto più facile di quanto immagini. :fumato:
    :ciauz:


  • User

    Grazie Ceccus x non avermi guastato la festa!!

    Ero così gasato ieri sera che mi funzionava tutto!Poi ho pubblicato....e sono tornato sulla terra!

    Senti,allora alle sessioni avevo già pensato,infatti le utilizzo,ma avevo optato per la tabella perchè se dovessi avere più di un prodotto come posso fare per visualizzare una lista del carrello?

    Con la tabella era una figata perchè la gestivo da paura,invece con una variabile come gestisco per esempio 2 descrizioni?

    P.S. Grazie x l'aiuto!


  • User Attivo

    Array di array :fumato:

    $_SESSION['dati']['email']
    $_SESSION['dati']['nome']
    (...)
    $_SESSION['prodotti']['nome'][1]='patate'
    $_SESSION['prodotti']['nome'][2]='cipolle'

    $_SESSION['prodotti']['prezzo'][1]=2 //? relativo alle patate
    $_SESSION['prodotti']['prezzo'][2]=3 //? relativo alle cipolle

    te la puoi gestire veramente come ti pare!


  • User

    si più o meno ho capito

    quello che non riesco a fare è una cosa un po più "dinamica" nel senso che i numeri dovrebbero incrementarsi tanti quanti sono i prodotti ne carrello e quindi lì dovrei mettere una cosa del tipo:

    $_SESSION['prodotti']['nome']='patate'
    $_SESSION['prodotti']['nome']='cipolle'

    o no?

    poi come stampo il tutto?

    sto facendo molto prove,ma non arrivo a niente.E' la prima volta che uso array di array.

    grazie per la pazienza


  • User

    Ho risolto cos': dimmi che ne pensi,se vuoi....

    //registro
    $_SESSION['carrello'][]['id_regalo'] = "$row[id]";
    $_SESSION['carrello'][]['miniatura'] = "$row[miniatura]";
    $_SESSION['carrello'][]['nome'] = "$row[nome]";
    $_SESSION['carrello'][]['descrizione'] = "$row[descrizione]";
    $_SESSION['carrello'][]['prezzo'] = "row[prezzo]";

    //stampo
    foreach ($_SESSION['carrello'] as $value){
    print ("$value[id_regalo]<br>");
    print ("$value[nome]<br>");
    print ("$value[descrizione]<br>");
    print ("$value[prezzo]<br>");
    }

    Cioè,risolto per modo di dire,perhè se stampo quello sopra mi lascia degli spazi allucinanti tra una scritta e l'altra,come se stampasse righe vuote.

    in teoria dovrebbe essere giusto così,ma non mi stampan niente:

    foreach ($_SESSION['carrello'] as $value){
    print ($_SESSION['carrello'][$value]['nome']."<br>");
    ...
    ...
    }


  • User

    Sto praticamente facendo un monologo,volevo modificare il posto già scritto,ma non me lo fa più fare...cmq ho risolto!

    Solo un'ultima cosa....se voi cancellare un prodotto inserito...

    ho provato si a unset che a mettere caratteri vuoti

    Il problema è che quando vado a ristampare l'array mi fa una righa ti tabella in più vuota,che sarebbe l'oggetto che ho cancellato.

    Come posso risolvere?


  • User Attivo

    Ciao, sono contento che tu abbia quasi risolto.
    Un consiglio, usa echo al posto di print.

    Per cancellare un prodotto, ad esempio il n.5 devi:

    $_SESSION['carrello'][5]=array();

    inolrte cerca di prevedere sempre un controllo, ad esempio nel ciclo foreach:

    if ($value[nome]!="")

    oppure

    if (strlen($value[nome])>0)

    questo perché se cancelli un prodotto con id intermedio (tipo il 2 su 5 prodotti), con il foreach ti esce comunque una riga vuota in corrispondenza del prodotto id=2.
    Spero di essere stato chiaro!
    :ciauz:


  • User

    Hai ragione,era più semplice di quanto pensassi.

    Grazie per l'aiuto!