Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Łączenie tytułu z opisem
Forum PHP.pl > Forum > PHP
sebekzosw
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ń?
reaktor
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 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. ?>
sebekzosw
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 winksmiley.jpg

dzięki za pomoc winksmiley.jpg

  1. echo ($i%2==0) ? "INSERT INTRO FILMY VALUES (".$tmp : ", ".$tmp.");";
mortus
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
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.