Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Php - zatrzymywanie pętli etc.
Forum PHP.pl > Forum > Przedszkole
miras
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. ?>
buliq
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
miras
A możesz jeszcze podać przykład jak 'zapamiętywać w sesji nad którym meczem pracuje' etc. ?
buliq
  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
miras
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 ?
Ulysess
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
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.