problemi con notice undefined index

Neuromante85

Nuovo Utente
14 Giu 2010
9
0
0
ciao a tutti sono nuovo del forum e premetto che sto imparando a usare php da poco tempo. ho realizzato un form di ricerca su database solo che mi invia un notice che dice appunto undefined index. metto il codice magari qualcuno sa aiutarmi grazie

<HTML>
<HEAD>
<TITLE>Cerca un cliente</TITLE>
</HEAD>
<BODY>
<form action=cerca.php method=post>
<table border=1 cellpadding=2 cellspacing=0>
<tr>
<td>Codice</td>
<td><input type=text name=nome value= "<?=$_POST["codice"] ?>" ></td>
</tr>
<tr>
<td colspan=2 align= center> <input type=submit name=azione value=Cerca> </td>
</tr>
</table>
</form>
<?php
if (!empty($_POST['codice'] ))
{
mysql_connect("localhost","root","") or die ("errore di connessione");
mysql_select_db("clienti") or die ("errore nella selezione del DB");

$sql="SELECT * FROM dati WHERE codice LIKE '%".$_POST["codice"]."%'";

$recordset=@mysql_query($sql) or die (mysql_error());

print "<table border=1>
<tr>
<td>Nome</td>
<td>Cognome</td>
<td>Data di Registrazione</td>
<td>Orario di Entrata</td>
<td>Orario di Uscita</td>
</tr>
";
while($linea=mysql_fetch_array($recordset)){
print "
<tr>
<td> ".$linea["nome"]." </td>
<td> ".$linea["cognome"]." </td>
<td> ".$linea["data_registrazione"]." </td>
<td> ".$linea["orario_entrata"]." </td>
<td> ".$linea["orario_uscita"]." </td>
</tr>
";
}

print "</table>";
}
?>
</BODY>
</HTML>
 
Ricevi questo avvertimento in quanto il parametro 'codice' non è presente quindi quando esegui l'istruzione $_POST['codice'] ottieni il messaggio di errore.
In pratica, la prima volta che carichi la pagina tale parametro non è presente. Successivamente, dopo la submit della form esso verrà trovato.
 
Basta effettuare un controllo prima di utilizzare i valori, una cosa del tipo:

PHP:
<?php
$codice = "";
if (isset($_POST['codice'])) {
    $codice = $_POST['codice'];
} 
?>

In questo modo dai un valore di default alla variabile $codice poi controlli l'esistenza del parametro $_POST['codice'] ed in caso esso sia presente assegni alla variabile $codice il nuovo valore. A questo punto $codice conterrà stringa vuota oppure il valore ricevuto in post.
 
Per evitare i warning i controlli andrebbero messi ovunque vengono utilizzati parametri che potrebbero non essere presenti. Nel tuo caso ovunque utilizzi $_POST["codice"]
 
quindi una cosa così?

anche se mi da pagina bianca...di sicuro sbaglio qualcosa

<HTML>
<HEAD>
<TITLE>Cerca un cliente</TITLE>
</HEAD>
<BODY>
<?php

$codice = "";
if (isset($_POST['codice'])) {
$codice = $_POST['codice'];
?>

<form action=cerca.php method=post>
<table border=1 cellpadding=2 cellspacing=0>
<tr>
<td>Codice</td>
<td><input type=text name=nome value= "<?=$_POST["codice"] ?>" ></td>
</tr>
<tr>
<td colspan=2 align= center> <input type=submit name=azione value=Cerca> </td>
</tr>
</table>
</form>


<?php
}

?>

<?php


$codice = "";
if (isset($_POST['codice'])) {
$codice = $_POST['codice'];




mysql_connect("localhost","root","") or die ("errore di connessione");
mysql_select_db("clienti") or die ("errore nella selezione del DB");

$sql="SELECT * FROM dati WHERE codice LIKE '%".$_POST['codice']."%'";

$recordset=@mysql_query($sql) or die (mysql_error());

print "<table border=1>
<tr>
<td>Nome</td>
<td>Cognome</td>
<td>Data di Registrazione</td>
<td>Orario di Entrata</td>
<td>Orario di Uscita</td>
</tr>
";
while($linea=mysql_fetch_array($recordset)){
print "
<tr>
<td> ".$linea["nome"]." </td>
<td> ".$linea["cognome"]." </td>
<td> ".$linea["data_registrazione"]." </td>
<td> ".$linea["orario_entrata"]." </td>
<td> ".$linea["orario_uscita"]." </td>
</tr>
";
}

print "</table>";


}
?>
</BODY>
</HTML>
 
Probabilmente volevi fare una cosa del genere:

PHP:
<html>
	<head>
		<title>Cerca un cliente</title>
	</head>

	<body>
<?php
$codice = "";
if (isset($_POST['codice'])) {
	$codice = $_POST['codice'];
}
?>
	<form action="cerca.php" method="post">
		<table border="1" cellpadding="2" cellspacing="0">
			<tr>
				<td>Codice</td>
				<td><input type="text" name="codice" value="<?php echo $codice; ?>" ></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="azione" value="Cerca"></td>
			</tr>
		</table>
	</form>
<?php
if (isset($_POST['codice'])) {
	mysql_connect("localhost","root","") or die ("errore di connessione");
	mysql_select_db("clienti") or die ("errore nella selezione del DB");

	$sql="SELECT * FROM dati WHERE codice LIKE '%".$_POST['codice']."%'";

	$recordset=@mysql_query($sql) or die (mysql_error());

	print "
		<table border='1'>
		<tr>
		<td>Nome</td>
		<td>Cognome</td>
		<td>Data di Registrazione</td>
		<td>Orario di Entrata</td>
		<td>Orario di Uscita</td>
		</tr>
	";

	while($linea=mysql_fetch_array($recordset)){
		print "
			<tr>
			<td> ".$linea["nome"]." </td>
			<td> ".$linea["cognome"]." </td>
			<td> ".$linea["data_registrazione"]." </td>
			<td> ".$linea["orario_entrata"]." </td>
			<td> ".$linea["orario_uscita"]." </td>
			</tr>
		";
	}

	print "</table>";
}
?>
	</body>
</html>

P.S.
Ho corretto l'html che era veramente brutto.
 
grazie mille facevo confusione. ora devo trovare un modo per modificare la data dal formato yyyy-mm-dd a dd-mm-yyyy

grazie ancora ciaoo
 
volevo chiederti un consiglio. praticamente vorrei fare una pagina di modifica impostata così: quando cerco tramite codice e mi restituisce un cliente mi dia la possibilità di modificare un campo orario_uscita e salvarlo nel database..non so bene come procedere:hammer:
 
grazie mille facevo confusione. ora devo trovare un modo per modificare la data dal formato yyyy-mm-dd a dd-mm-yyyy

grazie ancora ciaoo

Per quanto riguarda le conversioni dei formati tempo e data com MySQL fai riferimento QUI

Per quello che devi fare tu basta utilizzare la funzione data_format:

Codice:
SELECT date_format(campo_data, '%d-%m-%Y') from tabella;
 
grazie tutto chiaro. mi chiedevo se si può fare con php un applicazione che riceva dati in ingresso da una penna ottica ed esegua varie operazioni:book:
 

Discussioni simili