Visualizzazione risultati 1 fino 5 di 5

Discussione: checkbox multiple in un unica cella mysql

  1. #1
    Guest

    Predefinito checkbox multiple in un unica cella mysql

    salve a tutti!
    ho un form con diversi campi in cui ho 7 checkbox a selezione multipla che vorrei far in modo che vengano inviate al db mysql in un unica cella, senza spazi.

    In pratica questo è la porzione del form con le checkbox
    Codice HTML:
    <input type="checkbox" name="bristool" value="1" id="bristool_0">
              tipo 1</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="2" id="bristool_1">
              tipo 2</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="3" id="bristool_2">
              tipo 3</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="4" id="bristool_3">
              tipo 4</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="5" id="bristool_4">
              tipo 5</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="6" id="bristool_5">
              tipo 6</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="7" id="bristool_6">
              tipo 7</label>
            </p>
            <p>
    e questo è il codice in php
    Codice PHP:
    <?php require_once('Connections/prova.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function
    GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
    {
    if (
    PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
    }

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

    switch (
    $theType) {
    case
    "text":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case
    "long":
    case
    "int":
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
    break;
    case
    "double":
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
    break;
    case
    "date":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case
    "defined":
    $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
    break;
    }
    return
    $theValue;
    }
    }

    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset(
    $_SERVER['QUERY_STRING'])) {
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }

    if ((isset(
    $_POST["MM_insert"])) && ($_POST["MM_insert"] == "modulo")) {
    $insertSQL = sprintf("INSERT INTO prove (cognome, nome) VALUES (%s, %s)",
    GetSQLValueString($_POST['cognome'], "text"),
    GetSQLValueString($_POST['nome'], "text"));

    mysql_select_db($database_prova, $prova);
    $Result1 = mysql_query($insertSQL, $prova) or die(mysql_error());
    }
    ?>
    Quindi sostanzialmente vorrei che nella colonna bristol vengano inseriti i valori di ogni casella selezionata senza spazi (es. 1235).

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Esattamente di cosa hai bisogno? Di come accedere ai valori con PHP, di come inserirli nel database con MySQL o di come ristrutturare la pagina HTML per rendere il processo più semplice?

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Esattamente di cosa hai bisogno? Di come accedere ai valori con PHP, di come inserirli nel database con MySQL o di come ristrutturare la pagina HTML per rendere il processo più semplice?
    Semplicemente lo devo inserire in un unica colonna mysql

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    In questo caso, supponendo di aver già letto i valori che ti interessano con PHP ed averli salvati in opportune variabili (diciamo $v1, $v2, ... $v5), e di avere nella tabella prove un colonna bristool adatta a rappresentare stringhe, una possibile query è:
    Codice PHP:
    $bristool = $v1.$v2.$v3.$v4.$v5;
    $query = "INSERT INTO prove (congome, nome, bristool) VALUES ('$cognome', '$nome', '$bristool');";
    In alternativa, siccome i campi in questione sono numeri e non sono molti, puoi valutare l'idea di usare una bitmask... a patto che la colonna bristool sia di tipo INT.

  5. #5
    Guest

    Predefinito

    Se la Query_String è della forma esempio:

    bristool=2&bristool=3&bristool=4

    Dove l'utente ha selezionato il 234, NB la query string contiene solo bristool=qualcosa&bristool=qualcosa...solo bristool e valore nell'esempio sotto cliccando invia

    il codice che puoi usare per mettere tutto dentro una stringa i valori di bristool e salvarla nel DB è questa:

    Codice HTML:
    		<form action="" method="get">
    	    <label>
    		<input type="checkbox" name="bristool" value="1" id="bristool_0">
              tipo 1</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="2" id="bristool_1">
              tipo 2</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="3" id="bristool_2">
              tipo 3</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="4" id="bristool_3">
              tipo 4</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="5" id="bristool_4">
              tipo 5</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="6" id="bristool_5">
              tipo 6</label>
            <br>
            <label>
              <input type="checkbox" name="bristool" value="7" id="bristool_6">
              tipo 7</label>
            </p>
            <p>
            	<input type="submit" value="invia"/>
            </form>
    Codice PHP:

    $url
    = $_SERVER['QUERY_STRING'];
    //print $url;
    if(!empty($url)){
    $risposta = array();

    foreach(
    explode('&', $url) as $parametro){
    list(
    $chiave, $valore) = explode('=', $parametro);
    $risposta[$chiave] .= $valore;
    }
    }
    print
    $risposta[$chiave];//TUTTI I VALORI DEL TUO BRISTOOL CONCATIENATI
    Ciao

    Ps:Faccio una precisazione, ovviamente il codice sopra se la chiave è sempre bristool va bene così però se nella query hai per esempio una stringa composta in questo modo:

    ...php?bristool=4&bristool=5&nome=Andrea&cognome=R ossi

    Quindi non hai solo bristool nella Query_string ma anche altri campi puoi usare sempre lo stesso ciclo di prima ma richiamerai i vari valori in questo modo

    Codice PHP:


    print $risposta['bristool'];
    print
    $risposta['nome'];
    print
    $risposta['cognome'];
    Dove $risposta['bistrool'] sono tutti i bristool concatenati e nome e cognome sono i valori della query(Andrea Rossi) con chiave nome e cognome e così via...Ciau
    Ultima modifica di fractalcosmo : 06-01-2016 alle ore 01.25.45

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •