Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [php] quando stampo alcune variabili estratte da una query, mi sorge sempre ...

    Quando stampo alcune variabili estratte da una query, mi sorge sempre ... lo stesso problema...

    Spesso devo concatenare delle varibili risultate da una query, su una riga sola separate da una virgola, un punto o uno spazio.
    Poniamo ad esempio di avere questi campi

    nome
    data
    id
    linkage

    e di volerli stampare in questo modo:

    nome - data - id - linkage.

    Dalla mia query le variabili si chiameranno rispettivamente $row[nome], $row[data], $row[id], $row[linkage].

    Il problema sorge quando una di queste variabili è nulle.
    Per evitare che venga fuori ad esempio
    nome - data - - linkage
    oppure
    nome - - - linkage

    devo fare if allucinanti, che diventano sempre + allucinanti in proporzione al numero di stringhe da concatenare.
    In questo caso per far stampare correttamente le 4 stringhe concatenate dovrei fare qualcosa del genere:

    Codice PHP:
    if ($row[nome] != "") print $row[nome];
    if (
    $row[nome] != "" && $row[data] != "") print " - ";
    if (
    $row[data] != "") print $row[data];
    if ((
    $row[nome] != "" || $row[data] != "") && $row[id] != "") print " - ";
    if (
    $row[id] != "") print $row[id];
    if ((
    $row[nome] != "" || $row[data] != "" || $row[id] != "") && $row[linkage] != "") print " - ";
    if (
    $row[linkage] != "") print $row[linkage]; 
    Ovviamente come programmazione fa schifo...
    ... ma come risolvo il problema?

    Premetto che le quattro variabili nell'array $row non sono le uniche, quindi non posso nemmeno risolvere con un while
    わさび

  2. #2
    ma scusa non ho capito perchè non fai direttamente:
    Codice PHP:
    if($row['nome'] == '' OR $row['id'] == '' OR $row['linkage'] == '' OR $row['data'] == '') { print " - "
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    [supersaibal]Originariamente inviato da Manuelandro
    ma scusa non ho capito perchè non fai direttamente:
    Codice PHP:
    if($row['nome'] == '' OR $row['id'] == '' OR $row['linkage'] == '' OR $row['data'] == '') { print " - "
    [/supersaibal]
    se mai dovrei usare != ''
    comunque il problema è proprio quello: il dover ripetere, tra un print e l'altro, sempre un if di controllo che mi verifica che prima ci sia qualche campo pieno...

    Non so come fare ma vorrei mettere le variabili in questione in un altro array e poi dirgli, fin quando trovi valori pieni scrivimi le righe separate da un separatore " - ".
    わさび

  4. #4
    fatti una funzioncina

  5. #5
    scusa ma se ti fai la stringa e poi prima di farla stampare fai una str_replace sostituendo " - - " con " - " , no??

    anzi megli sarebbe:

    str_replace (...) //sostituisci " - - - " con " - - "
    str_replace...... //sostituisci " - - " con " - "

  6. #6
    prova così;
    Codice PHP:
    function cancella_vuoto($value)
    {
        return (bool) 
    $value;
    }
    echo 
    implode(' - ',array_filter($row"cancella_vuoto")); 

  7. #7
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    [supersaibal]Originariamente inviato da Gianni_T
    prova così;
    Codice PHP:
    function cancella_vuoto($value)
    {
        return (bool) 
    $value;
    }
    echo 
    implode(' - ',array_filter($row"cancella_vuoto")); 
    [/supersaibal]
    Grazie Gianni_T,
    come la uso questa funzione? Devo incorporarmi tutto in una variabile e poi gli passo cancella_vuoto($variabile)?

    $variabile = $row[nome]." - ".$row[data]." - ".$row[id]." - ".$row[linkage]." - ";

    e poi cancella_vuoto($variabile)

    ?
    わさび

  8. #8
    esempio:
    Codice PHP:
    // $row: l'array da stampare. Alcune voci sono vuote
    $row['uno'] = 'test1';
    $row['due'] = '';
    $row['tre'] = 'test3';
    $row['quattro'] = 'test4';

    // funzione per "pulire" l'array
    function cancella_vuoto($value)
    {
        return (bool) 
    $value;
    }

    // stampa i valori di $row non vuoti separati da " - "
    echo implode(' - ',array_filter($row"cancella_vuoto")); 

  9. #9
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    [supersaibal]Originariamente inviato da Gianni_T
    esempio:
    Codice PHP:
    // $row: l'array da stampare. Alcune voci sono vuote
    $row['uno'] = 'test1';
    $row['due'] = '';
    $row['tre'] = 'test3';
    $row['quattro'] = 'test4';

    // funzione per "pulire" l'array
    function cancella_vuoto($value)
    {
        return (bool) 
    $value;
    }

    // stampa i valori di $row non vuoti separati da " - "
    echo implode(' - ',array_filter($row"cancella_vuoto")); 
    [/supersaibal]
    ahh sono un caxxone! ho capito grazie
    わさび

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.