Visualizzazione risultati 1 fino 15 di 15

Discussione: Creazione Form in php con un campo testo attivabile in base alle scelte dell'utente

  1. #1
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito Creazione Form in php con un campo testo attivabile in base alle scelte dell'utente

    Buonasera,
    ho creato (con dreamweaver cs 5.5) un semplice form per la gestione di un sondaggio (php e mysql)con un radio button "SI", "NO", "Altro (specificare)".
    Vorrei inserire la possibilità che, in base alle scelta dell'utente su "Altro (specificare)" si possa visualizzare un campo in cui inserire liberamente del testo da registrare nel database in alternativa alle scelte "SI" "NO". Potete suggerirmi lo script da utilizzare?
    Come eliminare l'inconveniente di un'accidentale variazione della scelta effettuata posto che cliccando su qualsiasi parte del form la selezione passa automaticamente su "Sì"?
    Il testo relativo al campo testo opzionale necessita di un nuovo record in Mysql autonomo o può confluire in quello previsto alternativamente per le altre due opzioni (Sì - No)?

    Grazie per l'attenzione dedicatami

    Ecco il codice attuale:


    <?php require_once('../Connections/Localhost.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"] == "FormSondaggio")) {
    $insertSQL = sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)",
    GetSQLValueString($_POST['RadioGroup1'], "text"));

    mysql_select_db($database_Localhost, $Localhost);
    $Result1 = mysql_query($insertSQL, $Localhost) or die(mysql_error());
    }

    mysql_select_db($database_Localhost, $Localhost);
    $query_Recordset1 = "SELECT * FROM SondaggioPediatria";
    $Recordset1 = mysql_query($query_Recordset1, $Localhost) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Sondaggio</title>
    </head>

    <body>
    <label><form action="<?php echo $editFormAction; ?>" id="FormSondaggio" name="FormSondaggio" method="POST">
    <fieldset>
    <legend>Questionario </legend>
    <ul class="list-0 form-line clear-fix">
    <li class="block form-line-33x33x33">
    <div>
    <label for="1">1 *</label>
    <strong>Ti piace la pizza margherita?</strong></div>
    <div class="form-field"> </div>
    <div class="form-field"></div>
    <div class="form-field">
    <table width="200">
    <tr>
    <td><label>
    <input type="radio" name="RadioGroup1" value="Si" id="RadioGroup1_0" />
    Sì</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="RadioGroup1" value="No" id="RadioGroup1_1" />
    No</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="RadioGroup1" value="Testo libero 1" id="RadioGroup1_2" />
    Altro (specificare)</label></td>
    </tr>
    </table>
    </div>
    </li>
    </ul>
    <p>
    <input type="reset" name="button" id="button" value="Ripristina" />
    <input type="submit" name="button2" id="button2" value="Invia" />
    </p>
    <p>&nbsp;</p>
    </fieldset>
    <input type="hidden" name="MM_insert" value="FormSondaggio" />
    </form></label>
    </body>
    </html>
    <?php
    mysql_free_result($Recordset1);
    ?>

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

    Predefinito

    Vorrei inserire la possibilità che, in base alle scelta dell'utente su "Altro (specificare)" si possa visualizzare un campo in cui inserire liberamente del testo da registrare nel database in alternativa alle scelte "SI" "NO". Potete suggerirmi lo script da utilizzare?
    Puoi realizzarlo tramite JavaScript. Come prima cosa, aggiungi il codice HTML per l'input testuale "altro". Questo campo sarà inizialmente disabilitato. Quando l'utente clicca sul radio button "altro", tramite un event listener JavaScript, puoi abilitare l'input rimuovendo l'attributo disabled, cosicché l'utente possa scriverci. Puoi anche fare in modo che selezionando "sì" o "no" l'input venga nuovamente disabilitato.
    Un'altra possibilità è nascondere o mostrare l'input tramite CSS, anziché disabilitarlo. La procedura è la stessa, devi solo aggiungere la regola display: none; anziché l'attributo disabled, sempre tramite JavaScript.

    Come eliminare l'inconveniente di un'accidentale variazione della scelta effettuata posto che cliccando su qualsiasi parte del form la selezione passa automaticamente su "Sì"?
    Sempre tramite JavaScript puoi associare un event listener al form: quando riceve un click, viene automaticamente selezionato il "sì". L'unica accortezza è di bloccare la propagazione dell'evento "click" quando, ad essere cliccati, sono i radio button o altri elementi analoghi.
    Tuttavia non mi sembra una buona idea, credo sia molto meglio se l'unica azione in grado di modificare lo stato del form sia il click "esplicito" su un campo input (o una sua label). Assumere che un click "a vuoto" sia implicitamente un "sì" mi sembra un po' troppo forte.

    Il testo relativo al campo testo opzionale necessita di un nuovo record in Mysql autonomo o può confluire in quello previsto alternativamente per le altre due opzioni (Sì - No)?
    Questo lo puoi sapere solo tu
    Dipende da come hai definito lo schema, quali colonne hai previsto e qual'è il loro significato. Per un sistema di sondaggi in cui le opzioni sono "sì, no, altro" mi immaginerei una tabella di questo tipo:
    Codice:
    CREATE TABLE voto(
        id INT UNSIGNED NOT NULL AUTO_INCREMENT,
        id_sondaggio INT UNSIGNED NOT NULL,
        risposta INT UNSIGNED NOT NULL,
        altro VARCHAR(255) NULL,
        PRIMARY KEY(id),
        CONSTRAINT fk_voto_sondaggio FOREIGN KEY (id_sondaggio) REFERENCES sondaggio(id)
        ON UPDATE CASCADE ON DELETE CASCADE
    );
    eventualmente con altre informazioni (es. sull'utente che ha votato, il timestamp...).
    Con una struttura di questo tipo puoi utilizzare 0, 1, 2 come valori della colonna risposta per rappresentare sì, no, altro, e la colonna altro per il contenuto dell'omonimo input (che sarà significativo solo quando risposta = 3).

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  3. #3
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito

    Prima di tutto grazie per la tua cortesia e disponibilità. In Dreamwaver ho capito come inserire uno script js ma non so come impostare un evento listner. Potresti, per favore, suggerirmi lo script per attivare/disattivare un campo testo che chiamerò "Suggerimenti"

    Vorrei, inoltre, per impedire variazioni accidentali, eliminare la selezione automatica su "SÌ" quando si clicca su qualsiasi parte del form.

    È possibile mpostare il valore del button "altro" con una variabile che legga il contenuto del campo di testo "suggerimenti?

    Grazie in anticipo

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

    Predefinito

    Prima di tutto grazie per la tua cortesia e disponibilità. In Dreamwaver ho capito come inserire uno script js ma non so come impostare un evento listner. Potresti, per favore, suggerirmi lo script per attivare/disattivare un campo testo che chiamerò "Suggerimenti"
    Certo! Questo codice fa riferimento a quello che hai mostrato tu, al quale ho solo aggiunto il campo Suggerimenti in questo modo:
    Codice HTML:
    <input type="text" name="Suggerimenti" id="input_suggerimenti" disabled="disabled" />
    (può essere inserito in una posizione qualunque nell'HTML). Il JavaScript è questo:
    Codice:
    <script>
    var input_altro = document.getElementById('RadioGroup1_2');
    var input_suggerimenti = document.getElementById('input_suggerimenti');
    var input_radios = document.forms['FormSondaggio'].elements['RadioGroup1'];
    
    for (var i = 0; i < input_radios.length; ++i) {
        input_radios[i].addEventListener('click', function () {
            if (input_altro.checked) {
                input_suggerimenti.disabled = false;
            }
            else {
                input_suggerimenti.disabled = true;
            }
        });
    }
    </script>
    Ad input_altro "associ" il radio button "Altro", ad input_suggerimenti il nuovo campo testuale "Suggerimenti", e ad input_radios il vettore che "contiene" i tre radio button.
    A ciascuno di essi, tramite il ciclo for associ un event listener: ogni volta che uno dei tre pulsanti viene cliccato, si controlla si il radio_button altro è selezionato. Se lo è, si abilita il campo testuale (disabled = false), altrimenti lo si disabilita (disabled = true).

    Vorrei, inoltre, per impedire variazioni accidentali, eliminare la selezione automatica su "SÌ" quando si clicca su qualsiasi parte del form.
    Avevo capito il contrario
    Quello che vuoi ottenere è il comportamento standard di un form. Se attualmente cliccando un punto casuale del form viene selezionato il "Sì", vuol dire che da qualche parte c'è uno script JavaScript che sta implementando questa funzionalità. Dovresti cercarlo e rimuoverlo.

    È possibile mpostare il valore del button "altro" con una variabile che legga il contenuto del campo di testo "suggerimenti?
    Probabilmente sì, ma non ho capito bene cosa intendi.

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  5. #5
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito

    Ciao mzanella, grazie per lo script.

    Relativamente all'ultimo quesito:

    È possibile impostare il valore del button "altro" con una variabile che legga il contenuto del campo di testo "suggerimenti?
    Probabilmente sì, ma non ho capito bene cosa intendi.


    vorrei far sì che, selezionando la scelta "altro", il valore da inserire nell'unica colonna del database corrispondesse al testo digitato nel campo "suggerimenti".
    Hai una soluzione (sperando di essere stato un po' più chiaro )

    Grazie

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

    Predefinito

    Ok se ho capito bene vuoi che, se è stato selezionato "altro", all'interno della base di dati venga inserito il testo digitato dall'utente.

    Quando l'utente invia il form, nella pagina di destinazione PHP hai a disposizione la variabile $_POST che contiene tutti i dati inviati, tra cui anche $_POST['Suggerimenti'] che puoi usare per l'inserimento nel database. La struttura della query dipende da com'è strutturata la tabella che stai utilizzando.

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  7. #7
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito

    Ok se ho capito bene vuoi che, se è stato selezionato "altro", all'interno della base di dati venga inserito il testo digitato dall'utente.

    Ciao Mzanella,
    non sono riuscito ad utilizzare la variabile $_POST. Puoi suggerirmi come inserirla nel form sotto indicato?

    Grazie.

    <?php require_once('Connections/Localhost.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"] == "form1")) {
    $insertSQL = sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)",
    GetSQLValueString($_POST['Risposta_1'], "text"));

    mysql_select_db($database_Localhost, $Localhost);
    $Result1 = mysql_query($insertSQL, $Localhost) or die(mysql_error());
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>

    <body>
    <form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
    <p>&nbsp;</p>
    <ul class="list-0 form-line clear-fix">
    <li class="block form-line-33x33x33 margin-left-0">
    <div>
    <label for="Forma">1) - Giochi a calcio? *</label>
    </div>
    <div class="form-field"> </div>
    </li>
    <li class="block form-line-33x33x33 margin-left-0">
    <div class="form-field">
    <table width="200">
    <tr>
    <td><label>
    <input type="radio" name="Risposta_1" value="Si" id="Risposta_1_0" />
    Sì</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="Risposta_1" value="No" id="Risposta_1_1" />
    No</label></td>
    </tr>
    <tr>
    <td><input name="Risposta_1" type="radio" id="Risposta_1_2" value="" />
    altro</td>
    </tr>
    </table>
    </div>



    </li>
    </ul>
    <ul class="list-0 form-line clear-fix">
    <li class="clear-fix form-line-100 block">
    <div>
    <label for="Suggerimenti">Messaggio *</label>
    </div>
    <div class="form-field">
    <textarea required="required" name="Suggerimenti" id="Suggerimenti" rows="1" cols="100%"></textarea>
    </div>
    </li>
    </ul>
    <p>
    <input type="reset" name="PulsanteCancella" id="PulsanteCancella" value="Cancella" />
    <input type="submit" name="PulsanteInvio" id="PulsanteInvio" value="Invia" />
    </p>
    <input type="hidden" name="MM_insert" value="form1" />
    </form>
    </body>
    </html>

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

    Predefinito

    Attento a questa riga:
    Codice HTML:
    <input name="Risposta_1" type="radio" id="Risposta_1_2" value="" />
    non stai assegnando un valore all'opzione "altro", dovresti modificare in:
    Codice HTML:
    <input name="Risposta_1" type="radio" id="Risposta_1_2" value="Altro" />
    o qualcosa di simile.

    In questa riga:
    Codice:
    $insertSQL = sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)", GetSQLValueString($_POST['Risposta_1'], "text"));
    Così come usi $_POST['Risposta_1'] per accedere al valore del radio button puoi usare $_POST['Suggerimenti'] per accedere al valore della textarea. Il risultato sarà qualcosa come:
    Codice PHP:
    $insertSQL sprintf("INSERT INTO SondaggioPediatria (`1`, `altro`) VALUES (%s, %s)"GetSQLValueString($_POST['Risposta_1'], "text"), GetSQLValueString($_POST['Suggerimenti'], "text")); 
    supponendo che la colonna della tabella in cui vuoi inserire l'informazione si chiami altro.

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  9. #9
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito

    Preziosissimo per la tua tempestività e chiarezza, io credo però di non aver precisato che vorrei utilizzare soltanto la colonna "1" in modo che il valore del radio button possa essere alternativamente "sì" oppure "no" oppure il contenuto digitato nel campo testo "suggerimenti".

    Grazie

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

    Predefinito

    In questo caso:
    Codice PHP:
    $risposta $_POST['Risposta_1'];
    if (
    $risposta !== 'Sì' && $risposta !== 'No') {
        
    $risposta === $_POST['Suggerimenti'];
    }
    $insertSQL sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)"GetSQLValueString($risposta"text")); 

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  11. #11
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito

    Scusami ancora,
    sicuramente ho sbagliato ad inserire correttamente il codice ma non funziona!

  12. #12
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito

    Codice PHP:
    <?php require_once('Connections/Localhost.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"] == "form1")) {

    $risposta $_POST['Risposta_1'];
    if (
    $risposta !== 'Sì' && $risposta !== 'No') {
        
    $risposta === $_POST['Suggerimenti'];
    }
    $insertSQL sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)"GetSQLValueString($risposta"text"));  

    echo 
    $risposta;


    mysql_select_db($database_Localhost$Localhost);
    $Result1 mysql_query($insertSQL$Localhost) or die(mysql_error());
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>

    <body>
    <form id="form1" name="form1" method="POST" action="<?php echo $editFormAction?>">
    <p>&nbsp;</p>
    <ul class="list-0 form-line clear-fix">
    <li class="block form-line-33x33x33 margin-left-0">
    <div>
    <label for="Forma">1) - Giochi a calcio? *</label>
    </div>
    <div class="form-field"> </div>
    </li>
    <li class="block form-line-33x33x33 margin-left-0">
    <div class="form-field">
    <table width="200">
    <tr>
    <td><label>
    <input type="radio" name="Risposta_1" value="Si" id="Risposta_1_0" />
    Sì</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="Risposta_1" value="No" id="Risposta_1_1" />
    No</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="Risposta_1" value= "AltroTesto" id="Risposta_1_2" />
    Altro</label></td>
    </tr>
    </table>
    </div>



    </li>
    </ul>
    <ul class="list-0 form-line clear-fix">
    <li class="clear-fix form-line-100 block">
    <div>
    <label for="Suggerimenti">Messaggio *</label>
    </div>
    <div class="form-field">
    <textarea required="required" name="Suggerimenti" id="Suggerimenti" rows="1" cols="100%"></textarea>
    </div>
    </li>
    </ul>
    <p>
    <input type="reset" name="PulsanteCancella" id="PulsanteCancella" value="Cancella" />
    <input type="submit" name="PulsanteInvio" id="PulsanteInvio" value="Invia" />
    </p>
    <input type="hidden" name="MM_insert" value="form1" />
    </form>
    </body>
    </html>
    Ultima modifica di alemoppo : 29-09-2018 alle ore 21.32.26

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

    Predefinito

    Modifica così:
    Codice PHP:
    $risposta $_POST['Risposta_1'];
    if (
    $risposta === 'AltroTesto') {
        
    $risposta === $_POST['Suggerimenti'];

    ... e sistema l'indentazione ;)
    Codice PHP:
    <?php
    require_once('Connections/Localhost.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"] == "form1")) {
        
    $risposta $_POST['Risposta_1'];
        if (
    $risposta === 'AltroTesto') {
            
    $risposta === $_POST['Suggerimenti'];
        }
        
    $insertSQL sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)"GetSQLValueString($risposta"text"));  

        echo 
    $risposta;

        
    mysql_select_db($database_Localhost$Localhost);
        
    $Result1 mysql_query($insertSQL$Localhost) or die(mysql_error());
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Documento senza titolo</title>
      </head>

      <body>
        <form id="form1" name="form1" method="POST" action="<?php echo $editFormAction?>">
          <ul class="list-0 form-line clear-fix">
            <li class="block form-line-33x33x33 margin-left-0">
              <div>
                <label for="Forma">1) - Giochi a calcio? *</label>
              </div>
              <div class="form-field"></div>
            </li>
          
            <li class="block form-line-33x33x33 margin-left-0">
              <div class="form-field">
                <table width="200">
                  <tr>
                    <td>
                      <label>
                        <input type="radio" name="Risposta_1" value="Si" id="Risposta_1_0" />
                        Sì
                      </label>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <label>
                        <input type="radio" name="Risposta_1" value="No" id="Risposta_1_1" />
                        No
                      </label>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <label>
                        <input type="radio" name="Risposta_1" value= "AltroTesto" id="Risposta_1_2" />
                        Altro
                      </label>
                    </td>
                  </tr>
                </table>
              </div>
            </li>
          </ul>
          <ul class="list-0 form-line clear-fix">
            <li class="clear-fix form-line-100 block">
              <div>
                <label for="Suggerimenti">Messaggio *</label>
              </div>
              <div class="form-field">
                <textarea required="required" name="Suggerimenti" id="Suggerimenti" rows="1" cols="100%"></textarea>
              </div>
             </li>
          </ul>
          <p>
            <input type="reset" name="PulsanteCancella" id="PulsanteCancella" value="Cancella" />
            <input type="submit" name="PulsanteInvio" id="PulsanteInvio" value="Invia" />
          </p>
          <input type="hidden" name="MM_insert" value="form1" />
        </form>
      </body>
    </html>

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  14. #14
    easyservice non è connesso Utente AlterBlog
    Data registrazione
    25-08-2018
    Messaggi
    8

    Predefinito

    Ciao Mzanella,
    anche l'ultimo suggerimento non funzionava; ho provato ad apportare le modifiche sotto riportate e ora funziona correttamente.
    Chiedo scusa per l'indentazione ma uso Dreamweaver in modalità progettazione. Il primo codice che ho scritto è relativo proprio questa piccola modifica che ho tratto dai tuoi preziosi suggerimenti.
    Ti sono grato per ... "avermi fatto ragionare".

    Grazie

    $rispostaA = $_POST['Risposta_1'];
    $rispostaB = $_POST['Suggerimenti'];

    if ($rispostaA === 'AltroTesto') { $insertSQL = sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)", GetSQLValueString($rispostaB, "text"));
    }
    else
    $insertSQL = sprintf("INSERT INTO SondaggioPediatria (`1`) VALUES (%s)", GetSQLValueString($rispostaA, "text"));

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

    Predefinito

    Bene!
    Riguardando il codice ho trovato l'errore in quello che ti avevo proposto, avevo usato un === al posto di un =. Quello corretto è quindi:
    Codice PHP:
    $risposta $_POST['Risposta_1'];
    if (
    $risposta === 'AltroTesto') {
        
    $risposta $_POST['Suggerimenti'];


    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


Regole di scrittura

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