Autor Zpráva
kejmil
Profil *
Ahoj,

potřebuji poradit se základy php, pravděpodobně se jedná o funkci implode().
Mám tento funkční kód:

<?php
function my_facets_node_presave($node)  {
 drupal_set_message('DEBUG: PRESAVE Called');

if ($node->type === 'institute') { 
      $node->field_address[LANGUAGE_NONE][0]['value'] = $node->field_street[LANGUAGE_NONE][0]['value'] . ', ' . $node->field_postal_code[LANGUAGE_NONE][0]['value'] . ', ' . $node->field_city[LANGUAGE_NONE][0]['value'] . ', ' . $node->field_country[LANGUAGE_NONE][0]['value'];          
     }  
}   


Potřeboval bych, aby čárka mezi jednotlivými proměnnými byla zobrazena jen tehdy, pokud proměnná má hodnotu. Takže pokud "field_postal_code" má hodnotu, pak vygeneruj čárku před. Pokud je prázdné, pak negeneruj nic. Poté pokud "field_city" má hodnotu, pak generuj čárku před, jinak negeneruj nic. Atp.

Mohl by mi, prosím, někdo napsat kód přesně a jednoznačně. Jenom abych zkopíroval a fungovalo to? Děkuji. Už dva dny konzultuji a každý mi všude říká jak jednoduše to udělám, ale nikdo mi neřekne konkrétní řešení, takže jako totální programátorský negramot s tím prostě nehnu...:-)

Děkuji za všechny rady
Zechy
Profil
Však stačí použít zmíněnou funkci implode, které předáš pole tvých hodnot. Ta pak veškerou logiku spojení do řetězce obstará za tebe.
Tori
Profil
kejmil:
Potřeboval bych, aby čárka mezi jednotlivými proměnnými byla zobrazena jen tehdy, pokud proměnná má hodnotu.
Můžete řetězec postupně skládat po jednotlivých proměnných a u každé ověřovat, jestli je nebo není prázdná:
$value = ''; // výchozí prázdný řetězec
if ($node->field_street[LANGUAGE_NONE][0]['value'] !== '')
    $value .= ', '.$node->field_street[LANGUAGE_NONE][0]['value'];
if ($node->field_postal_code[LANGUAGE_NONE][0]['value'] !== '')
    $value .= ', '.$node->field_postal_code[LANGUAGE_NONE][0]['value'];
// ... atd.
$value = ltrim($value, ', '); // odstraníte přebytečnou čárku zleva
$node->field_address[LANGUAGE_NONE][0]['value'] = $value;
Zápis se dá zkrátit použítím ternárního operátoru místo podmínek if:
$value = ($node->field_street[LANGUAGE_NONE][0]['value'] !== '' ? ', '.$node->field_street[LANGUAGE_NONE][0]['value'] : '')
    . ($node->field_postal_code[LANGUAGE_NONE][0]['value'] !== '' ? ', '.$node->field_postal_code[LANGUAGE_NONE][0]['value'] : '');

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: