Buongiorno a tutto il forum. Il mio scopo e' quello di scrivere un file e controllare prima della scrittura se il nominativo e' presente. il Codice e' il seguente:
Codice PHP:
<html>
<head>
<title>
Opeazioni con i file
</title>
</head>
<body >
<h1>
Inserimento nomi
</h1>
<?
if (isset($_REQUEST['nascosto'])){
foreach($_REQUEST['strumento'] as $value)
{
$nome = $_REQUEST['nome'];
$cognome = $_REQUEST['cognome'];
$nome = ucfirst($nome);
$cognome = ucfirst($cognome);
$value = ucfirst($value);
if(leggifile($nome,$cognome,$value)){
scrivifile($nome,$cognome,$value);
}else{
echo "Nominativo Presente";
}
}
}else{
?>
<table border = "0" align = "center">
<form method = "post" action = "<? $_SERVER['PHP_SELF'];?>">
<tr>
<td>
Nome :
</td>
<td>
<input type = "text" size = "15" name = "nome">
</td>
</tr>
<tr>
<td>
Cognome :
</td>
<td>
<input type = "text" size = "15" name = "cognome">
</td>
</tr>
<tr>
<td>
Seleziona Strumento
</td>
<td>
<select name = "strumento[]">
<option>Flauto</option>
<option>Ottavino</option>
<option>Clarinetto</option>
<option>Clarinetto Contralto</option>
<option>Clarinetto Basso</option>
<option>Oboe</option>
<option>Sax Soprano</option>
<option>Sax Contralto</option>
<option>Sax Baritono</option>
<option>Sax Tenore</option>
<option>Flicorno Soprano</option>
<option>Flicorno Contralto</option>
<option>Flicornino</option>
<option>Corno</option>
<option>Basso in Sib</option>
<option>Trombone</option>
<option>Flicorno Tenore</option>
<option>Flicorno Baritono</option>
<option>Tromba</option>
<option>Batteria</option>
<option>Percussioni</option>
</select>
</td>
</tr>
<tr>
<td align = "center" colspan = "2">
<input type = "submit" value = "Inserisci">
<input type = "hidden" name = "nascosto">
</td>
</tr>
</form>
</table>
<?}?>
<?
function scrivifile($nome,$cognome,$value)
{
$file = fopen("anagrafica.txt","a");
$testo = "$nome $cognome $value \r\n";
if(fwrite($file,$testo) == FALSE){
echo "Inserimento Errato";
}else{
echo "Inserimento Effettuato";
}
}
function leggifile($nome,$cognome,$value)
{
$valoreritorno = TRUE;
$file = fopen("anagrafica.txt","r");
while($names = fscanf($file, "%s\t%s\t%s\n"))
{
list($primo,$secondo,$terzo) = $names;
echo "primo---------------> $primo <br>";
echo "secondo-------------> $secondo <br>";
echo "terzo---------------> $terzo <br>";
if ($primo == $nome && $secondo == $cognome && $terzo == $value){
$valoreritorno = FALSE;
break;
}
}
return $valoreritorno;
}
?>
</body>
</html>
Il problema nasce quando devo leggere il file prima della scrittura........a quanto pare non effettua il ciclo while. Premetto che il file che scrivo e' di questo tipo: pippo rossi flauto \n. Forse sbaglio nell'impostazione della stringa. Non lo so......aiutatemi. Grazie