Visualizzazione dei risultati da 1 a 4 su 4

Discussione: categorie newsletter

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    74

    categorie newsletter

    ciao a tutti.
    il problema è questo ho una pagina per l'iscrizione ad una newsletter che ho precedemente creato..
    in questa pagina (in funzione delle categorie create dall'admin nel db)appaiono dei checkbox con le categorie della newsletter.Mi spiego meglio:durante l'iscrizione l'utente decide in questo modo le o la categoria della newsletter che vuole ricevere.
    il checkbox viene creato in questa maniera..

    passo una query per recuperare le categorie presenti nel db e creo un checkbox di questo tipo

    <INPUT type='checkbox' name='cat[]' value=$name>$name);

    il problema nasce ora in funzione delle scelte di chi si sta iscrivendo. devo crearmi una query che mi iserisca per ogni indirizzo email una cosa del genere nel db

    email categoria1 categoria2...
    __________________________________
    pippo@tin.it 1 0

    ossia 1 quando si è iscritti a quella categoria e 0 per il contrario.

    ciao a tutti e grazie..

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Secondo me, senza usare tabelle di collegamento, potresti usare la serializzazione di un array.

    Mi spiego meglio...

    Prima di tutto guarda qua: serialize()

    Come vedi quella funzione permettere di metter ein formato "testo" un array di valori. Questo ti permette di creare un campo "iscrizioni" per ogni mail iscritta:

    pippo@mail.com | array(1, 3, 6, 9)

    Cosi facendo registri che pippo è registrato alla categoria di newsletter 1, 3, 6 e 9.

    Prima di inserire nel DB l'array gli dai un serialize() e quando lo estrai usi l'unserialize(). Cosi avrai sempre sottomano l'array delle categorie a cui una determinata mail è iscritta.


  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    74
    drugo prima di tutto grazie per l'interessamento ma forse non capisco o mi sono spiegato male..
    questo è lo script che recupera le categorie e le inserisce nel modulo di iscrizione(le categorie sono gestite lato adminossono essere create,eliminate,e convalidate(visibili))..

    $sql = "SELECT * FROM ml_category";
    $result = mysql_query($sql);
    $campi = mysql_num_fields($result);

    FOR ($i=1; $i < $campi; $i++){

    $name = mysql_field_name($result,$i);
    $validated = mysql_fetch_array($result);

    IF ($validated[$name] == 1){
    echo("<td><INPUT type='checkbox' name='cat[]' value=$name>$name</td><td></td>");
    }
    }

    ad ogni iscrizione devo inserire per ogni email degli 0e 1 che mi indicano se quella mail desidera ricevere posta di quella categoria ossia.i campi dela tabella sono email + le varie categorie
    il risultato finale della query deve essere una cosa del genere

    insert into ml_user_category (email,cat1,cat2..ecc) value (indirizzo email,0,1,1,0..ecc)..

    le categorie per la query le posso recuperare facendo un implode dell'array creato dal checkbox del form ma mi rimane il modo di recuperare dai checkbox spuntati o no da chi si iscrive quei zero o uno..
    spero di essere stato piu' chiaro..
    grazie!!




  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Quello che intendevo dire io è che senza usare un campo per ogni categoria puoi usare un unico campo "iscrizione" di tipo TEXT con all'interno storato l'array contenente tutte le categorie a cui l'utente è iscritto:

    Codice PHP:
    $sql "SELECT * FROM ml_category ORDER BY nome ASC";
    $result mysql_query($sql);
    while(
    $row mysql_fetch_array($row))
    {
        print(
    "<td><INPUT type='checkbox' name='cat[]' value='".$row['name']."'>".$row['name']."</td>");

    nel file con lo script di inserimento riceverai l'array $_POST['cat'] che conterrà i nomi delle categorie a cui è iscritto l'utente (anche se troverei più comodo inserire gli ID):

    Codice PHP:
    $email "pippo@mail.com";

    // recupero l'array dei valori
    $array_cat $_POST['cat'];

    // lo traduco in un formato storabile nel DB
    $categorie serialize($array_cat);

    mysql_query("INSERT INTO ml_user_category (email, iscrizioni) VALUES ('$email', '$categorie')"); 
    Ogni volta che ti serve sapere a che categorie è iscritto l'utente basta che recuperi l'array, lo decodifichi e ne leggi i valori:

    Codice PHP:
    $sql "SELECT * FROM ml_user_category WHERE email = 'pippo@mail.com' LIMIT 1";
    $result mysql_query($sql);
    $row mysql_fetch_array($result);
    $array_cat unserialize($row['iscrizioni']); 
    Poi...per carità...il mio è un consiglio, ma per esperienza personale con delle newsletter in passato ti posso dire che questo metodo si rivela più "malleabile" di altri.

    Spero di esserti stato utile ^^


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 © 2024 vBulletin Solutions, Inc. All rights reserved.