Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z bazą danych i skryptem PHP
Forum PHP.pl > Forum > Przedszkole
Bustard
Witam, otóż dziś zgłaszam się do Was z problemem nt. bazy danych i skryptu, otóż mam skrypt PHP który łączy się z bazą danych, pobiera dane nt. klucza, daty ważności klucza i daty dzisiejsze, i jeśli wszystko jest okej przechodzi dalej, jeśli nie - wiadomo, błąd. No i mam błąd, tyle że troszeczke inny a dokładniej
Cytat
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ****** on line 25
klucz_niewazny lub nie znaleziono klucza

Tam na dole nie liczcie 25 linijki, bo kod jest okrojony, błąd wywala w tej linijce :
  1. $ilosc = mysql_num_rows($query);
i moim zdaniem błąd jest w bazie MySQL a dokładniej w tym że jak mam połączyć ze sobą tabele data_ważność z tabelą klucz? podeślę trochę okrojonego kodu PHP dla zrozumienia.
  1. <?php
  2. $pol = mysql_connect('localhost', 'user', 'password') or die('Problem z poł.');
  3. $pol = mysql_select_db('baza') or die('Problem z poł. z bazą');
  4.  
  5. if (!empty($_POST['klucz']))
  6. {
  7. $kluczyk = $_POST['klucz'];
  8. $zap1 = ('update klucze set data_dzis=curdate() where klucz=\''.$kluczyk.'\'');
  9. $zap2 = ('select data_waznosc, data_dzis from klucze where klucz=\''.$kluczyk.'\'');
  10. $query = mysql_query($zap1);
  11. $query = mysql_query($zap2);
  12.  
  13. $ilosc = mysql_num_rows($query);
  14.  
  15. if (!$ilosc == '0')
  16. {
  17. while ($txt = mysql_fetch_assoc($query))
  18. {
  19. $waznosc = ($txt['data_waznosc']);
  20. $dzis = ($txt['data_dzis']);
  21. if ($waznosc > $dzis)
  22. {
  23. echo '<klucz>klucz_wazny</klucz>';
  24. } else { echo '<klucz>klucz_niewazny</klucz>'; }
  25. }
  26. } else { echo '<klucz>klucz_niewazny</klucz> lub nie znaleziono klucza'; }
  27. } else { echo '<klucz>klucz_niewazny</klucz>'; }
  28. ?>

dziękuję za pomoc.
nospor
Jak radzić sobie z tego typu błędami masz napisane tu:
Temat: Jak poprawnie zada pytanie

przenosze
Bustard
nie rozumiem co nie tak w tym temacie jest?

btw. więcej screenów : http://imageshack.us/g/31/bazaklucze.png/
CuteOne
1.
  1. $zap2 = "select data_waznosc, data_dzis from klucze where klucz='$kluczyk'";
  2. $query = mysql_query($zap2) or die(mysql_error());


2. a cóż to "if (!$ilosc == '0')" questionmark.gif
if($ilosc > 0)


@edit: to niech ci nie pomaga wink.gif
Bustard
nie mam pojęcia szczerze mówiąc, mój znajomy mi pomagał przy pisaniu tego skryptu.
edit : kiedy ja sam tyle aż nie potrafię.. myślałem że bedzie dobrze, a nie jest. i szukam pomocy u profesjonalistów.
ixpack
supplied argument is not a valid MySQL result resource in ****** on line 25 - Czego więcej potrzeba? smile.gif
Sprawdż poprawność zapytań i czy w ogóle baza cokolwiek zwraca...

var_dump smile.gif

Edit: Zastosuj się do CuteOne'a

Co do tego !ilosc == '0' - ciekawe rozwiązanie wink.gif działa, choć wygląda dziwnie...
Bustard
A powiedz mi jak sprawdzić czy baza coś zwraca?

Co do CuteOne :
teraz wywala błąd : Unknown column 'data_waznosc' in 'field list'
ixpack
"pomógł" należy się CuteOne - on szybciej odpowiedział =]

var_dump - użyj tego do wyświetlenia tego, co baza zwraca.

Ps. Jesteś nowy tu, wiedz, że za zwyczaj ludzie dadzą Tobie link do miejsca, gdzie coś może się przydać. Nie często ktoś zrobi coś za Ciebie. Inwestujemy w wędki wink.gif

Edit: wywala błąd, bo kolumny nie ma o podanej nazwie... Angielski się kłania
Bustard
spoko spoko, tyle że jest ta tabela :| i w tabeli jest taka kolumna.. :|
ixpack
Pokaż strukturę tabeli klucze.
ixpack
wink.gif

No więc tabela, a kolumna to 2 inne rzeczy. Ty masz 2 tabele z jedną kolumną. Próbujesz odwołać się do nieistniejącej kolumny w tabeli klucze. W klucze jedyną kolumną, która istnieje jest kolumna klucze. Nie ma tam w ogóle indeksów etc. Cała struktura jest zła.

Stwórz tabele od nowa i ustaw poprawne kolumny w tabeli tak, aby w tabeli klucze były kolumny klucz, data_waznosc, data_dzis
Jedna tabela, nie trzy.
Bustard
Działa.. Boże, dzięki !
Banalne problemy, są moimi największymi, heh biggrin.gif
ixpack
Cytat(Bustard @ 11.11.2011, 14:03:36 ) *
Działa.. Boże, dzięki !
Banalne problemy, są moimi największymi, heh biggrin.gif


Bogiem, to ja nie jestem wink.gif
Polecam książkę: vademecum profesjonalisty php i mysql. Na początek super.
Albo strona mysql - dokumentacja + php.net - dokumentacja.
Przeczytaj całość.
nospor
Cytat
nie rozumiem co nie tak w tym temacie jest?
Przecież masz tam jak wół po polsku wszystko napisane.
Masz włączyć wyświetlanie wszystkich błędów,
gdy masz problemy z bazą masz używać mysql_error()
masz robic var_dump()

Wszystko to jest po polsku napisane a ty się głupio pytasz :/
Wszystko to musieli ci to jeszcze raz z osobna w kolejnych postach napisać, bo ty nie potrafisz przeczytać ze zrozumieniam prostego tematu napisanego po polsku ze wskazówkami jak postępować w takich przypadkach. Pewnie w ogóle go nie przeczytałeś.
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.