Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante variabili

    Buonasera,
    ho un file denominato salva_commessa.php che recupera tante varibili traminte _POST ed esegue una query di insert, fintanto che il controllo errori php era disabilitato io non vedevo nessun NOTICE, ma adesso che sto lavorando in locale mi sono reso conto che non appena eseguo la query di insert (che comunque ha esito positivo), ricevo per ogni singola variabile un errore del tipo

    codice:
    C:\xampp\htdocs\gos\page\salva_commessa.phpon line 20
    
    Notice: Undefined index: itr3 in C:\xampp\htdocs\gos\page\salva_commessa.phpon line 41
    
    Notice: Undefined index: itr4 in C:\xampp\htdocs\gos\page\salva_commessa.phpon line 42
    
    Notice: Undefined index: itr5 in C:\xampp\htdocs\gos\page\salva_commessa.phpon line 43
    
    Notice: Undefined index: itr6
    
    ecc ecc ecc
    Vi chiedo se esiste un modo, per ciclare e controllare le variabili in modo da non ottenere questo Notice.

    Allego il codice

    Codice PHP:
    <?php
    /* RECUPERO I DATI DAL FORM INSERIMENTO COMMESSA */
    if (isset($_POST)) {
    $veicolo mysqli_real_escape_string($mysqli$_POST['veicolo']);
    $targa mysqli_real_escape_string($mysqli$_POST['targa']);
    $km mysqli_real_escape_string($mysqli$_POST['km']);
    $telaio mysqli_real_escape_string($mysqli$_POST['telaio']);
    $cliente mysqli_real_escape_string($mysqli$_POST['cliente']);
    $indirizzo mysqli_real_escape_string($mysqli$_POST['indirizzo']);
    $piva mysqli_real_escape_string($mysqli$_POST['piva']);
    $tel mysqli_real_escape_string($mysqli$_POST['tel']);
    $totale mysqli_real_escape_string($mysqli$_POST['totale']);
    $n_tecnico mysqli_real_escape_string($mysqli$_POST['n_tecnico']);
    $pagamento mysqli_real_escape_string($mysqli$_POST['pagamento']);
    $data mysqli_real_escape_string($mysqli$_POST['data']);
    $allegato mysqli_real_escape_string($mysqli$_POST['allegato']);
    $allegato1 mysqli_real_escape_string($mysqli$_POST['allegato1']);
    $allegato2 mysqli_real_escape_string($mysqli$_POST['allegato2']);
    $allegato3 mysqli_real_escape_string($mysqli$_POST['allegato3']);

    /* FILTRI e CONVERSIONI SULLE VARIABILI POST */
    $veicolo trim(strip_tags(strtoupper($veicolo)));
    $targa trim(strip_tags(strtoupper($targa)));
    $km trim(strip_tags(strtoupper($km)));
    $telaio trim(strip_tags(strtoupper($telaio)));
    $cliente trim(strip_tags(strtoupper($cliente)));
    $indirizzo trim(strip_tags(strtoupper($indirizzo)));
    $piva trim(strip_tags(strtoupper($piva)));
    $tel trim(strip_tags(strtoupper($tel)));
    $totale trim(strip_tags(strtoupper($totale)));
    $n_tecnico trim(strip_tags(strtoupper($n_tecnico)));
    $pagamento trim(strip_tags(strtoupper($pagamento)));
    $data trim(strip_tags(strtoupper($data)));
    $allegato trim(strip_tags(strtoupper($allegato)));
    /* FINE FILTRI e CONVERSIONI SULLE VARIABILI POST */


    $itr1 mysqli_real_escape_string($mysqli$_POST['itr1']);
    $itr2 mysqli_real_escape_string($mysqli$_POST['itr2']);
    ecc

    $for1 
    mysqli_real_escape_string($mysqli$_POST['for1']);
    $for2 mysqli_real_escape_string($mysqli$_POST['for2']);
    ecc

    $itr1 
    trim(strip_tags(strtoupper($itr1)));
    $itr2 trim(strip_tags(strtoupper($itr2)));
    ecc

    $for1 
    trim(strip_tags(strtoupper($for1)));
    $for2 trim(strip_tags(strtoupper($for2)));
    ecc

    $q1 
    mysqli_real_escape_string($mysqli$_POST['q1']);
    $q2 mysqli_real_escape_string($mysqli$_POST['q2']);
    ecc

    $iu1 
    mysqli_real_escape_string($mysqli$_POST['iu1']);
    $iu2 mysqli_real_escape_string($mysqli$_POST['iu2']);
    ecc

    $sc1 
    mysqli_real_escape_string($mysqli$_POST['sc1']);
    $sc2 mysqli_real_escape_string($mysqli$_POST['sc2']);
    ecc

    $imp_1 
    mysqli_real_escape_string($mysqli$_POST['imp_1']);
    $imp_2 mysqli_real_escape_string($mysqli$_POST['imp_2']);
    ecc

    if ($q1 == '') { $q1 0; }
    if (
    $q2 == '') { $q2 0; }
    ecc

    if ($iu1 == '') { $iu1 0; }
    if (
    $iu2 == '') { $iu2 0; }
    ecc

    if ($sc1 == '') { $sc1 0; }
    if (
    $sc2 == '') { $sc2 0; }
    ecc

    if ($imp_1 == '') { $imp_1 0; }
    if (
    $imp_2 == '') { $imp_2 0; }
    ecc


    $sq1 
    "INSERT INTO commesse (veicolo,targa,km,telaio,cliente,indirizzo,piva,tel,itr1,itr2,itr3,itr4,itr5,itr6,itr7,itr8,itr9,itr10,itr11,itr12,itr13,itr14,itr15,for1,for2,for3,for4,for5,for6,for7,for8,for9,for10,for11,for12,for13,for14,for15,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,iu1,iu2,iu3,iu4,iu5,iu6,iu7,iu8,iu9,iu10,iu11,iu12,iu13,iu14,iu15,sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8,sc9,sc10,sc11,sc12,sc13,sc14,sc15,imp_1,imp_2,imp_3,imp_4,imp_5,imp_6,imp_7,imp_8,imp_9,imp_10,imp_11,imp_12,imp_13,imp_14,imp_15,totale,n_tecnico,pagamento,data,allegato) VALUES ('$veicolo','$targa','$km','$telaio','$cliente','$indirizzo','$piva','$tel','$itr1','$itr2','$itr3','$itr4','$itr5','$itr6','$itr7','$itr8','$itr9','$itr10','$itr11','$itr12','$itr13','$itr14','$itr15','$for1','$for2','$for3','$for4','$for5','$for6','$for7','$for8','$for9','$for10','$for11','$for12','$for13','$for14','$for15','$q1','$q2','$q3','$q4','$q5','$q6','$q7','$q8','$q9','$q10','$q11','$q12','$q13','$q14','$q15','$iu1','$iu2','$iu3','$iu4','$iu5','$iu6','$iu7','$iu8','$iu9','$iu10','$iu11','$iu12','$iu13','$iu14','$iu15','$sc1','$sc2','$sc3','$sc4','$sc5','$sc6','$sc7','$sc8','$sc9','$sc10','$sc11','$sc12','$sc13','$sc14','$sc15','$imp_1','$imp_2','$imp_3','$imp_4','$imp_5','$imp_6','$imp_7','$imp_8','$imp_9','$imp_10','$imp_11','$imp_12','$imp_13','$imp_14','$imp_15','$totale','$n_tecnico','$pagamento',STR_TO_DATE('$data', '%d/%m/%Y'),'$allegato')";
    $rs1 $mysqli->query($sq1);
    var_dump($sq1);
    exit;

    if (!
    $rs1) {
    echo 
    "<p style='margin-top: 40px;text-align:center;'>Ho trovato un errore nell'esecuzione della <b>QUERY</b></p>";
    die(
    "Errore nella query $sq1: " mysqli_error());
    }else{
    ?>
    Grazie
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    io farei così:
    - un array di configurazione che contiene esattamente i campi della tabella da riempire e i riferimenti alle chiavi dell'array. Per ognuno, imposta le azioni che devi fare per validare il dato (nel tuo codice vedo che usi praticamente sempre mysql_real_escape, a volte strip_tags e trim e altre volte converti un dato vuoto in zero)
    - se POST è pieno, scorri l'array di configurazione con un foreach, cerchi la chiave nell'array POST array_key_exists, in caso positivo prendi il dato e lo elabori altrimenti lo setti a null. Alla fine lo salvi in un altro array
    - quando prepari la query, usi implode sui valori dell'ultimo array per generare la stringa da mettere nel VALUES

    se, invece, puoi omogeneizzare i controlli e le modifiche sui dati da inserire, ci sarebbe la soluzione che trovi nella risposta accettata qui: https://stackoverflow.com/questions/...abase-with-php

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da clasku Visualizza il messaggio
    io farei così:
    - un array di configurazione che contiene esattamente i campi della tabella da riempire e i riferimenti alle chiavi dell'array. Per ognuno, imposta le azioni che devi fare per validare il dato (nel tuo codice vedo che usi praticamente sempre mysql_real_escape, a volte strip_tags e trim e altre volte converti un dato vuoto in zero)
    - se POST è pieno, scorri l'array di configurazione con un foreach, cerchi la chiave nell'array POST array_key_exists, in caso positivo prendi il dato e lo elabori altrimenti lo setti a null. Alla fine lo salvi in un altro array
    - quando prepari la query, usi implode sui valori dell'ultimo array per generare la stringa da mettere nel VALUES

    se, invece, puoi omogeneizzare i controlli e le modifiche sui dati da inserire, ci sarebbe la soluzione che trovi nella risposta accettata qui: https://stackoverflow.com/questions/...abase-with-php
    Ciao clasku,
    anzitutto grazie per la risposta, riusciresti se non ti porta via troppo tempo, a postarmi un esempio di come organizzare il mio codice ?
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.