Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyłączenie elementu z wyniku pętli
Forum PHP.pl > Forum > Przedszkole
ichu
Muszę napisać skrypt, który będzie służył do edycji zamówień zapisanych w bazie. Z listy <select> wybiera się kontrahenta u którego chcemy złożyć zamówienie. Chodzi o to, by po wybraniu opcji "edytuj" zapisany wcześniej rekord był na pierwszym miejscu listy, i żeby nie był już powtórzony dalej.

  1. <select class="input" name="IdKh">
  2. <option value="<?php echo $IdKh; ?>">
  3. <?php
  4. connect_db();
  5. $query1="SELECT NazwaKh FROM kontrahenci INNER JOIN zamowienia ON kontrahenci.IdKh=z
    amowi
  6. nia.IdKh";
  7. $result1=mysql_query($query1);
  8. $num1=mysql_numrows($result1);
  9. $NazwaKh=mysql_result($result1,$i,"NazwaKh");
  10. echo $NazwaKh;
  11. ?>
  12. </option>
  13. <?php
  14. $query2="SELECT IdKh, NazwaKh FROM kontrahenci";
  15. $result2=mysql_query($query2);
  16. $num2=mysql_numrows($result2);
  17. while ($x < $num2) 
  18. {
  19. $IdKh=mysql_result($result2,$x,"IdKh");
  20. $NazwaKh=mysql_result($result2,$x,"NazwaKh");
  21. echo "<option value=\"$IdKh\">$NazwaKh</option>";
  22. $x++;
  23. }
  24. ?>
  25. </select>

I przy okazji jeszcze jedno pytanie: czy przy każdym zapytaniu stosować connect_db() i na końcu zapytania mysql_close(), czy lepiej połączyć się z bazą na początku całego skryptu i rozłączyć na końcu? Na stronie mam kilka zapytań i nie wiem czy każdorazowe łączenie i rozłączanie jest dobrym rozwiązaniem...
erix
Cytat
Na stronie mam kilka zapytań i nie wiem czy każdorazowe łączenie i rozłączanie jest dobrym rozwiązaniem...

Lepiej tylko raz; zestawianie połączeń jest jednym z najbardziej czasochłonnych procesów...

Cytat
i żeby nie był już powtórzony dalej.


W pierwszym zapytaniu pobierasz np. ID elementu, a w pętli sprawdzasz, czy ID aktualnie wypisywanej pozycji jest takie same, jak "zapamiętanego". Jeśli tak, to szurnij "continue".
ichu
Coś takiego?

  1. <select class="input" name="IdKh">
  2. <option value="<?php echo $IdKh; ?>">
  3. <?php
  4. connect_db();
  5. $query1="SELECT NazwaKh FROM kontrahenci INNER JOIN zamowienia ON kontrahenci.IdKh=z
    amowi
  6. nia.IdKh";
  7. $result1=mysql_query($query1);
  8. $num1=mysql_numrows($result1);
  9. $NazwaKh=mysql_result($result1,$i,"NazwaKh");
  10. echo $NazwaKh;
  11. ?>
  12. </option>
  13. <?php
  14. $IdKh_prev=$IdKh;
  15. $query2="SELECT IdKh, NazwaKh FROM kontrahenci";
  16. $result2=mysql_query($query2);
  17. $num2=mysql_numrows($result2);
  18. while ($x < $num2) 
  19. {
  20. if ($IdKh=$IdKh_prev) continue $IdKh_prev;
  21. $IdKh=mysql_result($result2,$x,"IdKh");
  22. $NazwaKh=mysql_result($result2,$x,"NazwaKh");
  23. echo "<option value=\"$IdKh\">$NazwaKh</option>";
  24. $x++;
  25. }
  26. ?>
  27. </select>

Proszę o dalsze wskazówki, czytałem manuala, ale nie wiem jak zastosować continue w tym przypadku sad.gif

Poprawiłem kod wyświetlający listę <select>, po wstawieniu
  1. <?php
  2. if ($IdKh=$IdKh_prev) continue $IdKh;
  3. ?>
, serwer kończył ładowanie strony na tym wyrażeniu sad.gif

Pomocy! Oto kod po poprawkach:
  1. <select class="input" name="IdKh">
  2. <option value="<?php echo $IdKh; ?>">
  3. <?php
  4. $query4="SELECT NazwaKh FROM kontrahenci INNER JOIN zamowienia ON kontrahenci.IdKh=z
    amowienia.IdKh WHERE IdNag=$IdNag"
    ; // IdNag to nr Id całego zlecenia zapisanego w tabeli "Zlecenia"
  5. $result4=mysql_query($query4);
  6. $num4=mysql_fetch_array($result4);
  7. $NazwaKh=$num4['NazwaKh'];
  8. echo $NazwaKh;
  9. ?>
  10. </option>
  11. <?php
  12. $IdKh_prev=$IdKh;
  13. $query5="SELECT IdKh, NazwaKh FROM kontrahenci";
  14. $result5=mysql_query($query5);
  15. $num5=mysql_numrows($result5);
  16. while ($x < $num5) 
  17. {
  18. if ($IdKh=$IdKh_prev) continue $IdKh;
  19. $IdKh=mysql_result($result5,$x,"IdKh");
  20. $NazwaKh=mysql_result($result5,$x,"NazwaKh");
  21. echo "<option value=\"$IdKh\">$NazwaKh</option>";
  22. $x++;
  23. }
  24. ?>
  25. </select>
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.