Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Php + Mysql] zastosowanie funkcji
Forum PHP.pl > Forum > Przedszkole
simi20
<?php

Witam
Prosiłbym bardzo o pomoc w kwestii funkcji gdyż męcze sie z tym juz od dobrych paru dni i niestety nie mogę znaleźć rozwiązania. zacząłem przerabiać moja dotychczasową strone na skrypty z funkcjami, no i niestety formularz który prędzej gdy cały kod strony znajdował się w jednym pliku działał prawidłowo gdy przekształciłem to na funkcje niestety nie działa.
Dotychczas kod strony wyglądał następująco:

  1. <?php
  2. $category = $db->query("SELECT* FROM category");
  3. if(!$category)
  4. {
  5. exit('Nie mozna pobrac kategorii');
  6. }
  7.  
  8. ?>
  9. <form action="add.php" method="post">
  10. <table width="550" border="0" cellpadding="0" cellspacing="0">
  11. <tr>
  12. <td width="300"><label for="category">Wybierz kategorie: </label></td>
  13. <td><select name="c_id" size="1" id="category">
  14. <option selected value="" >Wybierz kategorie</option>
  15. <option value="">---------</option>
  16. <?php
  17. while ($wynik=$category->fetch_assoc()) 
  18. {
  19. $c_id = $wynik['id'];
  20. $c_name = htmlspecialchars($wynik['name']);
  21. echo "<option value=$c_id>$c_name</option>n";
  22. }
  23. ?>
  24. </select>
  25. .
  26. .
  27. .  //ciag dalszy formularza


W takiej wersji wszystko ładnie sie wyświetlało. Kategorie były pobierane z bazy danych i umieszczane w formularzu w polu<select>.
Natomiast gdy przekształciłem to na funkcje to już w polu <select> nie wyświetlają się żadne kategorie.

Funkcja pobierająca kategorie z bazy danych znajdująca sie w pliku function_question.php:

  1. <?php
  2. function take_category()
  3. {
  4. $db = connect_db();
  5. $question = "SELECT* FROM category";
  6. $category = $db ->query($question);
  7. if (!$category)
  8. return false;
  9. $quantity = $category -> num_rows;
  10. if(!quantity ==0)
  11. return false;
  12. $result = $category->fetch_assoc();
  13.  
  14. global $result;
  15. $result = true;
  16. }
  17. ?>


To ona odpowiada za pobranie danych z bazy

Funkcja która wysietla formularz kategori znajduje sie w pliku function_display.php:

  1. function form_add_pro($result)
  2. {
  3. ?>
  4. <form action="add.php" method="post">
  5. <table width="550" border="0" cellpadding="0" cellspacing="0">
  6. <tr>
  7. <td width="300"><label for="category">Wybierz kategorie: </label></td>
  8. <td><select name="c_id" size="1" id="category">
  9. <option selected value="" >Wybierz kategorie</option>
  10. <option value="">---------</option>
  11. <?php
  12. while ($wynik=$result)
  13. {
  14. $c_id = $wynik['id'];
  15. $c_name = htmlspecialchars($wynik['name']);
  16. echo "<option value=$c_id>$c_name</option>n";
  17. }
  18. ?>
  19. </select>
  20. .
  21. .
  22. .//tu jest reszta formularza
  23. .
  24. .
  25. .
  26. <?php
  27. }
  28. ?>


Plik wyswietlajacy formularz i cala reszte:

  1. <?php
  2. require_once('all_function.php'); //tusa przylaczone wszystkie pliki z funkcjami
  3. $db = connect_db();
  4.  
  5. create_top_page('Dodawanie nowych zeczy do kategori');
  6. create_title_page('Dodaj nowy produkt');
  7.  
  8. take_category();
  9. form_add_pro($result);
  10.  
  11.  
  12. list_page();
  13. create_pit_page();
  14. ?>


formularz cały się wyświetla tylko nie ma żadnej kategorii po rozwinięciu pola select.
O to mój cały problem bardzo bym prosił o pomoc w rozwiązaniu mojego problemu z góry dziekuje za każde wskazówki i pozdrawiam.
akubiczek
Zdebugowanie tego zajmie ci jakieś 2 minuty i już będziesz wiedział co ci nie działa. Zacznij od sprawdzenia zawartości zmiennej $result w funkcji take_category(). Co, że nie debuguje się? To może warunek if(!quantity ==0) jest nonsensowny w tym kontekście?

A poza tym, skoro używasz funkcji, to funkcja - jaka sama nazwa wskazuje zwraca jakąś wartość. Ty robisz karkołomne global $result, zamiast zwrócić wartość tej właśnie zmiennej. Tak się tego nie robi.

UPDATE:
O rany, przyjrzałem się teraz dokładniej. W twoim kodzie masz kolejne bzdury:

$result = true; - po co to?

Widzę, że w ogóle nie masz pojęcia co tworzysz smile.gif A więc dobra, musisz w funkcji zrobić coś takiego:

  1. <?php
  2. $result=array();
  3. while ($wynik=$category->fetch_assoc()) {
  4.  $result[]=$wynik;
  5. }
  6.  
  7. return $result;
  8. ?>


w wyniku działania dostajesz tablicę $result z rekordami z bazy.

[+] edit
Do wstawiania kodu na forum służą odpowiednie
tagi BB Code. Tym razem poprawiłem, ale
na przyszłość proszę o tym pamiętać.
---
~strife
simi20
Mam tylko jedno pytanko w której funkcji należy dokonać tych zmian??
ponieważ jak zmieniłem to w taki sposób
  1. <?php
  2. function take_category()
  3. {
  4. $db = connect_db();
  5. $question = "SELECT* FROM category";
  6. $category = $db ->query($question);
  7. if (!$category)
  8. return false;
  9. $result=array();
  10. while ($wynik=$category->fetch_assoc()) 
  11. {
  12. $result[]=$wynik;
  13. }
  14. return $result;
  15. }
  16. ?>

A funkcje wyświetlającą na

  1. function form_add()
  2. {
  3. ?>
  4. <form action="add_bauquets.php" method="post">
  5. <table width="550" border="0" cellpadding="0" cellspacing="0">
  6. <tr>
  7. <td width="300"><label for="category">Wybierz kategorie: </label></td>
  8. <td><select name="c_id" size="1" id="category">
  9. <option selected value="" >Wybierz kategorie</option>
  10. <option value="">---------</option>
  11. <?php
  12. while ($result) 
  13. {
  14. $c_id = $result['id'];
  15. $c_name = htmlspecialchars($result['name']);
  16. echo "<option value=$c_id>$c_name</option>n";
  17. }
  18. ?>
  19. </select>
  20. </td>


to kurcze dalej nie wyświetla mi kategori.
Darti
na pierwszy rzut oka to mi tutaj chyba spacji brakuje:
  1. <?php
  2. $question = "SELECT* FROM category";
  3. ?>
simi20
Cytat(Darti @ 27.04.2007, 21:20:29 ) *
na pierwszy rzut oka to mi tutaj chyba spacji brakuje:
  1. <?php
  2. $question = "SELECT* FROM category";
  3. ?>


Spacja w tym miejscu?questionmark.gif? Nie jest konieczna.
Dzięki za próbę pomocy ale to zapytanie jest jak najbardziej prawidłowe smile.gif Bardziej prosiłbym o pomoc przy funkcji.
pozdrawiam
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.