Visualizzazione risultati 1 fino 25 di 25

Discussione: Problema lettura file

  1. #1
    Guest

    Predefinito Problema lettura file

    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

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Non è più comodo leggere il file in questo modo?
    Codice PHP:
    $file=file("anagrafica.txt");
    for(
    $i=0;$i<count($file);$i++) {
    list(
    $primo,$secondo,$terzo)=explode(" ",trim($righe[$i]));
    ...
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Scusa la mia ignoranza, ma come testo i campi che passo alla funzione?

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    In che senso "testi"?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    Guest

    Predefinito

    Come vedi dal form, una volta inseriti nome cognome e strumento, vado a vedere se e' gia' presente nel file, se e' presente mando un messaggio altrimento lo scrivo.

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ma se lo fai già, cosa ti serve in più?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    Lo faccio ma non funziona, e' quello il problema. Dal codice sopra mi fa sempre l'inserimento.

  8. #8
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Hai provato a utilizzare lo script che ti ho scritto prima?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  9. #9
    Guest

    Predefinito

    Ho provato ma mi da errore tipo questo "Notice: Uninitialized string offset: 0 in c:\programmi\easyphp1-8\www\file\index.php on line 112". Forse sbaglio a scriverlo......va bene cosi'?
    Codice PHP:
    function leggifile($nome,$cognome,$value)
    {

    $valoreritorno = TRUE;
    $file=file("anagrafica.txt");
    for(
    $i=0;$i<count($file);$i++) {
    list(
    $primo,$secondo,$terzo)=explode(" ",trim($righe[$i]));
    echo
    $righe[i];
    }
    return
    $valoreritorno;
    }
    Solo che al posto di echo $righe[i](sempre se e' corretto, dovrei testare i campi $nome $cognome e $value.

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Con il mio script tu dovresti sostituire:
    Codice PHP:
    $file = fopen("anagrafica.txt","r");
    while(
    $names = fscanf($file, "%s\t%s\t%s\n"))
    {
    list(
    $primo,$secondo,$terzo) = $names;
    Con:
    Codice PHP:
    $file=file("anagrafica.txt");
    for(
    $i=0;$i<count($file);$i++) {
    list(
    $primo,$secondo,$terzo)=explode(" ",trim($righe[$i]));
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  11. #11
    Guest

    Predefinito

    quello che ho fatto, ma poi.......

  12. #12
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Non mi sembra che è quello che hai fatto visto ciò che hai scritto prima.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  13. #13
    Guest

    Predefinito

    Allora non devo richiamare la funzione? Senti sto diventando pazzo....se no ti dispiace mi puoi dire come deve essere strutturata questa parte di codice?
    Grazie per la pazienza.

  14. #14
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Devi prendere il codice che hai scritto tu all'inizio e fare la sostituzione come ti ho spiegato prima.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  15. #15
    Guest

    Predefinito

    Ho sostituito così
    Codice PHP:
    function leggifile($nome,$cognome,$value)
    {

    $valoreritorno = TRUE;
    $file=file("anagrafica.txt");
    for(
    $i=0;$i<count($file);$i++) {
    list(
    $primo,$secondo,$terzo)=explode(" ",trim($righe[$i]));
    if (
    $primo == $nome && $secondo == $cognome && $terzo == $value){
    $valoreritorno = FALSE;
    break;
    }
    }
    return
    $valoreritorno;
    }
    Mi da una serie di errori tipo questi: " Undefined variable: righe in c:\programmi\easyphp1-8\www\file\index.php on line 112

    Notice: Undefined offset: 2 in c:\programmi\easyphp1-8\www\file\index.php on line 112

    Notice: Undefined offset: 1 in c:\programmi\easyphp1-8\www\file\index.php on line 112"

  16. #16
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Modifica questa riga:
    Codice PHP:
    list($primo,$secondo,$terzo)=explode(" ",trim($righe[$i]));
    In questo modo:
    Codice PHP:
    list($primo,$secondo,$terzo)=explode(" ",trim($file[$i]));
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  17. #17
    Guest

    Predefinito

    L'inserimento e il controllo se e' presente lo da, solamente da anche questi errori: Undefined offset: 2 in c:\programmi\easyphp1-8\www\file\index.php on line 112

    Notice: Undefined offset: 1 in c:\programmi\easyphp1-8\www\file\index.php on line 112

  18. #18
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Sembra che qualche riga non sia formattata bene. Prova a scrivere qui il contenuto del file.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  19. #19
    Guest

    Predefinito

    Angelo Pellegrini Flauto
    Angelo Gialli Flauto
    Angelo Verdi Flauto
    Questo e' quello che mi scrive nel file. Il dubbio mi viene, perche' all'inizio del file c'e' una riga bianca.

  20. #20
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Se elimini la prima riga lo script non dovrebbe darti errori.
    Nello script potresti modificare questa riga:
    Codice PHP:
    list($primo,$secondo,$terzo)=explode(" ",trim($file[$i]));
    In questo modo:
    Codice PHP:
    $file[$i]=explode(" ",trim($file[$i]));
    if (
    count($file[$i])!=3)
    continue;
    list(
    $primo,$secondo,$terzo)=$file[$i];
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  21. #21
    Guest

    Predefinito

    Infatti eliminando la prima riga funziona benissimo. Approfitto per la tua bravura e pazienza. Dato che questo script che mi hai suggerito non mi e' mai capitato di applicarlo, ti chiedo troppo se me ne dai una delucidazione + approfondita? Grazie ancora

  22. #22
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Intendi il pezzo che ti ho scritto nell'ultimo messaggio?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  23. #23
    Guest

    Predefinito

    Anche......ma sopratutto quello prima

  24. #24
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  25. #25
    Guest

    Predefinito

    Molto gentile e grazie ancora

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •