[RISOLTO] [PHP] Istruzione "if" non funziona

Discussione in 'PHP' iniziata da CristianB72, 26 Gennaio 2017.

  1. CristianB72

    CristianB72 Nuovo Utente

    Registrato:
    24 Giugno 2016
    Messaggi:
    24
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Ri-buonasera al popolo di MrWebmaster!
    Ho un nuovo quesito da sottoporre agli "illuminati" di questo ottimo sito, sempre in ambito PHP.
    Sto inventandomi delle esercitazioni improntate sui database testuali per analizzare ogni singolo elemento e togliermi qualsiasi dubbio inerente al loro funzionamento.
    Premetto che tutti i nomi e numeri di telefono sono totalmente inventati.
    Il primo elemento è l'ID univoco a sua volta corrispondente all'ultimo elemento password.

    Questo, il contenuto del database.txt:
    Codice:
    1|Ermanno|Foscari|Viale Ermanno Giordani XXV, 1|Bergamo|066549873|gty7
    2|Cristian|Bugno|Via Ugo Foscolo, 15|Firenze|0554597332|iuy7
    3|Marino|De Palo|Viale Zara, 23|Roma|061154702|78hg
    4|Rolando|Furioso|Via Mortara, 15|Ferrara|06122382|34er
    5|Mirco|Bertocchi|Viale Europa, 999|Verona|045549873|88ui
    6|Lorenzo|Bertarelli|Viale Europa, 115|Verona|04598700|34as
    7|Marco|Malvisi|Via Ungaretti, 7|Rovigo|042546710|ty11
    8|Luisa|Maini|Via dell'Angelus, 211|Rovereto|0445110710|tc56
    9|Marika|Foletti|Via Sasso Marconi, 33|Genova|019000002|5erq
    10|Susanna|Righetti|Viale Australia, 88|Padova|049113578|70kk
    11|Luisella|Martini|Via Bergamotto, 90|Padova|049997744|11qq
    12|Leonardo|Manera|Via Jugoslavia, 65|Venezia|041357845|io94
    13|Marisa|Laurito|Via dello Spezzatino, 14|Venezia|041324679|123
    14|Massimo|Musiani|Via Le Dita dal Naso, 77|Ferrara|053277877|71z14
    15|Antenore|Necchi|Via Ladino, 4|Ferrara|05327784577|7a7
    
    Questo invece è lo script che dovrebbe apportare una modifica all'indirizzo e alla città dell'ipotetico utente:
    PHP:
    function modifica($elem1$elem2$elem3$elem4)
                {
                   
                    
    $primo fopen ("database.txt""r");
                    
    $secondo fopen ("database_new.txt""a");
                    while (
    $linea fgets ($primo))
                        {
                            
    $arg explode("|"$linea);
                            if (
    $arg[0] == $elem1)
                                {
                                    if (
    $arg[6] == $elem4)
                                        {
                                            
    $rigamodificata $arg[0]."|".$arg[1]."|".$arg[2]."|".$elem2."|".$elem3."|".$arg[5]."|".$arg[6];
                                            
    fwrite ($secondo$rigamodificata);
                                            echo 
    "<br/>Indirizzo modificato con successo!!!<br/>";
                                        }else
                                            {
                                                
    fwrite ($secondo$linea);
                                                echo 
    "<br/>La password ".$elem4." non corrisponde, nessuna modifica effettuata!<br/>";
                                            }
                                   
                                }else
                                    {
                                        
    fwrite ($secondo$linea);
                                    }
                           
                        }
                    
    fclose ($secondo);
                    
    fclose ($primo);
                    
    unlink ("database.txt");
                    
    rename ("database_new.txt""database.txt");
                   
                }

    modifica("13""Corso Giovecca, 71""Venezia""123");
    La mia domanda è, come mai lo script non modifica l'indirizzo dell'utente scelto? Ovvero, invocando la funzione "modifica()" e selezionando l'ID numero 13 e relativa password, sembra che la seconda istruzione "if" non da' esito positivo. Ho fatto mille prove e modifiche al codice ma non ne esco vivo.
    Sempre un grazie infinito a chi mi risponderà. :)
     
  2. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    Ciao, le due stringhe non sono uguali. Se metti un var_dump prima della if ti accorgi della differenza
    PHP:
    var_dump($elem4);
    var_dump($arg[6]);
    puoi utilizzare la funzione trim() per eliminare gli spazi.
     
  3. CristianB72

    CristianB72 Nuovo Utente

    Registrato:
    24 Giugno 2016
    Messaggi:
    24
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Hai ragione Criric....cavolo..! Ma lo spazio a cosa è dovuto? Cioè il "123 " da cosa viene creato? Dal "\r\n"?
     
  4. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    si, pi+ che uno spazio è un a capo
     
  5. CristianB72

    CristianB72 Nuovo Utente

    Registrato:
    24 Giugno 2016
    Messaggi:
    24
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Capisco....probabilmente facevo un test attraverso l'uso di print_r() e non col var_dump().
    Può essere?
     
  6. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    con il print_r non è cosi evidente lo spazio, devi selezionare il testo per vederlo.
    Il parametro "a" della funzione fopen() aggiunge il testo indicato a quello già esistente ma non aggiunge la linea, devi aggiungerla tu con \n
    Se vuoi trimmare per sicurezza tutti gli elementi di un array puoi utilizzare array_map()
    PHP:
    $arg array_map('trim'explode("|"$linea));
     
  7. CristianB72

    CristianB72 Nuovo Utente

    Registrato:
    24 Giugno 2016
    Messaggi:
    24
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Ottimo Criric, sei stato prezioso nell'aiuto!
     
    A criric piace questo elemento.
Sto caricando...

Condividi questa Pagina