• User

    Errore Notice: Undefined index in controllo campi javascript

    Buona sera a tutti,
    ho bisogno cortesemente del vostro aiuto.
    Ho creato una database, vi faccio l'esempio che vi allego, con i campi: nome_utente di tipo varchar(40), tipo_struttura di tipo varchar(19),voto_qualita_cam e voto_ristorante di tipo varchar(13), e infine data_ora_ins di tipo datetime.
    Ho creato un unico file in php con uno switch, diviso in tre parti: la form in html dove scrivo il nome e faccio delle selezioni, la seconda parte che scrive i dati della form nel database, e il terzo campo che visualizza i dati del database a video.
    Ho easyPHP installato.
    Ho attivato dei controlli tramite javascript che mi espongono un alert ogni volta che lascio il campo nome vuoto o i campi select senza selezionare nessuna voce, però contestualmente ho attivato un altro javascript che a seconda delle selezioni fatte nella prima select, mi abilita o disabilita le select successive, ad esempio se provo a selezionare "3" nella select che si chiama "seleziona" mi disabilita le due select successive.
    Il problema sta proprio qui, quando le select vengono disattivate non dovrebbe esserci il controllo campo obbligatorio, mentre in realtà cosi com'e' ora mi disabilita le select, quando faccio SUBMIT mi appare l'alert che non ho inserito il campo obbligatorio previsto dalla select(errato,non dovrebbe apparire,ed è questa una delle cose che ho bisogno di sistemare), e quando do OK lui comunque scrive i dati nel database correttamente segnalandomi però un "Notice: Undefined index" per tutti i campi che sono rimasti vuoti(ovvero senza selezione poichè disabilitati da javascript).
    Potete cortesemente aiutarmi in merito?come posso risolvere il problema togliendo l'alert quando i campi sono disabilitati e togliendo il "notice" che mi segnala per i campi vuoti e disabilitati?
    Grazie mille in anticipo e buona notte

    Allego php:

    <?php
    $connessione=mysql_connect("localhost", "root", "");
    $selezione_db=mysql_select_db("laterra_db", $connessione);
    ?>
    <HTML>
    <HEAD>
    <TITLE>La Terra delle Opinioni</TITLE>
    <script language="JavaScript">
    function disab(tipo_struttura){
    if(tipo_struttura=="3"){
    document.moduloGuest.voto_qualita_cam.disabled=true;
    document.moduloGuest.voto_ristorante.disabled=true;
    }
    else if(tipo_struttura=="4"){
    document.moduloGuest.voto_qualita_cam.disabled=false;
    document.moduloGuest.voto_ristorante.disabled=true;
    }
    else if(tipo_struttura=="6"){
    document.moduloGuest.voto_ristorante.disabled=true;
    }
    else{
    document.moduloGuest.voto_qualita_cam.disabled=false;
    document.moduloGuest.voto_ristorante.disabled=false;
    }
    }
    </script>
    <script language="JavaScript">
    function controllo(){
    with(document.moduloGuest) {
    if(nome_utente.value=="") {
    alert("Inserisci cortesemente il tuo nome.");
    nome_utente.focus();
    return false;
    }
    if(tipo_struttura.value=="") {
    alert("Inserisci cortesemente la tipologia di struttura per poter registrare la recensione.");
    tipo_struttura.focus();
    return false;
    }
    if(voto_qualita_cam.value=="") {
    alert("Inserisci cortesemente il voto che intendi dare alla qualità delle camere per poter registrare la recensione.");
    voto_qualita_cam.focus();
    return false;
    }
    if(voto_ristorante.value=="") {
    alert("Inserisci cortesemente il voto che intendi dare al ristorante per poter registrare la recensione.");
    voto_ristorante.focus();
    return false;
    }
    }
    return true;
    }
    </script>
    </HEAD>
    <BODY>
    <?php
    function nrecensione(){
    ?>
    <form name="moduloGuest" id="moduloGuest" onSubmit="return controllo();" onchange="disab(this.options[this.selectedIndex].value)" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="hidden" name="azione" value="elabora" />
    <table>

    <tr>
    <td><strong> Indica cortesemente il tuo nome </strong></td>
    <td><input type="text" name="nome_utente" id="nome_utente" size="30" maxlength="40" value=""></td>
    </tr>

    <tr>
    <td><strong> seleziona </strong></td><td><select name="tipo_struttura" id="tipo_struttura" onChange="disab(this.options[this.selectedIndex].value)" style="font-size: 11px;">
    <option value=""> </option>
    <option value="1"> 1 </option>
    <option value="2"> 2 </option>
    <option value="3"> 3 </option>
    <option value="4"> 4 </option>
    <option value="5"> 5 </option>
    <option value="6"> 6 </option>
    <option value="7"> 7 </option>
    </select></td>
    </tr>

    <tr>
    <td valign="top"><strong>Dai un voto globale a: </strong></td>
    <td>
    <p><strong>? camere </strong>
    <select name="voto_qualita_cam" id="voto_qualita_cam" style="font-size: 11px;">
    <option value=""> </option>
    <option value="A"> A </option>
    <option value="B"> B </option>
    <option value="C"> C </option>
    <option value="D"> D </option>
    <option value="E"> E </option>
    </select>
    <p><strong>? ristorante</strong>
    <select name="voto_ristorante" id="voto_ristorante" style="font-size: 11px;">
    <option value=""> </option>
    <option value="A"> A </option>
    <option value="B"> B </option>
    <option value="C"> C </option>
    <option value="D"> D </option>
    <option value="E"> E </option>
    </select>
    <p></td>
    </tr>
    <tr>
    <td align="center" colspan="2"><input type="submit" value="Invia il messaggio!"></td>
    </tr>
    </table>
    </form>
    <?php
    }
    function elabora_guest(){
    if($_POST){
    $inserimento=mysql_query("insert into recensioni (nome_utente, voto_qualita_cam, voto_ristorante, data_ora_ins) values ('".$_POST['nome_utente']."', '".$_POST['voto_qualita_cam']."', '".$_POST['voto_ristorante']."', now())");
    echo "Messaggio inviato con successo";}
    else{
    die("Inserisci i dati necessari alla registrazione della recensione.");
    }
    }
    ?>
    <?php
    function read_guest(){
    $lettura_risultati=mysql_query("select nome_utente, voto_qualita_cam, voto_ristorante, date_format(data_ora_ins, '%d/%m/%Y - ore %H:%i:%s') as data_formattata from recensioni order by anno_sogg");
    if(mysql_num_rows($lettura_risultati)>0){
    echo "<table>";
    $flag_colore=0;
    while($scatola_temporanea=mysql_fetch_array($lettura_risultati)){
    $nome_utente=$scatola_temporanea['nome_utente'];
    $voto_qualita_cam=$scatola_temporanea['voto_qualita_cam'];
    $voto_ristorante=$scatola_temporanea['voto_ristorante'];
    $data_ora_ins=$scatola_temporanea['data_formattata'];
    echo "<tr>";
    if($flag_colore==0){
    echo "<td bgcolor="#FFFF00">";
    $flag_colore=1;
    }
    else{
    echo "<td bgcolor="#C0C0C0">";
    $flag_colore=0;
    }
    echo "<strong>Utente:</strong> $nome_utente<br><br><strong>Voto qualit&agrave delle camere:</strong> $voto_qualita_cam<br><br><strong>Voto sul ristorante:</strong> $voto_ristorante<br><br>";
    echo "</tr>";
    }
    echo "</table>";
    }
    else{
    echo "Non é stata inserita ancora nessuna recensione in questa sezione. Se hai piacere essere il primo, clicca nella scelta <a href="nrecensione.html">Nuova Recensione</a>";
    }
    }
    switch($_REQUEST['azione'])
    {
    case "inserisci":
    nrecensione();
    break;
    case "elabora":
    elabora_guest();
    break;
    case "leggi":
    read_guest();
    break;
    }
    ?>
    </body>
    </html>


  • Consiglio Direttivo

    Ciao luseresi**.
    **Hai postato la stessa identica richiesta ieri in altra area, errata tra l'altro non essendo un problema legato al PHP ma al Js. Come ben sai il nostro regolamento, che hai accettato all'atto dell'iscrizione, non consente il crossposting:

    11. Crossposting

    11.0. Non è consentito postare lo stesso messaggio o parti di esso in più aree del forum, salvo casi di particolare interesse che dovranno comunque essere autorizzati da un Admin.

    11.1. Messaggi crossposting verranno eliminati e quando possibile riuniti.
    Se ripetuti potranno portare all'allontanamento dell'utente. Chiudo questo thread e ti invito rileggere il Regolamento del Forum.