Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wyłączenie elementu z wyniku pętli
ichu
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.08.2006

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


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...

Ten post edytował ichu 2.04.2008, 07:56:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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".
Go to the top of the page
+Quote Post
ichu
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.08.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:38