Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pobieram ciag znakow z bazy i chc go sprasowac do postaci...
Forum PHP.pl > Forum > PHP
boya
Witam

w bazie w polu opis mam takie cos
kolor: czerwony; stan: bardzo dobry; rok produkcji: 1999; ... itd

chcialem sie dowiedziec jak sprawdzic gdzie jest poczatek tego pola a gdzie koniec zeby moc to wpuscic w petle i sprasowac do postaci

kolor: czerwony
stan: bardzo dobry
rok produkcji: 1999

bynajmniej nie chodzi o ereg_replace bo chce sobie to rozwalic explodem na dwa pola...

dana -> rozwalenie na linie -> rozwalenie na pola -> wyswietlenie
siemakuba
no tak, explode" title="Zobacz w manualu php" target="_manualm, dokładnie jak piszesz. Więc gdzie dokładnie leży problem?
najpierw explode przez znak odzielający pary (;), potem pętla przez otrzymaną tablicę i w każdej iteracji explode przez znak oddzielający klucz od wartości (:). No i robisz z tym co otrzymasz co tam sobie potrzebujesz.

Chociaż, do osiągnięcia takieg efektu jak podałeś wystarczy tylko pierwsze explode i potem już poprostu wyświetlanie w pętli, bo dane już bedziesz miał w formacie klucz:wartość

pozdr.
boya
ok ale na czym chcesz oprzec petle jakis warunek konca musi byc...
siemakuba
ciąg pobierany z bazy ma przecież jakąś długość. Po zrobieniu explode otrzymasz tablicę, też o określonej długości. Pętle zrobisz przez tablicę i jak skończy się tablica - skończy się pętla :)

explode" title="Zobacz w manualu php" target="_manual, for" title="Zobacz w manualu php" target="_manual, foreach" title="Zobacz w manualu php" target="_manual

pozdr.
boya
pokombinuje dziekie
siemakuba
hej @boya, odpowiadam na PW tutaj, niech zostanie dla potomności :)
co musisz zrobić:
  1. <?php
  2. $dane  = 'kolor: czerwony; stan: bardzo dobry; rok produkcji: 1999';
  3.  
  4. /* 
  5. rozbijasz ciag z danymi uzywajac jako separatora średnika
  6. w efekcie otrzymujesz tablicę, w której każdy kolejny element to fragmenty, 
  7. które w twoim ciągu występują pomiędzy średnikami
  8. */
  9.  
  10. $tablica = explode(';', $dane);
  11.  
  12. /*
  13. iterujesz przez tablice za pomoca petli for. 
  14. Zmienna $n zawiera ilosc elementow tablicy - tyle razy wykonana sie petla
  15. */
  16.  
  17. for ($i = 0, $n = count($tablica); $i < $n; $i++)
  18. {
  19. /*
  20. tu już masz dostep do kazdej pary danych w kolejnych iteracjach pętli
  21. co z nimi zrobisz zalezy od ciebie
  22. ja wyswietlam, zeby efekt byl taki jak piszesz na poczatku
  23.    
  24. $tablica[$i] - tu masz kolejne pary danych - kolor: czerwony, pozniej stan: bardzo dobry itd.
  25. trim() - po to, zeby pozbyc sie zbednych spacji na poczatku i koncu ciagu z danymi
  26. */
  27.  
  28. echo trim($tablica[$i]).'<br>';
  29. }
  30. ?>
pisz gdyby coś było jeszcze nie jasne.
pozdr.
boya
dzieki wszystko jasne, ja najpierw robilem exploede pozniej foreach i znow explode ale sie pogubiłem smile.gif

mi chodzilo o cos takiego:
kolor: czerwony; stan: bardzo dobry; rok produkcji: 1999

podzial explodem ;
i podzial :

w efekcie mam cos takiego:

  1. <?php
  2. <tr>
  3. <td>kolor:</td>
  4. <td>czerwony</td>
  5. </tr>
  6.  itd..
  7. ?>


kombinowalem tak:

  1. <?
  2. $dane  = $krotka['opis'];
  3. $tablica = explode(';', $dane);
  4.  
  5. for ($i = 0, $n = count($tablica); $i < $n; $i++)
  6. {
  7. $re=explode(":", $tablica[$i]);
  8. ?>
  9. <tr>
  10. <td><?echo $re[0];?>:</td>
  11. <td><?echo $re[1];?></td>
  12. </tr>
  13. <?
  14. }?>
lesser
A ja bym zrobil cos takiego:


  1. <?php
  2. $string  = 'kolor: czerwony; stan: bardzo dobry; rok produkcji: 1999';
  3. $dane = array();
  4.  
  5. $tablica = explode( ';', $string );
  6.  
  7. foreach( $tablica as $wartosc ) {
  8. $wartosc = explode( ':', $wartosc );
  9. $dane[$wartosc[0]] = $wartosc[1];
  10. }
  11. ?>


W wyniku czego otrzymujesz bardzo elastyczną tablicę.
Teraz jeśli chcesz zmienić jakąś wartość:

  1. <?php
  2. print $dane['kolor'];
  3. // na wyjsciu dostaniesz: czerwony
  4.  
  5. $dane['kolor'] = 'zielony';
  6.  
  7. print $dane['kolor'];
  8. // na wyjsciu dostaniesz: zielony
  9.  
  10. //i stworzenie nowego stringa do bazy
  11. $string = '';
  12. foreach( $dane as $klucz => $wartosc ) {
  13.  $string .= $klucz . ': ' . $wartosc . '; ';
  14. }
  15. //Wrtość $string: 'kolor: zielony; stan: bardzo dobry; rok produkcji: 1999';
  16. ?>


Wyświetlanie wszystkiego w html-u

  1. <?php
  2. foreach( $dane as $klucz => $wartosc ) {
  3. print '<tr>';
  4. print '<td>' . $klucz . '</td> ';
  5. print '<td>' . $wartosc . '</td> ';
  6. print '</tr>';
  7. }
  8. ?>


Jak gdzieś coś skiepściłem to mnie popraw.
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.