Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Php - zatrzymywanie pętli etc., Php - zatrzymywanie pętli etc.
miras
post 29.12.2011, 19:37:36
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Witam, mam następujący problem:
  1. */ Tu znajduje się jeszcze zbędny do pokazywania kawalek kodu */
  2. <?php
  3. $wynik = mysql_query("SELECT * FROM mecze") or die('Błąd zapytania');
  4. if(mysql_num_rows($wynik) > 0) {
  5.  
  6. If ($r = mysql_fetch_assoc($wynik)) {
  7. If (!$r['data']) {
  8.  
  9. $druzyna1=$r['druzyna1'];
  10. $druzyna2=$r['druzyna2'];
  11.  
  12. <h2>Konfiguracja meczu: </h2>
  13. <b><p><font color=red> '.$druzyna1.' </font></b> vs <b><font color=blue> '.$druzyna2.' </font></b></p>
  14. <center>
  15. <form method="post" action="index.php?page=konfiguracja_meczy&akcja=skonfiguruj&id='.$r[id].'">
  16. <table>
  17.  
  18. <tr><td><p>Data i godzina meczu:</p></td><td><input maxlength="30" type="text" name="data"></td></tr>
  19.  
  20. <tr><td><p>IP serwera:</p></td><td><input maxlength="30" type="text" name="ip"></td></tr>
  21.  
  22. <tr><td><p>Hasło na serwer:</p></td><td><input maxlength="32" type="text" name="haslo"></td></tr>
  23.  
  24.  
  25.  
  26. </table>
  27. <p><input class="klawisz" type="submit" value="skonfiguruj ten mecz"></p></form><br /><br />
  28.  
  29. </center></form> ';
  30.  
  31.  
  32.  
  33.  
  34. }
  35.  
  36. }
  37.  
  38. }
  39.  
  40.  
  41.  
  42. ?>



problem ten polega na tym że, wpisów w tabeli 'mecze' jest dużo.. a przy powyższym kodzie skrypt wykona się tylko raz i później już nie sprawdza następnych rekordów..

Przy takim kodzie wyświetla zaś wszystkie możliwości a musi wyświetlać tylko jedną - pomóżcie mi proszę jak zrobić żeby ten skrypt wyświetlił ten formularz ( jeden) jak wpisze dane i wyśle to, żeby wtedy dopiero następny się wyświetlił ( nie wszystkie na raz)

  1. */ Tu znajduje się jeszcze zbędny do pokazywania kawalek kodu */
  2. <?php
  3. $wynik = mysql_query("SELECT * FROM mecze") or die('Błąd zapytania');
  4. if(mysql_num_rows($wynik) > 0) {
  5.  
  6. while ($r = mysql_fetch_assoc($wynik)) {
  7. If (!$r['data']) {
  8.  
  9. $druzyna1=$r['druzyna1'];
  10. $druzyna2=$r['druzyna2'];
  11.  
  12. <h2>Konfiguracja meczu: </h2>
  13. <b><p><font color=red> '.$druzyna1.' </font></b> vs <b><font color=blue> '.$druzyna2.' </font></b></p>
  14. <center>
  15. <form method="post" action="index.php?page=konfiguracja_meczy&akcja=skonfiguruj&id='.$r[id].'">
  16. <table>
  17.  
  18. <tr><td><p>Data i godzina meczu:</p></td><td><input maxlength="30" type="text" name="data"></td></tr>
  19.  
  20. <tr><td><p>IP serwera:</p></td><td><input maxlength="30" type="text" name="ip"></td></tr>
  21.  
  22. <tr><td><p>Hasło na serwer:</p></td><td><input maxlength="32" type="text" name="haslo"></td></tr>
  23.  
  24.  
  25.  
  26. </table>
  27. <p><input class="klawisz" type="submit" value="skonfiguruj ten mecz"></p></form><br /><br />
  28.  
  29. </center></form> ';
  30.  
  31.  
  32.  
  33.  
  34. }
  35.  
  36. }
  37.  
  38. }
  39.  
  40.  
  41.  
  42. ?>


Ten post edytował miras 29.12.2011, 19:38:10


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
buliq
post 29.12.2011, 20:14:45
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


Musisz pobierać jeden na raz ale nie ten pierwszy z brzegu. Zapamiętuj w sesji nad którym meczem pracujesz a przy zapisywaniu zmieniaj wartość zmiennej w sesji o np 1. I sprawdzaj zapytanie z LIMIT

  1. SELECT * FROM mecze LIMIT 0,1

Pobierze pierwszy z brzegu wpis z tabeli mecze

  1. SELECT * FROM mecze LIMIT 1,1

Pobierze drugi z brzegu wpis z tabeli mecze

  1. SELECT * FROM mecze LIMIT 2,1

Pobierze trzeci z brzegu wpis z tabeli mecze


Lub na początku pobierzesz pierwszy element, jak już będziesz znać ID tego pierwszego meczu to możesz pobierać następny element:

  1. SELECT * FROM mecze WHERE id > znane_id LIMIT 1

to zawsze pobierze następny element, jak następnego nie będzie to zwróci NULL

@@@
Oczywiście druga metoda zadziała jeżeli ID jest kluczem i ma ustawione AUTO_INCREMENT

Ten post edytował buliq 29.12.2011, 20:16:29


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
miras
post 29.12.2011, 21:42:35
Post #3





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


A możesz jeszcze podać przykład jak 'zapamiętywać w sesji nad którym meczem pracuje' etc. ?


--------------------
Go to the top of the page
+Quote Post
buliq
post 29.12.2011, 21:52:03
Post #4





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


  1. $_SESSION['pracuje_nad'] = $id_meczu;



$_SESSION['pracuje_nad'] jest tak jak zmienna czyli wszelkie operacje tak samo jak dla zwykłej zmiennej.

Zobacz też session_register


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
miras
post 29.12.2011, 22:53:01
Post #5





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


No ok ok, ale jak ja to później w tym przypadku wykorzystam:

  1. SELECT * FROM mecze LIMIT $_SESSION['pracuje_nad'],1
  2.  


? -,-

daje caly kod, bo nijak nie mogę tego zrobić..

  1. <?php
  2.  
  3.  
  4. $akcja = $_GET['akcja'];
  5. $wynik = mysql_query("SELECT * FROM mecze LIMIT 1,1") or die('Błąd zapytania');
  6.  
  7.  
  8. if ($akcja == skonfiguruj)
  9. {
  10. $id = $_GET['id'];
  11. If (!$_POST['data'] || !$_POST['ip'] || !$_POST['haslo']) {
  12.  
  13. <table><tr>
  14. <td><img src=images/loading.gif></td>
  15. <td><font color="red"</font><b>Wypełnij wszystkie pola!</b></td>
  16. </tr></table>
  17. <meta http-equiv=refresh content=1;url=index.php?page=konfiguracja_meczy>
  18. ';
  19.  
  20. }
  21. else {
  22. mysql_query("UPDATE mecze SET data='$_POST[data]', ip='$_POST[ip]', haslo='$_POST[haslo]' WHERE id='$id'") or die('Błąd zapytania');
  23.  
  24. <table><tr>
  25. <td><img src=images/loading.gif></td>
  26. <td><font color="green"</font><b>Mecz został poprawnie skonfigurowany!</b></td>
  27. </tr></table>
  28. <meta http-equiv=refresh content=1;url=index.php?page=konfiguracja_meczy>
  29. ';
  30.  
  31. }
  32.  
  33.  
  34. }
  35.  
  36.  
  37. if(mysql_num_rows($wynik) > 0) {
  38.  
  39. If ($r = mysql_fetch_assoc($wynik)) {
  40. If (!$r['data']) {
  41.  
  42. $druzyna1=$r['druzyna1'];
  43. $druzyna2=$r['druzyna2'];
  44. $_SESSION['pracuje_nad'] = $r['id'];
  45.  
  46.  
  47.  
  48. <h2>Konfiguracja meczu: </h2>
  49. <b><p><font color=red> '.$druzyna1.' </font></b> vs <b><font color=blue> '.$druzyna2.' </font></b></p>
  50. <center>
  51. <form method="post" action="index.php?page=konfiguracja_meczy&akcja=skonfiguruj&id='.$r[id].'">
  52. <table>
  53.  
  54. <tr><td><p>Data i godzina meczu:</p></td><td><input maxlength="30" type="text" name="data"></td></tr>
  55.  
  56. <tr><td><p>IP serwera:</p></td><td><input maxlength="30" type="text" name="ip"></td></tr>
  57.  
  58. <tr><td><p>Hasło na serwer:</p></td><td><input maxlength="32" type="text" name="haslo"></td></tr>
  59.  
  60.  
  61.  
  62. </table>
  63. <p><input class="klawisz" type="submit" value="skonfiguruj ten mecz"></p></form><br /><br />
  64.  
  65. </center></form> ';
  66.  
  67.  
  68.  
  69.  
  70.  
  71. }
  72.  
  73. }
  74.  
  75. }
  76.  
  77. ?>


@@@@@@@@@



Jeszcze takie pytanko - jak się wyloguje w tym moim 'czyms' to mi rozwala sesje i automatycznie ten skrypt z tymi meczami przestaje działac. da się jakoś nazwać te sesje ?

Ten post edytował miras 29.12.2011, 22:55:04


--------------------
Go to the top of the page
+Quote Post
Ulysess
post 29.12.2011, 23:16:01
Post #6





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


nie będe wstawiał gotowego kodu bo to żadna nauka dla Ciebie, na Twoim miejscu rozwiązał bym w taki sposób

pobierasz wszystkie dane o meczach następnie dzięki pętli while wstawiasz te dane do tabeli a w ost kolumnie robisz odsylacz albo do tego samego pliku albo do innego który służy do edycji, robisz linka np index.php?edycja= i po równa się wstawiasz ID meczu

następnie w tym samym pliku lub w innym robisz

if(!isset($_GET['edycja'])
{
// tutaj dasz zapytanie pobierające dane edytowanego meczu , wstawiasz do formularz a w action jako linka wstawiasz np index.php?edycja=$id&edytuj=1
}


if($_GET['edytuj'] == 1)
{
// zapytanie mysql aktualizujace (update) dane meczu
}

może wydawać sie toTobie skomplikowane ale uwierz mi to banalne, jeżeli skrypt jest tylko wył do Twojej dyspozycji to nie musisz ale wypadało by go zabezpieczyć
1 spr czy jeżeli ma być wprowadzona liczba czy to aby INT
2 zabezpieczyc sie przed SQL injection uzywajac mysql escape
3 jeżeli dane wprowadzane przez formularz sa wyswietlane na stronie uzywanie htmlspecialchars
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: 16.07.2025 - 08:36