Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    OOP - Dato alternativo se non esiste

    Ciao, prelevo i seguenti dati solo se esiste $_GET['id'], ma come faccio a mostrare il dato di default ($nome = "xxx") nel caso $_GET['id'] non esiste?
    Grazie

    codice:
    class dati{	public
    		$nome = "xxx";
    
    
    	public function __construct($id){
    		$query = connetti() -> prepare ("SELECT nome FROM utenti WHERE id = ?");
    		$query -> execute(array($id));
    		$r = $query->fetch();
    
    
    		$this->nome = $r['nome'];
    	}
    }
    				
    $dati = new dati($_GET['id']);
    echo $dati->nome;

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    codice:
    public function __construct($id = "valore-default")

  3. #3
    Grazie, ma perché se dichiaro:

    codice:
    public
    	$data_chiamata = date("Y-m-d H:i:s"),
    	$nome;
    ottengo questo errore?

    Fatal error: Constant expression contains invalid operations in...

  4. #4
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Quote Originariamente inviata da magic_key Visualizza il messaggio
    Grazie, ma perché se dichiaro:

    codice:
    public
        $data_chiamata = date("Y-m-d H:i:s"),
        $nome;
    ottengo questo errore?

    Fatal error: Constant expression contains invalid operations in...
    perchè non puoi usare una funzione nella dichiarazione delle variabili, devi fare così:

    Codice PHP:

    public $data_chiamata,$nome;

    public function 
    __construct(){
        
    $this->data_chiamata date("Y-m-d H:i:s");

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    In php puoi inizializzare le proprietà della classe solo con valori statici, quindi non puoi chiamare funzioni. Dovresti inizializzare $data_chiamata nel costruttore.

    Inoltre, anche se ciò che ti hanno scritto sopra è corretto, nel tuo caso non va bene:
    Codice PHP:
    $dati = new dati($_GET['id']); 
    Se $_GET['id'] non esiste (oltre ad avere un fastidioso notice,se abilitati) passi al costruttore null, che "sovrascrive" il valore di default. Quindi ho fai:
    Codice PHP:
    if(isset($_GET['id'])){
       
    $dati = new dati($_GET['id']);
    }else{
       
    $dati = new dati();

    Oppure
    Codice PHP:
    public function __construct($id null){
        if(!
    $id){
           
    $id $valore_default;
        }
    ...

    $dati = new dati(@$_GET['id']); 
    Ultima modifica di boots; 15-03-2018 a 17:47

  6. #6
    Quote Originariamente inviata da boots Visualizza il messaggio
    Codice PHP:
    $dati = new dati(@$_GET['id']); 
    Grazie, la chiocciola cosa sta a significare?

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Sopprime eventuali messaggi di errore. Probabilmente adesso non ne hai perchè son già disabilitati da ini, ma se cambi macchina/impostazioni ti possono venir fuori

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.