[php] problem z łączem


(Marcinkowska J) #1

        

            Dziękuję za odwiedzenie witryny!

            

            

                <?

            

                                }

                                ?>

            

        

    


(binet-xp) #2

Witam,

Tak na bolka oko to nie ma prawa działać, z kodu jaki podałeś w 1 skrypcie wynika ze zmienna $produkt_num jest pusta. Po "extract($row);" powinieneś zrobić przypisanie wartości dla $produkt_num np w taki sposób $produkt_num = $row['nazwa_kolumny_w_bazie_prodid']; lub zamiast $produkt_num wstawić bezpośrednio $row['nazwa_kolumny_w_bazie_prodid'].

ps. korzystasz z zmiennych GLOBALREGISTER (coś w tym stylu)? Bo nie powinne działać również pozostałe zmienne np. $produkt_name


(Damgora) #3

Daj strukturę tabeli produkty.


(Marcinkowska J) #4

w tabeli produkty mam:

produkt_num (jako klucz podstawowy)

produkt_name

produkt_aut

produkt_opis

produkt_cena

produkt_kat


(Damgora) #5

Czemu ma służyć warunek w tym zapytaniu?

A jak to się objawia? W podanym kodzie jedynie przypisujesz go do zmiennej. Może nie podałeś całego kodu, w którym go rzeczywiście wykorzystujesz?


(Marcinkowska J) #6

Zapytanie powinno wyglądac tak:

$sql = "SELECT * FROM produkty WHERE produkt_num='$prodid'";

ale teraz nic nie wyświetla, pojawia się biała strona.

co może byc tego przyczyną?


(Grzelix) #7

Dodaj to na początku strony i zobacz jakie błędy wyrzuca serwer.

error_reporting(E_ALL);

 ini_set("display_errors", 1);

jak nie będziesz umiał ich poprawić to podziel się z nimi na forum


(Marcinkowska J) #8

wyświetliło mi się:

Notice: Undefined index: prodid in C:\Program Files\WebServ\httpd-users\sesja\index.php on line 8


(Grzelix) #9

czyli masz nie zainicjowaną wartość zmiennej $prodid

czy w żródle strony masz poprawne linki typu

index.php?prodid=

??

jeśli to znaczy że masz błąd w pierwszym pliku

z twojego opisu wygląda że drugi plik to index.php i jeśli go uruchomisz to nie istnieje $_REQUEST['prodid'];


(Marcinkowska J) #10

dokładnie wyswietla mi się taki link. A jak to zrobic zeby pobierał poprawny "prodid" z pierwszego pliku?


(Grzelix) #11

(Marcinkowska J) #12

(Grzelix) #13

jeśli już masz poprawne linki w źródle strony to jak poprawisz to zapytanie (które już było omawiane) to powinno się wyświetlić

$query = "SELECT * FROM produkty WHERE produkt_num='$prodid'";

używając print_r możesz sprawdzić czy zapytanie zwraca jakieś wyniki

poszperałem trochę w sieci i nie spotkałem się z użyciem funkcji extract przy pobieraniu danych z bazy. Ja rekomenduje assoc tak jak podałem w poprzednim poście.


(Marcinkowska J) #14

i własnie jest taki myk ze jak wpisuje takie zapytanie to mi się wyświetla cała biała strona.


(Grzelix) #15

Scenariusz wygląda tak:

odpalasz pierwszy plik - działa poprawnie, linki są poprawne typu: index.php?prodid=45

klikasz w ten link i przechodzisz do drugiej strony, która wierzę że nazywa się index.php

jeśli w takim scenariuszu masz białą stronę to możesz zrobić takie zmiany

$prodid = $_GET["prodid"]; //$prodid = $_REQUEST['prodid'];

$sql = "SELECT * FROM produkty WHERE produkt_num=".$prodid;

Jeśli natomiast odrazu uruchamiasz index.php wpisując w pasek adresu to nie masz zmiennej $prodid więc musisz zrobić jakiegoś if i wyświetlić że nie wybrano produktu albo wybrany produkt nie istnieje


(Marcinkowska J) #16

po zmianie nadal nic się niestety nie pojawia.


(Grzelix) #17

masz:

= mysql_query($query)[/code]

a następnie 


[code=php]while($row = mysql_fetch_array($result)){

zmienna $result jest nullem - dlatego włącza się raportowanie błędów lub używa programów które pomagają w wykrywaniu takich błędów. Notatnikiem to pisałeś?

i jeszcze jedna poprawka:



echo "$row["produkt_num"]. '\'";[/code]

na


[code=php]echo ".$row["produkt_num"]."'";



testowałem i wszystko działa

(Marcinkowska J) #18

pisze to w NetBeans.

Chyba jestem jakiś głupi ale jak poprawic to z tym

$results

?

bo nadal nie działa.


(Grzelix) #19

szczerze to brak mi słów. Nie wiem czy chcesz być kiedyś programistą czy tylko męczysz się z tym jako zadanie do szkoły, ale chcąc tworzyć programy jednym z najważniejszych rzeczy jakie musisz opanować to umiejętność rozwiązywania problemów. Jeśli o każdą błachostkę będziesz pytał się na forum to nigdy się niczego nie nauczysz.

wykonujesz zapytanie i wynik zapisujesz do zmiennej $results.

Następnie próbujesz przetworzyć dane ze zmiennej $result , która nigdy wcześnie nie istniała.

Język php nie potrzebuje deklaracji zmiennych jak np. Java, więc napisanie $result tworzy nową zmienną.

dla parsera wygląda to tak

$a = wynik_funkcij;

while( przetwarzaj($b))

a tak naprawdę chcesz przetwarzać $a które wynikiem zapytania.

Mam nadzieję że teraz zrozumiałeś.

jeszcze słowo odnośnie raportowania błędów. Podał ci co trzeba dodać do pliku żeby parser pokazał błędy. Kiedy odpaliłem twój skrypt parser podał że dostaje w linii gdzie jest while wartość nullową a potrzebuje wartość tablicową. sprawdziłem co dostaje a co powinien dostać i problem rozwiązany. Tak powinieneś testować działanie swoich programów.