Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]implode() problem
Forum PHP.pl > Forum > Przedszkole
rychu123
Witam,

mam taki proble chciałbym zapisac wszystkie wartosci z itputa w jeden cią znaków odzielająch || np

"tekst1||tekst2||tekst3||tekst4"

mam taki skrypt

$array = array($_POST[tekst1], '$_POST[tekst2]', '$_POST[tekst3]','$_POST[tekst4]');

$wynik = implode('||', $array);

i w tym jest proble że jak
'$_POST[tekst3]','$_POST[tekst4]' bedzie pusty to mi wstawi || || znaki chciałbym zeby tych znaków w tedy nie było
nospor
no to buduj tablice tylko z niepustych wartosci. Ciezko najpierw sprawdzic czy jest pusta czy nie a dopiero potem wlozyc?
rychu123
Cytat(nospor @ 26.06.2009, 09:44:49 ) *
no to buduj tablice tylko z niepustych wartosci. Ciezko najpierw sprawdzic czy jest pusta czy nie a dopiero potem wlozyc?


a jak to trzeba zrobic questionmark.gif
nospor
konstrukcja warunkowa: if
sprawdzenie czy puste: empty()
wlozenie do tablicy: $tab[] = 'jakas wartosc'

ps: przenosze
rychu123
Cytat(nospor @ 26.06.2009, 09:47:22 ) *
konstrukcja warunkowa: if
sprawdzenie czy puste: empty()
wlozenie do tablicy: $tab[] = 'jakas wartosc'

ps: przenosze

dalej nie rozumie jak to zrobic
Largo
Witam,

Nie jestem pewny, ale można to zrobić tak.

  1. <?php
  2.  
  3. $data = array();
  4.  
  5. foreach( $_POST['nazwa_formularza'] AS $key => $value )
  6. {
  7.   $data[ $key ] = isset( $_POST[ $key ] ) ? $value : '';
  8.  
  9.   if ( empty( $data[ $key ] ) )
  10.   {
  11.        continue;
  12.   }
  13. }
  14.  
  15. $array = implode( '||', $data );
  16.  
  17. ?>


Pozdrawiam,
Largo
rychu123
Cytat(Largo @ 26.06.2009, 10:09:55 ) *
Witam,

Nie jestem pewny, ale można to zrobić tak.

  1. <?php
  2. $data = array();
  3.  
  4. foreach( $_POST['nazwa_formularza'] AS $key => $value )
  5. {
  6.   $data[ $key ] = isset( $_POST[ $key ] ) ? $value : '';
  7.  
  8.   if ( empty( $data[ $key ] ) )
  9.   {
  10.        continue;
  11.   }
  12. }
  13.  
  14. $array = implode( '||', $data );
  15.  
  16. ?>


Pozdrawiam,
Largo


ale tych formularz jest 30 i to racej nie bedzie
skowron-line
  1. <?php
  2. function notEmpty( $value )
  3. {
  4.    return ( !empty( $value )) ? $value : null;
  5. }
  6.  
  7. echo join( '|', array_map( 'notEmpty', $_POST ));
  8. ?>


*pisane z palca
rychu123
Cytat(skowron-line @ 26.06.2009, 10:19:47 ) *
  1. <?php
  2. function notEmpty( $value )
  3. {
  4.    return ( !empty( $value )) ? $value : null;
  5. }
  6.  
  7. echo join( '|', array_map( 'notEmpty', $_POST ));
  8. ?>


*pisane z palca


nie niewiem dalej jak to zrobic moze jakies wyjasnienie
skowron-line
a próbowałeś zrobić tak
  1. <?php
  2. inplode( '||', $_POST );
  3. ?>
rychu123
Cytat(skowron-line @ 26.06.2009, 10:29:37 ) *
a próbowałeś zrobić tak
  1. <?php
  2. inplode( '||', $_POST );
  3. ?>


ale tak się raczej nieda zrobic poniewaz mam 30 inputów i chce to zapisac w jeden ciąg znaków
Wicepsik
rychu123, bierzesz się za coś czego nie umiesz. Wiesz co to manual? Wpisujesz tam nazwę funkcji i wszystko masz wyjaśnione co robi.
inplode" title="Zobacz w manualu PHP" target="_manual
array_map" title="Zobacz w manualu PHP" target="_manual
join" title="Zobacz w manualu PHP" target="_manual
foreach" title="Zobacz w manualu PHP" target="_manual
skowron-line
Cytat(rychu123 @ 26.06.2009, 08:31:20 ) *
ale tak się raczej nieda zrobic poniewaz mam 30 inputów i chce to zapisac w jeden ciąg znaków

A próbowałeś questionmark.gif Bo piszesz bzdury
piotrooo89
problem mnie zainteresował więc wymyśliłem coś takiego (nie mówię że to jest najlepszy sposób, może ktoś zna lepszy chętnie poznam smile.gif ).

  1. <?php
  2. $tab['z1'] = 'zm1';
  3. $tab['z2'] = 'zm2';
  4. $tab['z3'] = '';
  5. $tab['z4'] = '';
  6.  
  7. print_r($tab);
  8.  
  9. foreach($tab as $key => $value)
  10. {
  11.    if (!empty($value))
  12.    {
  13.        $show[] = $value;
  14.    }
  15. }
  16.  
  17. print_r($show);
  18.  
  19. echo implode('||', $show);
  20. ?>


zrobiłem sobie dodatkową tablice $show w której trzymam wartości wypełnionych pól, później na niej już tylko implode.
Wicepsik
Jeżeli wysyła tylko inputy to można zrobić coś takiego

  1. <?php
  2. foreach($_POST as $value)
  3. {
  4.   if (!empty($value))
  5.   {
  6.       $show[] = $value;
  7.   }
  8. }
  9.  
  10. print_r($show);
  11.  
  12. echo implode('||', $show);
  13. ?>
piotrooo89
to był tylko przykład, nie czepiać się winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.