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

    Alle prime armi: Undefined variable

    Ciao a tutti, sono alle prime armi con PHP. Sto seguendo la guida su HTML.IT, dove mi sono imbattuto su un pezzo di codice. Il mio problema è:

    codice:
    <?php
        $author = $_GET['author'];
    	$author = filter_var($author, FILTER_SANITIZE_STRING);
     
    	$authors = [
        	'Stephen King' => 'Stephen Edwin King (Portland, 21 settembre 1947) è uno scrittore e sceneggiatore statunitense',
        	'Arthur Conan Doyle' => 'Sir Arthur Ignatius Conan Doyle (Edimburgo, 22 maggio 1859 – Crowborough, 7 luglio 1930) è stato uno scrittore scozzese',
        	'Agatha Christie' => 'Dame Agatha Mary Clarissa Miller, Lady Mallowan, nota come Agatha Christie (Torquay, 15 settembre 1890[1] – Wallingford, 12 gennaio 1976), è stata una scrittrice britannica.'
    	];
     
    	if (!in_array($author, array_keys($authors))) {
        	$error = 'Autore non trovato';
    	} else {
    		$result = $authors[$author];
    	}
    	
    	?>
    	
    	<!DOCTYPE html>
    	<html>
    		<head>
        		<title></title>
    		</head>
    		
    		<body>
        		<h1>Risultati di ricerca per: <?php echo $author ?></h1>
     
     	   		<!-- <?php if ($error): ?>
            		<p style="color: red"><?php echo $error ?></p>
        		<?php else: ?>
            		<p><?php echo $result ?></p>
        		<?php endif ?> -->
        		
        		<?php 
        			if ($error) {
        				echo "<p style=\"color: red\">$error</p>";
        			} else {
        				echo $result;
        			}
        		?>
    		</body>
    	</html>

    Perchè mi da errore alla linea 38 ovvero "if ($error)?
    "Notice: Undefined variable: error in /Applications/XAMPP/xamppfiles/htdocs/tutorial pratico/richieste http/search.php on line 38"

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non è un vero e proprio errore, ma un "avvertimento"
    Se ci fai caso, se l'autore si trova nel array (il primo if dello script è vero) non viene definita la variabile di nome $error, ma $result. Di conseguenza php ti avvisa, nel secondo if, che tenti di usare una variabile con non esite. In questo caso php in automatico la considera come NULL e lo script continua e dovrebbe funzionare senza problemi (ad eccezione dell'avviso).

    Se disabiliti la visualizzazione dei warning/notice il messaggio non ti compare più (probabilmente lo script si affida a questo).
    Cmq la cosa più corretta è di usare la funzione isset() per vedere se la variabile esiste. Quindi invece di

    if($error)

    devi fare

    if(isset($error))

  3. #3
    Perfetto grazie mille !!

Tag per questa discussione

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.