Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]problem z funkcjami
Forum PHP.pl > Forum > Przedszkole
aque
Witam. Mam problem ze skryptem który napisałem we funkcji. A mianowicie napisalem skrypt menu kożystający z bazy mysql, wszystko to jest napisane we funkcji menu();. I teraz zaczyna się problem... gdy chce umiesic to menu w pliku index.php (teraz znajduje się w functions/menu.php) to wywalami błędy:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\apache\httpd\html\portal\functions\menu.php on line 6

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\usr\apache\httpd\html\portal\functions\menu.php on line 11

zamieszcze tu kod pliku menu.php i index.php

menu.php:
  1. <?
  2. require_once("global.php");
  3. function menu() {
  4.  $query = "SELECT * FROM menu";
  5.  $result = mysql_query($query);
  6.  while( $row = mysql_fetch_array($result, MYSQL_ASSOC))
  7.  {
  8. echo"<a href="" . $row['adres'] . "">" . $row['nazwa'] ."</a><br />";
  9.  
  10.  }
  11.  mysql_free_result($result);
  12.  return $row;
  13. }
  14. baza_mysql_exit();
  15. ?>


index.php:
  1. <?
  2.  
  3. echo("<div style="width: 700px; height: 150px; border: 1px solid black;">logo</div>");
  4. echo("<br />");
  5. echo("<div style="float: left; width: 150px; border: 1px solid black;">");
  6. require_once("functions/menu.php");
  7. menu();
  8. echo("</div>");
  9. echo("<div style="float: left; width: 400px; border: 1px solid black;">a");
  10.  
  11.  
  12.  
  13. echo("</div>");
  14. echo("<div style="float: left; width: 150px; border: 1px solid black;">menu2</div>");
  15. ?>


PS1. W pliku global.php jest łączenie sie z bazą sql
PS2. Gdy w pliku menu php umieszcze to menu(); i bezbosrednio go otworze to menu dziala
Aure
Po prostu nie ma połączenia z bazą i stąd te błędy.
Pokaż global.php to może będziemy w stanie coś poradzić (ja bym obstawiał problem z zasięgiem zmiennych).
aque
global.php:

  1. <?
  2. require_once("config.php"); // pobieranie zmiennych z config.php
  3.  
  4. // laczenia sie z baza mysql
  5.  $sql = mysql_connect($host, $user, $haslo);
  6.  mysql_select_db($baza);
  7.  
  8. // koniec
  9.  
  10. ?>

Dane do bazy sa w config.php
Aha i probowalem robic na poczatku funkcji global $sql; ale to tez nic nie dawalo
Gość
Napisz w pliku menu.php adres zasobu do polaczenia z baza danych w zapytanie, czyli
  1. <?php
  2. $result = mysql_query($query,$sql)
  3. ?>

wtedy zobaczysz czy w ogole funkcja menu 'widzi' polaczenie z baza, bo z tego co piszesz to wlasnie tego polaczenia nia ma.
TomASS
A ja z upartością kangura będę powtarzał:
pkt 2!
jeśli to przecztasz, to wyświetlony komunikat podpowie Ci co masz nie tak.

Cytat
Napisz w pliku menu.php adres zasobu do polaczenia .....

Nie jest to konieczne.


Aure:
Cytat
ja bym obstawiał problem z zasięgiem zmiennych

Z manuala:
Cytat
Jeśli instrukcja wczytania znajduje się wewnątrz deklaracji funkcji, to cały kod zawarty w pliku wczytywanym będzie zachowywał się, jakby był zdefiniowany wewnątrz tej funkcji. Znaczy to, że odziedziczy zasięg zmiennych po tej funkcji.

Także to też nic nie da.

Istnieje możliwośc, że pliki masz w złych katalogach, ale podstawą jest to co napisałem na samym początku.
mike
~aque proszę poprawić temat wątku, nie jest zgodny z zasadami panującymi na forum Przedszkole.
Aure
Cytat
Aure:
Cytat
ja bym obstawiał problem z zasięgiem zmiennych

Z manuala:
Cytat
Jeśli instrukcja wczytania znajduje się wewnątrz deklaracji funkcji, to cały kod zawarty w pliku wczytywanym będzie zachowywał się, jakby był zdefiniowany wewnątrz tej funkcji. Znaczy to, że odziedziczy zasięg zmiennych po tej funkcji.

Także to też nic nie da.

Zauważ tylko, że w przykładowym kodzie require() nie występuje w funkcji tylko przed nią winksmiley.jpg
Jednakże po chwili zastanowienia też skłaniałbym się ku błędowi w zapytaniu, dopiero teraz skojarzyłem że gdyby nie było połączenia to plułoby się mysql_query() ze swoim "invalid resource" winksmiley.jpg
Tak więc die(), die() i jeszcze raz die() biggrin.gif
aque
Cytat(mike_mech @ 25.07.2006, 11:10 ) *
~aque proszę poprawić temat wątku, nie jest zgodny z zasadami panującymi na forum Przedszkole.

Poprawione


Wrzucilem do tej funkcji echo mysql_error(); i mi wyswietla ze nie wybrano zadnej bazy, nie wiem czamu. Przeciez bezposrednio jak uruchomie plik menu.php to dziala a jak chce tą funkcje uruchomic w innym pliku to nie i wyswietla ten komunikat o bazie.
siemakuba
wydaje mi się, że nieprawidłowo includujesz pliki.

  1. <?php
  2. // zamiast
  3. require_once("global.php");
  4.  
  5. // sprawdz tak
  6. require_once("../global.php");
  7. ?>

gdzieś ti się kręci wątek na temat include i ścieżek, więc możesz tam zajrzeć w poszukiwaniu wyjaśnień. Ja osobiście polecam po raz n-ty ścieżki absolutne. Znakomicie rozwiązują problemy takiego właśnie typu.

pozdr.
aque
Cytat(siemakuba @ 25.07.2006, 12:39 ) *
wydaje mi się, że nieprawidłowo includujesz pliki.

  1. <?php
  2. // zamiast
  3. require_once("global.php");
  4.  
  5. // sprawdz tak
  6. require_once("../global.php");
  7. ?>

gdzieś ti się kręci wątek na temat include i ścieżek, więc możesz tam zajrzeć w poszukiwaniu wyjaśnień. Ja osobiście polecam po raz n-ty ścieżki absolutne. Znakomicie rozwiązują problemy takiego właśnie typu.

pozdr.

nic nie dala ta zmiana wyswietlilo tylko blad ze niemozna znalesc pliku global.php

edit:
dodalem do pliku menu.php na początku to
  1. <?php
  2. require_once("config.php"); // pobieranie zmiennych z config.php
  3.  
  4. // laczenia sie z baza mysql
  5.  $sql = mysql_connect($host, $user, $haslo);
  6.  mysql_select_db($baza);
  7. // koniec
  8.  
  9. //zamiast tego
  10.  
  11. require_once("global.php");
  12. ?>

i zaczelo all ok dzialac
Aure
Skoro dostałes komunikat, że nie wybrano bazy to spróbuj wykorzystać die() po raz kolejny:

  1. <?php
  2. mysql_select_db($baza) or die(mysl_error());
  3. ?>
aque
thx aure dziala mozna zamknąć temat. dzieki wszystkim za zainteresowanie moim problemem
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.