Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Łączenie tytułu z opisem
sebekzosw
post
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


Mam taki formularz i plik PHP:

  1. <?php
  2. if(isset($_POST["name"])) {
  3. $entry_array = explode("\n", trim($_POST['name']));
  4. for($i=0;$i<count($entry_array);$i++) echo $entry_array[$i]." - ".next($entry_array)."<br />";
  5. }
  6. ?>
  7.  
  8. <form method="post" action="">
  9. <textarea rows="20" cols="50" name="name">
  10. Tytuł 1
  11. Opis 1
  12.  
  13. Tytuł 2
  14. Opis 2
  15.  
  16. Tytuł 3
  17. Opis 3
  18.  
  19. Tytuł 4
  20. Opis 4</textarea>
  21. <input type="submit" value="Wyslij" />
  22. </form>


I chce aby wyświetlał dane w postaci
Kod
Tytuł x - Opis x


mi jednak wyniki wyświetlają się tak:
Kod
Tytuł 1 - Opis 1
Opis 1 -
- Tytuł 2
Tytuł 2 - Opis 2
Opis 2 -
- Tytuł 3
Tytuł 3 - Opis 3
Opis 3 -
- Tytuł 4
Tytuł 4 - Opis 4
Opis 4 -


Jak należy to poprawić, żeby było wg moich oczekiwań?
Go to the top of the page
+Quote Post
reaktor
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 2.01.2010

Ostrzeżenie: (0%)
-----


Wykonujesz petle jadac po kazdym elemencie tablicy wypisujac ten element
oraz element 'nastepny', po ktorym i tak przejedziesz sie w nastepnym
wykonaniu petli i znowu go wypiszesz.
W dodatku nie powinienes uzywac jednoczesnie odwolania $tablica[i] oraz
operatora next($tablica), bo te odwolania sa niezalezne od siebie.
Przyklad: jesli zrobisz petle z krokiem $i+=2, to petla bedzie przebiegala
co drugi element tablicy, a next($tablica) ktory za kazdym razem przesunie
wewnetrzny kursor tablicy tylko o jeden element po prostu nie nadazy za forem (IMG:style_emoticons/default/winksmiley.jpg)

I jeszcze zapominasz ze masz puste linie, czyli robiac explode'a po "\n",
co trzecim elementem Twojej tablicy jest pusty string.

Rozwiazac problem mozesz np tak, skrypt bedze odporny na dowolna ilosc
dodatkowych linii ze spacjami czy tabami:
  1. <?
  2. $entry_array = explode("\n", trim($_POST['name']));
  3. $i=0;
  4. foreach ($entry_array as $tmp) {
  5. if (trim($tmp)=="") {
  6. continue;
  7. }
  8. echo $tmp;
  9. echo ($i%2==0)?" - ":"<BR/>";
  10. $i++;
  11. }
  12. ?>
Go to the top of the page
+Quote Post
sebekzosw
post
Post #3





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


wszystko ładnie pięknie, tylko co jakbym do każdej pary chciał dodać zapytanie MySQL - może to dziecinne łatwe, ale nie umiem sobie to wyobrazić...

  1. INSERT INTRO `tytuly` VALUES ('$tmp', $tmp');


Już to ogarnąłem (IMG:style_emoticons/default/winksmiley.jpg)

dzięki za pomoc (IMG:style_emoticons/default/winksmiley.jpg)

  1. echo ($i%2==0) ? "INSERT INTRO FILMY VALUES (".$tmp : ", ".$tmp.");";
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Tylko po co tak kombinować z tymi zmiennymi pomocniczymi? Przecież można to zrobić tak:
[PHP] plik.php - pobierz, plaintext
  1. <?php
  2. if (isset($_POST["name"])) {
  3. $entry_array = explode("\n", trim($_POST['name']));
  4. for ($i = 0; $i < count($entry_array); $i += 2) {
  5. echo $entry_array[$i] . " - " . $entry_array[$i + 1] . "<br />";
  6. $zapytanie = "INSERT INTO filmy VALUES ('" . $entry_array['$i'] . "', '" . $entry_array[$i+1] . "')";
  7. // reszta
  8. }
  9. }
  10. ?>
  11. <form method="post" action="">
  12. <textarea rows="20" cols="50" name="name">
  13. Tytuł 1
  14. Opis 1
  15. Tytuł 2
  16. Opis 2
  17. Tytuł 3
  18. Opis 3
  19. Tytuł 4
  20. Opis 4
  21. </textarea>
  22. <input type="submit" value="Wyslij" />
  23. </form>
[PHP] plik.php - pobierz, plaintext
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.12.2025 - 20:07