Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    "ovviare" ai php notice

    Codice PHP:
    return <<<SQL UPDATE anagrafica_full SET  cognome="{$Anagrafica['cognome']}"nome="{$Anagrafica['nome']}WHERE id='{$Id}' 
    mi sta bene che, ad esempio, il campo NOME possa essere vuoto

    se non inserisco niente nella casella di testo quando vado a fare una query di update ottengo un NOTICE di "undefined index" perchè ovviamente non ho inserito niente..

    come posso risolvere? senza nascondere la visualizzazione di questo errore..
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2

    Re: "ovviare" ai php notice

    if (!isset({$Anagrafica['nome']}))
    $Anagrafica['nome']='';

  3. #3
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Beh, in realtà l'elemento "nome" dell'array $anagrafica non è vuoto, è inesistente.
    La soluzione che ti hanno proposto setta a "" il campo nel DB.

    Se invece (come probabile) vuoi che il campo venga lasciato inalterato, devi costruire la query aggiungendo i diversi pezzi a secondo che gli elementi dell'array siano settati o meno, ad esempio

    Codice PHP:
    if (isset({$Anagrafica['nome']})) q.=' nome="'.$Anagrafica['nome'].'"'

  4. #4
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    siccome ho qualcosa come 300 campi, non è che posso mettermi a scrivere 300 righe per ogni campo

    direte voi, fai un ciclo

    ma non posso fare un ciclo, perchè se quel valore nell'array non esiste proprio , come faccio ad assegnargli un valore?

    ovvero sia

    Codice PHP:
    return <<<SQL UPDATE anagrafica_full SET  
    cognome
    ="{$Anagrafica['cognome']}"
    nome="{$Anagrafica['nome']}"
    eta="{$Anagrafica['eta']}"
    sesso="{$Anagrafica['sesso']}"
    WHERE id='{$Id}' 
    $Anagrafica è l'array contenente tutti gli elementi, mettiamo caso che $Anagrafica['eta'] non esiste. L'unica maniera di saperlo è chiamare $Anagrafica['eta'], non riesco a trovare una possibile maniera di assegnare NULL, stringa vuota, o altro ad un campo che non esiste.

    se faccio un ciclo tipo

    Codice PHP:
    foreach ($Anagrafica as $key=>$value)
    // so che ogni $value esiste, ma se non è presente (tipo età) come faccio? 
    :master:
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  5. #5
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Lasciando perdere le considerazioni sulla sicurezza della cosa (non fai nessuna validazione?) potresti

    Codice PHP:
    q='UPDATE anagrafica_full SET ';
    foreach (
    $Anagrafica as $key=>$value){
      
    q.=$key.'="'.$value.'", ';
    }
    rtrim($q,', ');
    q.=' WHERE id='.$id 

  6. #6
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da Luke70
    Lasciando perdere le considerazioni sulla sicurezza della cosa (non fai nessuna validazione?) potresti

    Codice PHP:
    q='UPDATE anagrafica_full SET ';
    foreach (
    $Anagrafica as $key=>$value){
      
    q.=$key.'="'.$value.'", ';
    }
    rtrim($q,', ');
    q.=' WHERE id='.$id 
    la sicurezza c'è, l'array che arriva alla funzione di inserimento è stato "pulito" prima

    ma cosi cosa risolvo?

    la mia tabella è cosi composta (esempio), e mi sta bene che alcuni campi possano essere non inseriti

    cognome
    nome
    sesso
    eta

    se l'array mi arriva cosi

    $Anagrafica['cognome'] = "Rossi,
    $Anagrafica['nome'] = "Mario,
    $Anagrafica['eta'] = "23",

    quindi non è stato inserito niente nella casella di testo SESSO..

    quando arriva a fare l'insert (o update) e il campo $Anagrafica['sesso'] non esiste ricevo un notice. Come ovviare?

    con quel for risolvo questa domanda sopra? In tal caso non ho capito il tuo codice
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  7. #7
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    costruendo la query con un foreach a partire da $anagrafica, metti nella query solo i riferimenti ai campi che sono presenti in $anagrafica: se $anagrafica['sesso'] non è definito allora non viene scritto nulla nella query.

  8. #8
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da Luke70
    costruendo la query con un foreach a partire da $anagrafica, metti nella query solo i riferimenti ai campi che sono presenti in $anagrafica: se $anagrafica['sesso'] non è definito allora non viene scritto nulla nella query.
    ah, ecco, ora mi torna.. proverò appena posso il tuo codice e ti faccio sapere
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

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