Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: error
Forum PHP.pl > Forum > Bazy danych > MySQL
kabukiman
Hmm, teraz mam problem. Rozwiązanie pewnie jest prościutkie, ale ja dopiero się uczę... przy poleceniu mysql_fetch_array wyskakuje error "Supplied argument is not a valid MySQL result resource" .
Jakby ktoś chciał skrypt, to

<?

$sql=mysql_connect("localhost","user","password");
$baza="baza1";
echo ("<table><tr><td>");
$query = "SELECT imie,nazwisko,telefon FROM telefony";
$result = mysql_db_query($baza,$query);

while ($wiersz = mysql_fetch_array ($result) )

{
echo ($wiersz[imie]);
echo ($wiersz[nazwisko]);
echo ($wiersz[telefon]);
}

echo ("</tr></td></table>");
mysql_close ($sql);

?>

hmm, nie wiem gdzie jest błąd, według moich manuali powinno wszystko być o.k. Może ktos wie jak mi pomoc?
Seth
Wydaje mi sie, ze chodzi o query powinno byc SELECT * FROM telefony
Mistycus
Cytat
while ($wiersz = mysql_fetch_array ($result) )

Nie znam się na MySQL, ale zauważyłem, że popełniłeś błąd porównując zmienne w warunkach pętli - powinnno być $wiersz == mysql_fetch_array ($result). Pamiętaj, że pojedyńcze '=' to przypisanie, a nie porównanie.
kryr
Cytat
kabukiman napisał:  
while ($wiersz = mysql_fetch_array ($result) )  
Nie znam się na MySQL, ale zauważyłem, że popełniłeś błąd porównując zmienne w warunkach pętli - powinnno być $wiersz == mysql_fetch_array ($result) . Pamiętaj, że pojedyńcze ' = ' to przypisanie, a nie porównanie.

To akurato jest dobrze! Bo wlasnie chodzi o przypisanie, a nie porownanie.
Kod
echo ($wiersz[imie]);

powinno byc:
Kod
echo ($wiersz['imie']);
Mistycus
Cytat
To akurato jest dobrze! Bo wlasnie chodzi o przypisanie, a nie porownanie.

Od kiedy wewnątrz okrągłego nawiasu pętli wykonuje się jakieś operacje. Ten nawias służy do podawania warunków, a nie przypisywania wartości zmiennym.
kryr
Mistycus: Bez urazy, ale powinienes postudiowac jakiegos manuala, najlepiej do c++ (tam chyba zdobedziesz najobszerniejsze info o operatorach)...
kabukiman
nie bardzo, nie pomaga... z czym to może mieć związek?
kryr
A z baza na pewno jest wszytsko OK? Zalozyles tabele z odpowiednimi polami? Wpisales cos do ich? Na localhoscie masz serwer MySQL? (sory za desperackie pytania, ale ja chyba nic wiecej nie pomoge...)
kabukiman
ta, serwer jest, pola są odpowiednie tylko ten $%^# błąd ciągle wyskakuje!
Seth
Sprobuj moze
zamien:
$result = mysql_db_query($baza,$query);
na:
$result = mysql_query($query);

Nie wiem, moze to cos da... any way only hope can keep me together biggrin.gif
kabukiman
kurcze nie wiem, nie pomaga.. moze dam sobie z tym na razie spokój. Co to za błąd, tzn. czy moze to być wina źle skonfigurowanego serwera?
castor
Cytat
<?
$sql=mysql_connect("localhost","user","password");
$baza="baza1";


a wstaw tu to:
Kod
   $baza_wybierz=mysql_select_db($baza);


Cytat
echo ("<table><tr><td>");
$query = "SELECT imie,nazwisko,telefon FROM telefony";



i to zmien:
Cytat
   $result = mysql_db_query($baza,$query);

na to:
Kod
$result=mysql_query($query,$sql);


Cytat
while ($wiersz = mysql_fetch_array ($result) )

{
echo ($wiersz[imie]);
echo ($wiersz[nazwisko]);
echo ($wiersz[telefon]);
}

echo ("</tr></td></table>");
mysql_close ($sql);

?>


Powinno pojsc :wink:
kabukiman
kurcze, dalej nie dziala.... fuck... chyba jednak coś źle skonfigurowałem bo teraz nawet zdalnie (przez www) bazy się nie da założyć.
kabukiman
aargh... dosowy monitor działa ale jak już próbuję zarządzać bazą przez skrypt w php wtedy wszystko się wali.
castor
Glupia uwaga ale:

dostep do bazy czyli: haslo, user, i nazwa DB jest dobrze podana??

Jakie bledy ci wyskakuja??

ahhaa a jeszcze w tym co ci poprawilem zrob tak jak ci kryr powiedzial:
Kod
$wiersz['imie']


chodzi o uszy :wink:
msulik
Zmodyfikuję trochę Twój kod:

Kod
<?

/*

spróbujemy nawiązać połączenie z bazą. Jeśli to się powiedzie, to zmiennej [b]$sql[/b] zostanie przypisany identyfikator połączenia (różny od zera).

Jeśli się to nie powiedzie, to zmiennej [b]$sql[/b] zostanie przypisana wartość zero.

Całe wyrażenie po [b]if[/b] zwróci tę właśnie wartość.

*/

if ($sql=mysql_connect("localhost","user","password"))

{

// połączenie OK.

/*

następnie spróbujemy wykonać zapytanie. Jeśli będzie ono poprawne, to funkcja [b]mysql_db_query[/b] zwróci identyfikator wyniku. W przeciwnym wypadku zwróci [b]0[/b] lub - jak kto woli - [b]FALSE[/b]

*/

$baza="baza1";

echo ("<table><tr><td>");

$query = "SELECT imie,nazwisko,telefon FROM telefony";

if ($result = mysql_db_query($baza,$query))

{

// zapytanie OK.



while ($wiersz = mysql_fetch_array ($result) )

{

echo ($wiersz[imie]);

echo ($wiersz[nazwisko]);

echo ($wiersz[telefon]);

}



echo ("</tr></td></table>");

}

else

{

echo('Zapytanie bylo bledne.');

}

mysql_close ($sql);

}

else

{

echo('Polaczenie z baza nie powiodlo sie.');

}

?>


W ten sposob zidentyfikujesz błąd.

Jeszcze jedno: zwróć uwagę na zamknięcie tabeli w htmlu... Tam jest błąd (ale to oczywiście nie ma znaczenia dla mysql [sic!]).
msulik
Cytat
Nie znam się na MySQL, ale zauważyłem, że popełniłeś błąd porównując zmienne w warunkach pętli - powinnno być $wiersz == mysql_fetch_array ($result). Pamiętaj, że pojedyńcze '=' to przypisanie, a nie porównanie.


To nie ma związku z MySQL. Poza tym TAM BYŁO DOBRZE! Ma być $wiersz = mysql_fetch_array ($result). Inaczej nie ma sensu, a wręcz nic nie da.

O operatorach w php czytaj tu: http://www.php.net/manual/pl/language.oper....assignment.php.

Pytanie na oblanie kiepskiego studenta nie znającego języka C:
Niech $a=0, $b=10, $c=20, $d=30, $e=40. Zastanów się bez komputera, jaką wartość będzie miała zmienna $a po wykonaniu takiej linii:
Kod
$a-=$b=-$c+++$d-$e;
Mistycus
Cytat
Pytanie na oblanie kiepskiego studenta nie znającego języka C:
Niech $a=0, $b=10, $c=20, $d=30, $e=40. Zastanów się bez komputera, jaką wartość będzie miała zmienna $a po wykonaniu takiej linii:
Kod
$a-=$b=-$c+++$d-$e;

Skoro $c równa się 20, to $c++ będzie równało się 21, natomiast -$c++ równe będzie -21 (to chyba logiczne). W takim razie -$c+++$d równe będzie 9, a -$c+++$d-$e daje -31 i tyle właśnie równa się $b. Skoro $a równe 0 mamy pomniejszyć o wartość $b, w rezultacie otrzymamy $a równe 31.

I co studenciku laugh.gif :?: Ja uczę się programowania na własną rękę, a nie w jakiejś tam akademii. Na początku był HTML (półtora roku temu), potem JavaScript(rok temu), a od 09.04.2002 php. W między czasie był jeszcze BAT (pliki wykonywalne *.bat w Windowsie). I tak w przeciągu półtora roku nauczyłem się w całości dwóch języków i po części jeszcze kilku. Tak więc niech mi nikt nie sugeruje, że się nie znam na operatorach. :x
msulik
Cytat
w rezultacie otrzymamy $a równe 31.

I co studenciku laugh.gif  :?:  


A mi jakoś wyszło 30. To dlatego, że wyrażenie $c++ zwiększy wartość zmiennej $c o 1, ale zwróci starą wartość $c, czyli 20.

Gdyby było napisane ++$c zamiast $c++, to wyszłoby, że $a==31.

Miałbyś piękną pałę w indeksie, że aż miło biggrin.gif

Proponuję jednak poczytać o operatorach inkrementacji i dekrementacji: http://www.php.net/manual/pl/language.oper...s.increment.php , a także zajrzeć do jakiejś książki o języku C. Wiem z własnego doświadczenia, że bazując na kursach w internecie, nie można się wiele nauczyć.
Mistycus
Ojej, sprawdziłem to przy pomocy php i okazało się, że popełniłem drobniutki błędzik :oops:
Chodzi o to, że wartość $c zostaje zwiększona o 1 w zapisie $c++, ale dopiero po wykonaniu działania. W rezultacie $a równe będzie 30, :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: [/b]
Mistycus
Cytat
Wiem z własnego doświadczenia, że bazując na kursach w internecie, nie można się wiele nauczyć.

Ja swą naukę rozpocząłem sprawdzając kody źródłowe (tak było w przypadku HTML'a i BAT). Kursy internetowe nauczyły mnie JavaScriptu, a obecnie pokazują mi czym jest php i nie wiem czemu sądzisz, że takie kursy wiele mnie nie nauczą. W najbliższym czasie tą samą metodą mam zamiar nauczyć się C++ i Java'y. Masz lepszy pomysł?
msulik
Cytat
Masz lepszy pomysł?


Parę złotych i masz dobrą książkę, ale nie taką w stylu "Nauka C++ w weekend".

Takie kursy w internecie piszą amatorzy, którzy może mają doświadczenie w programowaniu lub obsłudze jakiegoś programu, ale zazwyczaj nie potrafią tej wiedzy przekazać. Mogą one posłużyć jedynie jako wstęp do omawianego problemu, jednak jest to bardzo powierzchowny opis.

Naprawdę - warto zainwestować w dobrą książkę. Strzeż się książek wydawnictwa Hel**n (nie chcę podawać nazwy) - są one tłumaczone przez ludzi, którzy nie znają się na rzeczy, a sam ich poziom też nie jest za wysoki. To samo z serią "...dla opornych". Warto rozejrzeć się za książkami wydawnictw WNT i MIKOM.

Dobra książka informatyczna to taka, w której nie leje się wody, a z drugiej strony taka, w której nie podaje się suchej teorii, tylko dużo przykładów.
Seth
Jesli chodzi o dobry (a nawet bardzo dobry) ksiazkowy kurs to polecam ARKANA "C++ Programowanie" Harvey'a M. Deitel i Paul'a J. Deitel. Ja tak jaki i ty Miscytus jestem samoukiem i ta ksiazka naprawde wiele mnie nauczyla. Jest tylko jedno ale: kosztuje ok 100zl. Lacznie stron ma 1082. Wyjasniona jest cala skladnia, funkcje, klasy itd.

Ja po kupieniu ksiazki wydawnictwa Helion podchodzilem sceptycznie do tego typu opracowan ale ta ksiazka jest naprawde SUPER :!:
haiaw
Panowie, prosze trzymac sie tematu, a jakiekolwiek inne dygresje umieszczac w nowych watkach, a dyskusje bardzo odbiegajace od tematow php,MYSQL,PGSQL,APACHE umieszczac w nieistniejacym niestety jeszcze ( Hyper- miales zalozyc winksmiley.jpg ) forum Hydepark.

Forum Hydepark bedzie zalozone w ciagu kilku dni.
Na przyszlosc prosze tam kierowac tego typu rozmowy.

W innym wypadku, forum zostanie zasmiecone, co znacznie obnizy jego wartosc merytoryczna,albo watki beda blokowane. :/
Mistycus
Dzięki Msulik - jak odłoże trochę kasy, to napewno kupię sobie którąś z książek MIKOMA'a lub WNT'a. Tobie Seth również dzięki smile.gif

Co do Ciebie Haiaw, to dałbyś spokojnie porozmawiać. Ok? Jak sam piszesz nie ma jeszcze forum "Hydepark", więc póki co nie usuwaj postów o podobnej tematyce. Swoją drogą temat książek o php nie odbiega chyba bardzo tematyce tego forum. Czyż nie :?:
em1X
Cytat
<?  

$sql=mysql_connect("localhost","user","password");  
$baza="baza1";  
echo ("<table><tr><td>");  
$query = "SELECT imie,nazwisko,telefon FROM telefony";  
$result = mysql_db_query($baza,$query);  

while ($wiersz = mysql_fetch_array ($result) )  

{  
echo ($wiersz[imie]);  
echo ($wiersz[nazwisko]);  
echo ($wiersz[telefon]);  
}  

echo ("</tr></td></table>");  
mysql_close ($sql);  

?>


ja bym to zrobil tak

<?php

@mysql_connect("localhost","user","passwd") or die(mysql_error());

$exec = mysql_db_query("baza", "select imie, nazwisko, telefon from telefony") or die(mysql_error());

print("<table><tr><td>");

while($row = mysql_fetch_row($exec))
print("$row[0] $row[1] $row[2]");

print("</td></tr></table>");

?>


jak dalej sie sypie to znaczy ze zle wyciagasz dane z tabeli (inna nazwa, komorki itp)
kryr
Mam wrazenie, ze krecicie sie w kolko... te wszystkie skrypty roba dokladnie to samo...
em1X
no ale jak tu mu nie dziala to raczej cos zle wyciaga
kabukiman
AHHAHAHAHAHAHAH!!!!!

działa, działa! sorki za ten wybuch ale nie mogłem się powstrzymać. Kurcze, już wiem gdzie jest błąd!!! Skrypt był w porządku, a ja wam trułem głowę bez powodu. Jak tworzyłem bazę to zamiast "baza1" zrobiłem baze o nazwie "bza1". Dopiero WCZORAJ to zauważyłem.
Seth
rolleyes.gif biggrin.gif
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.