Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie listy w zaleznosci od ilości przesłanych elementów, Nie wiem jak dobrze zatytułować, ale nie powinno być trudne dla fachow
BatGraf
post 10.06.2012, 17:47:32
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 20.03.2007
Skąd: Kruklanki/Otwock

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


Cześć

Borykam się mimo niedzieli - wiem, że z pierdoła, ale za diabła nie mogę tego zrobić.
Dlatego bardzo proszę o kopniaka we własciwym kierunku smile.gif Może być google, ale podpowiedzcie czego szukać, bo poopadało mi już wszystko biggrin.gif

PROBLEM/ CEL:

Mam formularz - 10 pól gdzie bedzie wpisywany adres obrazka. W efekcie ma być wygenerowana lista. I tu warunek:

Jeśli wypełnione są do 5 pól

  1. <ul>
  2. <li>obrazek nr1</li>
  3. <li>obrazek nr2</li>
  4. <li>obrazek nr3</li>
  5. <li>obrazek nr4</li>
  6. <li>obrazek nr5</li>
  7. </ul>



Jeśli wypełnione wiecej niż 5 pól

  1. <ul>
  2. <li>obrazek nr1</li>
  3. <li>obrazek nr2</li>
  4. <li>obrazek nr3</li>
  5. <li>obrazek nr4</li>
  6. <li>obrazek nr5</li>
  7. </ul>
  8.  
  9. <ul>
  10. <li>obrazek nr6</li>
  11. <li>obrazek nr7</li>
  12. <li>obrazek nr8</li>
  13. <li>obrazek nr9</li>
  14. <li>obrazek nr10</li>
  15. </ul>

Zrobiłem kulawo bo kulawo, ale PRAWIE działa:

plik "start.php"

  1. <form id="form1" name="form1" method="get" action="raz.php">
  2. <label><input type="text" name="raz" id="textfield" /></label>
  3. <label><input type="text" name="dwa" id="textfield" /></label>
  4. <label><input type="text" name="trzy" id="textfield" /></label>
  5. <label><input type="text" name="cztery" id="textfield" /></label>
  6. <label><input type="text" name="piec" id="textfield" /></label>
  7. <label><input type="text" name="szesc" id="textfield" /></label>
  8. <label><input type="text" name="siedem" id="textfield" /></label>
  9. <label><input type="text" name="osiem" id="textfield" /></label>
  10. <label><input type="text" name="dziewiec" id="textfield" /></label>
  11. <label><input type="text" name="dziesiec" id="textfield" /></label>
  12. <input name="" type="submit" />
  13. </form>


plik "raz.php"

  1. <?php
  2.  
  3. $raz = "$_GET[raz]";
  4. $dwa = "$_GET[dwa]";
  5. $trzy = "$_GET[trzy]";
  6. $cztery = "$_GET[cztery]";
  7. $piec = "$_GET[piec]";
  8. $szesc = "$_GET[szesc]";
  9. $siedem = "$_GET[siedem]";
  10. $osiem = "$_GET[osiem]";
  11. $dziewiec = "$_GET[dziewiec]";
  12. $dziesiec = "$_GET[dziesiec]";
  13.  
  14.  
  15.  
  16. $dane = "$raz\n$dwa\n$trzy\n$cztery\n$piec\n$szesc\n$siedem\n$osiem\n$dziewiec\n$dziesiec\n";
  17. $file = "pliczek.txt";
  18. $fp = fopen($file, "w");
  19. flock($fp, 2);
  20. fwrite($fp, $dane);
  21. flock($fp, 3);
  22. fclose($fp);
  23.  
  24. $tablica = file("pliczek.txt");
  25.  
  26. $elementy=count($tablica);
  27. // liczymy liczbę elementów w tablicy
  28. echo $elementy;
  29. echo "<br />";
  30. // wyświetlamy ilość elementów, wynik: 2
  31.  
  32. if($elementy<=5)
  33. {
  34. echo "<ul>";
  35. echo "<li>".$tablica[0]."</li>";
  36. echo "<li>".$tablica[1]."</li>";
  37. echo "<li>".$tablica[2]."</li>";
  38. echo "<li>".$tablica[3]."</li>";
  39. echo "<li>".$tablica[4]."</li>";
  40. echo "</ul>";
  41. }
  42. else
  43. {
  44. echo "<ul>";
  45. echo "<li>".$tablica[0]."</li>";
  46. echo "<li>".$tablica[1]."</li>";
  47. echo "<li>".$tablica[2]."</li>";
  48. echo "<li>".$tablica[3]."</li>";
  49. echo "<li>".$tablica[4]."</li>";
  50. echo "</ul>";
  51.  
  52. echo "<ul>";
  53. echo "<li>".$tablica[5]."</li>";
  54. echo "<li>".$tablica[6]."</li>";
  55. echo "<li>".$tablica[7]."</li>";
  56. echo "<li>".$tablica[8]."</li>";
  57. echo "<li>".$tablica[9]."</li>";
  58. echo "</ul>";
  59. }
  60.  
  61.  
  62.  
  63.  
  64. ?>



"Prawie" bo do pliku txt zapisuje z pustymi zmiennymi i to sypie wszystko bo i tak czyta że jest 10 wierszy :|

Po za tym wybiegam krok naprzód i jesli liste zrobię tak: echo "<li>".$tablica[9]."</li>"; to wygeneruje mi np 6 obrazków - ok i 4 obrazki puste.

Proszę - pomóżcie tempakowi smile.gif

Ten post edytował BatGraf 10.06.2012, 17:48:07


--------------------
_____________________________________________________

Pierwszy Tutorial - :)
Drugi tutorial :)
Trzeci tutorial :)

A wszystkie trzy - jak usmiechnąć się do siebie :)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
_Borys_
post 10.06.2012, 20:05:25
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Najprościej usunąć puste elementy tablicy poprzez array_filter, przykład:
  1. $a1 = array('1','','2','3');
  2. $a2 = array_filter($a1);
  3. print_r($a2);

Można też sprawdzać każdy element tablicy przed wyświetleniem czy jest pusty czy nie, a jeśli pusty to pominąć wyświetlanie. Sprawdzamy poprzez empty lub poprzez true or false.
Usuwanie pustych elementów tablicy

Ten post edytował _Borys_ 10.06.2012, 20:10:28
Go to the top of the page
+Quote Post
minolone
post 10.06.2012, 21:00:57
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 24
Dołączył: 21.06.2008

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


A nie łatwiej przesłać to jako tablice przez POST ?
  1. <form id="form1" name="form1" method="post" action="raz.php">
  2. <label><input type="text" name="plik[]" id="textfield" /></label>
  3. <label><input type="text" name="plik[]" id="textfield" /></label>
  4. <label><input type="text" name="plik[]" id="textfield" /></label>
  5. <label><input type="text" name="plik[]" id="textfield" /></label>
  6. <label><input type="text" name="plik[]" id="textfield" /></label>
  7. <label><input type="text" name="plik[]" id="textfield" /></label>
  8. <label><input type="text" name="plik[]" id="textfield" /></label>
  9. <label><input type="text" name="plik[]" id="textfield" /></label>
  10. <label><input type="text" name="plik[]" id="textfield" /></label>
  11. <label><input type="text" name="plik[]" id="textfield" /></label>
  12. <input name="" type="submit" />
  13. </form>

i odebrać tak?
bardzo prosty przykład
  1. /* zakomentowane
  2. $raz = "$_GET[raz]";
  3. $dwa = "$_GET[dwa]";
  4. $trzy = "$_GET[trzy]";
  5. $cztery = "$_GET[cztery]";
  6. $piec = "$_GET[piec]";
  7. $szesc = "$_GET[szesc]";
  8. $siedem = "$_GET[siedem]";
  9. $osiem = "$_GET[osiem]";
  10. $dziewiec = "$_GET[dziewiec]";
  11. $dziesiec = "$_GET[dziesiec]";
  12.  */
  13.  
  14. $dane = null;
  15. foreach ($_POST['plik'] as $val => $key) {
  16. if ($key != null) {
  17. $dane .= $key . "\n";
  18. }
  19. }

Resztę odbieraj tak jak odbierasz tylko sprawdzaj jeszcze ile masz przesłanych elementów i na ich podstawie stwórz sobie listę. Niema sensu tworzyć 5 jak ktoś prześle 1 i tak samo 10 jak ktoś prześle 6. Co do samego początku sprawdzaj jeszcze czy tablica przesłana przez POST zawiera jakieś elementy.
Pozdrawiam

Ten post edytował minolone 10.06.2012, 21:06:47
Go to the top of the page
+Quote Post
BatGraf
post 11.06.2012, 22:12:06
Post #4





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 20.03.2007
Skąd: Kruklanki/Otwock

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


super, to mi bardzo pomogło. Masz cierpliwość, żeby wytłumaczyć jak to działa? smile.gif
Tzn ten kawałek:

  1. $dane = null;
  2. foreach ($_POST['plik'] as $val => $key) {
  3. if ($key != null) {
  4. $dane .= $key . "\n";
  5. }
  6. }





--------------------
_____________________________________________________

Pierwszy Tutorial - :)
Drugi tutorial :)
Trzeci tutorial :)

A wszystkie trzy - jak usmiechnąć się do siebie :)
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 Wersja Lo-Fi Aktualny czas: 20.06.2025 - 13:49