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

CristianB72

Nuovo Utente
24 Giu 2016
24
1
3
52
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à. :)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
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.
 

CristianB72

Nuovo Utente
24 Giu 2016
24
1
3
52
Hai ragione Criric....cavolo..! Ma lo spazio a cosa è dovuto? Cioè il "123 " da cosa viene creato? Dal "\r\n"?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
si, pi+ che uno spazio è un a capo
 

CristianB72

Nuovo Utente
24 Giu 2016
24
1
3
52
Capisco....probabilmente facevo un test attraverso l'uso di print_r() e non col var_dump().
Può essere?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
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));
 
Discussioni simili
Autore Titolo Forum Risposte Data
C [RISOLTO]Inserimento variabile php in input html PHP 20
moustache [RISOLTO] SQL PHP IIS PHP 8
L update tabelle in php mysql [risolto] PHP 6
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
C [RISOLTO][PHP] Errore di sintassi PHP 8
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15
Zea [PHP] RISOLTO - creare link con il risultato dell'interrogazione db PHP 1
A [PHP] [RISOLTO]Compilazione campi form da record db PHP 3
A [PHP] [RISOLTO] Modifica record db da form PHP 11
G [PHP][RISOLTO] Include/Require non funzionante PHP 9
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
G [RISOLTO][PHP] Call to a member function num_rows() on a non-object PHP 9
U [PHP - RISOLTO] Tabella dinamica: colonne selezionate da checkbox PHP 40
fabryx [PHP] RISOLTO: Download file da web e trasferimento su server PHP 2
fabryx [PHP]RISOLTO: Parsing xml nodi con caratteri speciali PHP 1
CristianB72 [RISOLTO][PHP] preg_match di un array PHP 7
G [RISOLTO][PHP] Estrapolare dati da Tabella PHP 11
A [RISOLTO]Errore caricamento file php PHP 21
coccobil [PHP] RISOLTO -Recupare valore data che soddisfa certi requisiti da array PHP 3
fabryx [PHP]RISOLTO: Trasformare righe in colonne assegnando singole variabili PHP 10
fabryx [PHP]RISOLTO: eliminazione riga con singolo valore duplicato in array PHP 19
elpirata [RISOLTO]Stampare giorno della settimana in tabella php PHP 6
elpirata [PHP] [RISOLTO] Stampare classe css in base al risultato della query PHP 6
elpirata [Risolto] Gestione Prenotazioni script php PHP 25
K [risolto] passaggio variabile a pagina php con ajax Ajax 6
J [risolto] Trasformare la seguente classe PHP PHP 2
E [risolto] win 8.1 + IE11 le sessioni PHP non fuonzionano correttamente PHP 7
N [RISOLTO] Mostrare a video le checkbox selezionate con PHP e MySQL PHP 4
otto9due [risolto] Problema sessioni php e login PHP 5
G [risolto] Creazione file excel con PHP PHP 3
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
Alessandro Le Mura [risolto] PHP problema memorizzazione array PHP 4

Discussioni simili