Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: database testuale

  1. #1

    database testuale

    Ho un problemino credo di semplice soluzione (per voi...).

    Ho un database testuale (utenti.txt):

    tizio | pass1 | tizio@email.it | notat | notat | si
    caio | pass2 | caio@email.it | notac | notac | no
    mario | pass3 | mario@email.it | notam | notam | no
    etc etc

    devo costruire uno script che mi impedisca di inserire utenti (tizio, caio, mario, etc.) con lo stesso nome di quelli già presenti
    es.

    <?php
    $riga = caio; //mandata tramite _post
    $file = fopen(utenti.txt, r);
    ... explode ("|",...) ...
    ...bhò

    if (caio fa parte degli utenti) { echo "Utente già presente"; break; }
    else { il resto dello script }
    ?>


    ... vi prego aiutatemi...

    ne ho partorito uno... ma risulta essere sbagliato

    <?php

    $riga = caio;

    $file=file("utenti.txt");
    for($i=0;$i<count($file);$i++) {
    $file[$i]=explode("|",trim($file[$i]));
    if ($file[$i][0]=="$riga"")
    {
    echo "utente già registrato";
    }

    else
    {
    echo "resto dello script";
    }
    fclose($fp);

    ?>

    dov'è che sbaglio??

  2. #2
    Dovresti riportarci anche l'errore che ti dà, altrimenti non possiamo capire.

    Intant ti posso dire che il valore 'caio' di $riga deve essere racchiuso tra virgolette, altrimenti non viene visto come stringa.

    Per il resto la logica pare giusta.
    Probabilmente è un errore nel confronto tra le due stringhe: in qualche modo si vedonon differenti.
    Prova a stamparle con 'echo' via via che le scorri, per vedere se i valori sono quelli che ti aspetti.

  3. #3
    inserendo questo codice (ho aggiunto fopen rispetto a prima) l'errore è alla riga 11 quella con echo "utente già registrato":

    <?php

    $riga = "caio";

    $open=fopen("utenti.txt");
    $file=file($open);
    for($i=0;$i<count($file);$i++) {
    $file[$i]=explode("|",trim($file[$i]));
    if ($file[$i][0]=="$riga"")
    {
    echo "utente già registrato";
    }

    else
    {
    echo "resto dello script";
    }
    fclose($fp);

    ?>

  4. #4
    Ma restituisce un errore (errore php!) o semplicemente ti stampa "utente già registrato"?

    Codice PHP:
    <?php

    $riga 
    "caio";

    $open=fopen("utenti.txt");
    $file=file($open);
    for(
    $i=0;$i<count($file);$i++) {
       
    $file[$i] = explode("|",trim($file[$i]));
       
       echo 
    "
    $file[$i][0] . " == $riga " . (($file[$i][0]=="$riga") ? "Si"  "No" );
       
       if (
    $file[$i][0]=="$riga")
       {
          echo 
    "utente già registrato";
       }
       else
       {
          echo 
    "resto dello script";
       }
       
    fclose($fp);

    ?>
    Intanto con questa aggiunta ti stampa tutta la lista. Così ti guardi per quale valore non torna il confronto, e cerchi di capire il perché.

    Poi....

    1) Non hai chiuso la graffa del 'for'.

    2) Hai un " di troppo nel confronto tra valore del primo campo e $riga.

    Ciao

  5. #5
    non funziona qualsiasi nome inserisca (a prescindere se sono o meno presenti nel file utenti.txt) mi stampa:

    == caio Noresto dello script

    quindi c'è qualcosa che non và $file[$i][0]

    :-(

  6. #6
    Hai letto che ti manca la graffa di chiusura del for?

    Si capisce anche dal fatto che la echo che ti ho scritto la esegue una sola volta....

  7. #7
    l'ho chiusa la graffa... una volta ho provato prima di fclose, e una seconda volta dopo fclose... il risultato era identico

  8. #8
    Quant'è il valore di

    count($file)


    ?

  9. #9
    <?php

    $riga = "caio";

    $open=fopen("utenti.txt");
    $file=file($open);
    for($i=0;$i<count($file);$i++) {
    $file[$i] = explode("|",trim($file[$i]));

    echo "
    " . $file[$i][0] . " == $riga " . (($file[$i][0]=="$riga") ? "Si" : "No
    " );

    $num = count($file);
    echo "$num
    ";

    if ($file[$i][0]=="$riga")
    {
    echo "utente già registrato";
    }
    else
    {
    echo "resto dello script";
    }}
    fclose($fp);

    ?>

    hai ragione il count è sbagliato... è pari a 1...:-(
    in pratica $file è una scringa... HELP!!

  10. #10
    Io farei cosi`

    Codice PHP:
      1 <?php
      2     $uid 
    trim($_POST['user']);
      
    3     foreach(explode("\n",trim(file_get_contents('utenti.txt'))) as $users){
      
    4         $user explode("|",$users);
      
    5         if(trim($user[0]) == $uid){
      
    6             echo 'Utente registrato'."
    "
    ;
      
    7         }else{
      
    8             echo 'Resto dello script'."
    "
    ;
      
    9         }
     
    10     }
    A seconda di qual e` l'endline del tuo file devi cambiare \n (linux) con \r\n (win) o \r (mac).

    Ciao
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

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.