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

    Select multiplo da array

    Ciao a tutti, ho un problema: ho due pagine che dovrebbero inviare una newsletter a una serie di nominativi inseriti in un database. La prima contiene un form con un campo SELECT in cui l'utente seleziona le categorie di nominativi a cui inviare la lettera. La seconda estrae i dati dal campo SELECT con foreach:


    if (isset($_POST['categoria']))
    {
    $sceltacategoria = $_POST['categoria'];
    foreach($sceltacategoria as $valore)
    {

    //qui mi connetto al mio db

    $host="localhost";
    $username="user";
    $password="pwd";
    $db_name="nome_db";
    $tbl_name="tbl";

    connection = mysql_connect ($host,$username,$password) or die ("Non mi connetto!");

    $db = mysql_select_db ($db_name, $connection) or die ("Unable to select database.");
    $query1 = mysql_query("select titolo, nome, cognome, azienda, indirizzo, localita, provincia, cap, email, telefono, fax, cell, categoria, genere
    from $tbl_name
    where categoria = '$valore'");

    }
    }
    else
    {
    echo "Devi scegliere almeno una categoria";
    }

    Il problema è che seleziona soltanto una categoria, anche se nel form vengono scelte categorie multiple, qualcuno mi può spiegare come fare?

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Scusa ma quel codice è terrificante... rifare la connessione al database per ogni elemento dell'array è come usare una pentola d'acqua per ogni spaghetto da cuocere. Togli dal ciclo tutta la parte relativa alla connessione.

    Detto questo, non è semplice capire da dove deriva il tuo problema. Ti vengono segnalati errori? Hai la visualizzazione di tutti i tipi di errore attiva?

    Nell'istruzione in cui effettui la connessione usi la variabile "connection" senza $ davanti. E' solo un errore di trascrizione o hai davvero il codice così? (immagino la prima..)

    Se il campo 'categoria' è una select a selezione multipla, come è definito sul form html? Deve chiamarsi 'categoria[]', altrimenti php riceverà sempre solo l'ultimo dato selezionato

  3. #3
    Nel form di partenza il campo select si chiama categoria[], quindi il foreach restituisce effettivamente tutte le categorie selezionate.

    Quello che non riesco a fare è impostare la query in modo da selezionare nella tabella tutte le categorie scelte dall'utente ed etratte dal foreach. In pratica, where categoria = '$valore' prende solo tutti i nominativi che hanno come categoria l'ultima selezionata nel SELECT.

    Ho provato a fare la connessione al db fuori dal ciclo foreach e non riesce, ecco perchè ho fatto un tentativo inserendola all'interno.

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non sei stata molto chiara.
    Innanzitutto, perché non riesce la connessione all'esterno? Non ce n'è motivo. Posta gli errori. E nelle istruzioni "or die", sostituisci le stringhe che hai usato con l'indicazione dell'errore effettivo, così: "or die(mysql_error())"

    Per quanto riguarda la query, non vedo errori, ma bisogna vedere cosa fai con ciò che hai estratto. Dentro la parentesi graffa non vedo niente dopo l'esecuzione della query. E' chiaro che in questo modo ogni risultato ricopre il precedente, e alla fine del ciclo hai solo l'ultimo.

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.