Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    Domanda da quasi-neofita

    Ciao a tutti,
    è il mio primo post in questo forum

    Sto impazzendo dietro un semplice controllo if di uno script PHP

    E' possibile che lo stesso if funzioni per un determinato valore di un campo di un database e non funga per un altro campo?

    Esempio:

    Codice PHP:
    if ($row['campo1']=="-----")
            {
                
    $mio_valore="valore_a";
            }
            else
            {
                
    $mio_valore="valore_b";
            } 
    I due campi fanno parte della stessa tabella di un db, sono entrambi di tipo char, stessa collation.

    Dov'è l'errore?

    Grazie in anticipo per l'attenzione!

    ruster1969.

  2. #2
    scusa eh!... ma fai prima a fare:

    $mio_valore="valore_a";

    senza la if. A parte il fatto di dover indovinare l'errore che ti da..

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    scusa eh!... ma fai prima a fare:

    $mio_valore="valore_a";
    scusami tu, ho sbagliato lo script, ora l'ho corretto

    [b]
    senza la if. A parte il fatto di dover indovinare l'errore che ti da..
    [b]
    l'errore consiste nel fatto che l'if in un caso funziona e quindi mi trova sia i valori uguali a "-----" che quelli diversi, nel secondo nonostante ci siano valori "-----" e non, mi dà lo stesso risultato per tutti i record... spero di essermi spiegato

  4. #4
    va gia' meglio.

    rimane pero' il fatto che non conoscendo le due strutture tabellari ed i loro dati contenuti quello che sostieni diventa un'affermazione senza riscontro da parte nostra.

    Forse qualche differenza ci sara' sicuramente se ti da lo stesso risultato per tutti i record pur essendo i record diversi tra di loro. magari un errore logico. Bisognerebbe dare un'occhiata al codice utilizzato.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Allora, il db viene popolato con un ""LOAD DATA LOCAL INFILE che carica un file csv.

    Qualcosa si muove: ho provato a scambiare la posizione delle due colonne di dati della tabella formato csv che servono a popolare i due campi in questione.

    Ora il primo non funziona ma il secondo sì.

    Quindi credo che tutto dipenda dal csv...

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Non ci ho capito molto, ma mi viene il dubbio essendo un csv che da qualche parte ci sia uno spazio che a occhio nn vedi, ma che causa la diseguaglianza.

    ciao

  7. #7
    Originariamente inviato da gianiaz
    Non ci ho capito molto, ma mi viene il dubbio essendo un csv che da qualche parte ci sia uno spazio che a occhio nn vedi, ma che causa la diseguaglianza.

    ciao
    ho avuto lo stesso sospetto, e ho controllato il contenuto di quel campo: a prima vista il contenuto "-----" era composto da 5 caratteri... per scrupolo ho fatto il controllo inserendo uno STRLEN e in effetti è proprio così, la stringa risulta di 6 caratteri!

    nel foglio csv la lunghezza è di n caratteri, è quando importo la tabella sul db che misteriosamente la stringa mi diventa di n+1 caratteri...

    forse ciò dipende dal fatto che la colonna "ballerina" è l'ultima a destra del foglio csv e quando faccio il LOAD DATA viene aggiunto un carattere, cosa che non succede per tutte le altre colonne...

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    guarda, anche se è una funzione molto comoda LOAD DATA INFILE a me sta sulle scatole, mi ha fatto sclerare con i charset, quindi non la ritengo molto affidabile :P

    ciao

  9. #9
    Originariamente inviato da ruster1969
    ho avuto lo stesso sospetto, e ho controllato il contenuto di quel campo: a prima vista il contenuto "-----" era composto da 5 caratteri... per scrupolo ho fatto il controllo inserendo uno STRLEN e in effetti è proprio così, la stringa risulta di 6 caratteri!

    nel foglio csv la lunghezza è di n caratteri, è quando importo la tabella sul db che misteriosamente la stringa mi diventa di n+1 caratteri...

    forse ciò dipende dal fatto che la colonna "ballerina" è l'ultima a destra del foglio csv e quando faccio il LOAD DATA viene aggiunto un carattere, cosa che non succede per tutte le altre colonne...
    prova a normalizzare la colonna con TRIM(). In pratica: dopo avere caricato il file con LOAD DATA esegui un update sulle colonne interessate:

    update tabella set campo = TRIM(campo)

    Tanto per informazione: potrebbero anche esserci stringhe in altri campi che necessitano di essere sottoposte alla funzione mysql_real_escape_string .... il LOAD DATA e' superveloce ma bisogna che i dati nei campi siano puliti. Lo spazio che trovi potrebbe essere dato da \r\n a fine riga del file .csv

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Originariamente inviato da gianiaz
    guarda, anche se è una funzione molto comoda LOAD DATA INFILE a me sta sulle scatole, mi ha fatto sclerare con i charset, quindi non la ritengo molto affidabile :P

    ciao
    altra rottura di scatole che non riesco a risolvere, mi sballa tutti i caratteri speciali (vocali accentate e altro)...
    perchè, c'è un'alternativa al LOAD DATA INFILE?

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.