• 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]<?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();" 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>[/php]


  • User

    Buonasera a tutti, rinnovo la mia richiesta, qualcuno mi può aiutare?
    Grazie mille e buona serata.


  • User

    Ciao ragazzi, proprio nessuno che può cortesemente darmi una mano?
    Grazie mille e buona serata.


  • Consiglio Direttivo

    Ciao luseresi,
    immagino tu debba strutturare il tuo script per fare in modo che al disabled=true delle select associ la disabilitazione anche del controllo campo. Oppure potresti valorizzare in automatico il campo con un valore che nella tua successiva query considererai come NULL. 😉


  • User

    Ciao Samyorn,
    mi scuso per aver duplicato in piu aree la mia richiesta...
    Mi parlavi di due ipotesi, sono valide entrambe, avresti la possibilità di farmi un esempio o indicarmi dove posso trovare le istruzioni o degli esempi o per fare in modo che al disabled=true delle select associ la disabilitazione anche del controllo campo, oppure per valorizzare in automatico il campo con un valore che nella tua successiva query considererai come NULL, come tu mi hai gentilmente consigliato.
    grazie mille e buona serata


  • Consiglio Direttivo

    @luseresi said:

    mi scuso per aver duplicato in piu aree la mia richiesta...
    😉

    Nel primo caso potresti aggiungere come condizione del controllo:

    if(voto_qualita_cam.value=="")
    ```Che il campo tipo struttura sia diverso da 3:
    

    if(voto_qualita_cam.value=="" && tipo_struttura.value != 3)

    Puoi regolare di conseguenza anche le altre condizioni. ;)
    
    Nell'altro caso potresti impostare a NOSET il valore dei campi e nel rimaneggio con PHP considererai nullo questo valore.
    
    Ovviamente la soluzione ideale è la prima secondo il mio punto di vista. ;)
    
    
    
    @luseresi said:
    > grazie mille e buona serata
    Anche a te. :ciauz:

  • User

    Grazie Samyorn,
    ora funziona, ho optato per la prima soluzione, perfetto e ti ringrazio tantissimo.
    Rimane un dubbio, non appare più il controllo javascript sul campo(e questo va bene) ma continua ad apparirmi la notice Notice: Undefined index sul campo vuoto quando faccio submit....mi sto perdendo in un bicchier d'acqua?
    grazie mille


  • Consiglio Direttivo

    Non sono ferrato in Js ma credo che in questo caso il problema sia che non vengono proprio valorizzati i campi, neanche come campi vuoti. O provi ad inizializzarli dichiarandoli .value="" o gli assegni il valore di "" tramite else:

    ......
    else
    {
    voto_qualita_cam.value=="";
    }
    ```Ripeto, non sono ferrato con il Js, solitamente lo approccio per logica o rapportandolo ad altri linguaggi ;)
    Facci saperi se risolvi :ciauz:

  • User

    Ciao Samyorn,
    ho fatto delle prove ma il notice appare comunque...probabilmente devo risolvere la cosa in php nelle istruzioni che scrivono i dati nel database. La cosa strana è che io standard nella form assegno value "" al campo, probabilmente disabilitandolo comunque non lo vede proprio inizializzato comunque, pur avendogli associato come value standard il ""....non so come venirne fuori...nel forum php sfortunatamente non mi rispondono, mi sa che è perche' c'e' una parte di js...


  • Consiglio Direttivo

    Potresti provare così:

    [php]if ($_POST['voto_qualita'] != "")
    {
    $voto_qualita_cam=$_POST['voto_qualita_cam'];
    }
    else
    {
    $voto_qualita_cam="";
    }
    ......
    $inserimento=mysql_query("insert into recensioni (nome_utente, voto_qualita_cam, voto_ristorante, data_ora_ins) values ('".$_POST['nome_utente']."', '$voto_qualita_cam', '$voto_ristorante', now())");
    [/php]
    🙂


  • User

    Niente Samyorn...purtroppo appare sempre Notice: Undefined index: voto_qualita_cam...

    Ho scritto cosi...

    <?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();" 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['voto_qualita_cam'] != ""){
    $voto_qualita_cam=$_POST['voto_qualita_cam'];
    }
    else{
    $voto_qualita_cam="";
    }
    if($_POST){
    $inserimento=mysql_query("insert into recensioni (nome_utente, voto_qualita_cam, voto_ristorante, data_ora_ins) values ('".$_POST['nome_utente']."', '$voto_qualita_cam', '$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>


  • User

    Buongiorno a tutti,
    rinnovo il post che ho scritto tempo fa,c'e' qualcuno che può aiutarmi?
    Grazie mille e auguri a tutti.