Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Numerowanie wierszy, Numerowanie linni w wyniku zapytania, z pola "text"
-Gość-
post
Post #1





Goście







Mam pytanie.

Mam skrypt, w którym można dodawać przepisy. Generalnie, znajduje się on w polu text. Wyciągam je zapytaniem, zamieniam nową linię na <br />, ale mam problem.

Czy jest możliwość dodania na samym początku numeru i żeby ten numer automatycznie rósł?

Na początku każdej linii mam '#', ale nie wiem jak to zamienić na numery sad.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




rozbij ciag na tablice (funkcja explode). Dla każego elementu tablicy (foreach albo array_map)wykonaj zamiane znaku na liczbe (str_replace). Potem polacz tablice do ciagu za pomoca (implode).
O gotowca nawet nie proś.


--------------------
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







A nie proszę smile.gif

Właśnie chciałem jakąś sugestię i ją otrzymałem:)

Biorę się za kodowanie, w razie problemów, będę pytał jeszcze.

Dzięki!
Go to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







Ok.

Coś pokombinowałem, ale pomysłu już nie mam. Sugestie mile widziane:)

  1. <?php
  2. $przepis= nl2br($r['przepis']);
  3.    $pieces = explode("<br>", $przepis);
  4.    $tre = str_replace('#', $i++, $pieces);
  5.    $br_separated = implode("<br>", $tre);
  6.    echo $br_separated;
  7. ?>


No i wszędzie powtarza tak samo. Generalnie tak jak zrobiłbym to tylko za pomocą str_replace.

Any ideas?
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie wykonałeś dla kazdego elementu tablicy
Kod
for($i=0; $i<count($pieces); $i++)
{
$tre = str_replace('#', $i+1, $pieces[$i]);
}

Cytat
A nie proszę smile.gif

Właśnie chciałem jakąś sugestię i ją otrzymałem:)

Biorę się za kodowanie, w razie problemów, będę pytał jeszcze.

Dzięki!

Dla takich chwil się pomaga ludziom tongue.gif

Ten post edytował wookieb 17.09.2008, 22:56:59


--------------------
Go to the top of the page
+Quote Post
-Gość-
post
Post #6





Goście







Deklarowałem przed pętlą, na samym początku pętli i dalej zwraca wszędzie

  1. <?php
  2. 0
  3. 0
  4. 0
  5. 0
  6. 0
  7. ?>


To samo, jak już powiedziałem, udaje się zrobić str_replace, ale tez nie numeruje.


// Manual jednak rządzi:) Właśnie go przekopuję, ale nic znaleśc nie mogę blink.gif
Go to the top of the page
+Quote Post
-Gość-
post
Post #7





Goście







Edytowałeś jak już odpowiedziałem laugh.gif

Całość wygląda tak:
  1. <?php
  2. $przepis= nl2br($r['tracklist']);
  3.   $pieces = explode("<br>", $przepis);
  4.   for($i=0; $i<count($pieces); $i++)
  5.    {
  6.    $tre = str_replace('#', $i+1, $pieces[$i]);
  7.    }
  8.   $br_separated = implode("<br>", $tre);
  9.   echo $br_separated;
  10. ?>


A błąd zwraca taki:
  1. <?php
  2. [phpBB Debug] PHP Noticein file /home/pedro/www/modules/bands.php on line 74implode() [function.implode: Invalid arguments passed
  3. ?>


Linia 74 to:
  1. <?php
  2. $br_separated = implode("<br>", $tre);
  3. ?>


Wspomóż sugestiąsmile.gif
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kod
<?php
   $pieces = explode("\n", $r['tracklist']);
   for($i=0; $i<count($pieces); $i++)
    {
    $pieces[$i]= str_replace('#', $i+1, $pieces[$i]);
    }
   $br_separated = implode("<br/>", $pieces);
   echo $br_separated;
?>


Ten post edytował wookieb 18.09.2008, 07:23:57


--------------------
Go to the top of the page
+Quote Post
-Gość-
post
Post #9





Goście







A można jeszcze jakoś dodać do tego taką funkcję, żeby po jakimś napisie zerowało numerowanie i numerowało od początku?
Go to the top of the page
+Quote Post
-Gość-
post
Post #10





Goście







  1. <?php
  2. while($r = mysql_fetch_assoc($query)) {
  3.     $tracklist = $r['tracklist'];
  4.     $track_array = explode("\n", $tracklist);
  5.     $track_num = 1;
  6.     foreach ($track_array as $track_name) {
  7.           $track_name = trim($track_name);
  8.           if ($track_name > "") {
  9.                if($track_num < 10){
  10.                $tl = str_replace("#", '<span style="color:#666">0'.$track_num.'.</span>', $track_name);
  11.                } else {
  12.                $tl = str_replace("#", '<span style="color:#666">'.$track_num.'.</span>', $track_name);
  13.                }
  14.                echo ''.AddBB($tl).'<br/>';
  15.               $track_num++;
  16.           }
  17.     }
  18. }
  19. ?>


Mam taki kod. Testuję na stronie testowej sobie. Ale mam problemy:
Numeruje mi wszystko jak leci, a nie tylko "#". Poza tym, czy da się zrobić tak, aby po jakimś teście numerowanie było resetowane?
Go to the top of the page
+Quote Post
-Gość-
post
Post #11





Goście







Nikt nie jest w stanie pomóc?sad.gif
Go to the top of the page
+Quote Post
-Gość-
post
Post #12





Goście







Mam jakiś pomysł. Po przeanalizowaniu struktury, tego wszystkiego, dochodzę do wniosku, że to jest coś podobnego do parsera BBCode.

Ale czy ktoś wie jak zamienić # na numery?
Go to the top of the page
+Quote Post
-Gość-
post
Post #13





Goście







Bump
Go to the top of the page
+Quote Post
-Gość-
post
Post #14





Goście







Ktokolwiek?
Go to the top of the page
+Quote Post
wookieb
post
Post #15





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Mozna. Dopisz sobie taki warunek i resetowanie numerowania.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:04