Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + mysql] co jest nie tak?
Forum PHP.pl > Forum > Przedszkole
dudziec
Witam serdecznie, mam takie pytanie otórz mam baze danych wszystko jest poprawnie z tym, ze mam parametr where i niechce działać bez tego wszytsko hula poprawnie.

oto kod php:

  1. <?php
  2. include "polaczenie.php";
  3. $wynik = mysql_query('SELECT * FROM `harmonogram` ');
  4. while($rzad = mysql_fetch_array($wynik)) {
  5. echo '<b>data:</b> '.$rzad['data'].'<br><b>Temat : </b> '.$rzad['tytul'].'<br><b>miejsce :</b> '.$rzad['miejsce'].'<br><hr>';
  6. }
  7. ?>

jak dodam parametr where

  1. <?php
  2. $wynik = mysql_query('SELECT * FROM `harmonogram` where klucz='$identyfikator' ');
  3. ?>


i ma pokazac tylko dane jednego rekordu o danym kluczu
i wszytsko się sypie. wyskakuje bład:
zmienna $identyfikator jest pobierana z linku na poprzedniej stronie:
link ma postac

  1. <?php
  2. index.php?identyfikator='1'
  3. ?>


co z tym zrobic bo pokazuje sie mi komunikat:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
dziekuje za pomoc
c3zi
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM `harmonogram` where klucz='$identyfikator' ");
  3. ?>
dudziec
zrobiłem i wyplówa mi bład:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\html\informacje.php on line 31
i nieumiem sobie z tym poradzić. :-(
luki100011
Dodaj linijkę
  1. <?php
  2. ?>


Oraz wyświetl zawartość przekazanej zmiennej, może zmienna źle coś przekazuje. A jak nie to może error tobie powie ze masz błąd w zapytaniu.
php programmer
Najlepiej wyświetl sobie na ekranie jak wygląda zapytanie,
prawdopodobnie zmienna $indentyfikator jest pusta

  1. <?php
  2. echo "SELECT * FROM `harmonogram` where klucz='$identyfikator' ";
  3. ?>


Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\html\informacje.php on line 31


a dałeś parametr?
  1. <?php
  2. ?>
djkret
Przypuszczam, że w bazie klucz masz zadeklarowany jako integer. Jeżeli klucz jest wartością numeryczną to nie możesz dać klucz='$identyfikator' ponieważ to oznacza string, zmień to na klucz=$identyfikator. Sprawdź też czy $identyfikator nie jest pusty chociażby przez:

  1. <?php
  2. var_dump($identyfikator);
  3. ?>


Domyślam się, że zmienna $identyfikator przypisywana jest przez $_GET['identyfikator']
dudziec
no ja juz neimam siły moze powiem co i jak ?
mam tabele

key double Nie auto_increment
data date Nie 0000-00-00
miejsce longtext Nie
tytul longtext Nie
tekst longtext Nie
oddzial longtext Nie
wojewodztwo tinytext Nie

mam odnosnik jak powyzej i przekazuje zmienna poprzez linka:

http://127.0.0.1/~html/index.php?strona=in...identyfikator=2

gzdie 2 jest generowana i wyciagana z bazy - moze być to kazda inna cyfra - dla przykładu.
i to jest zmienna $_POST[identyfikator], tak jak widac. i jest to key w bazie danych!
przechodzimy na nastepna strone i chce by sie wyswietliły informacje o tym rekordzie czyli zeby wyswietlił informacje odnosnie rekordu z kluczem key - jak to zrobić. ?


w bazie key jest liczba

po wpisaniu komend powyzej pojawiło sie takie coś :

string(1) "1" dla var_dump($identyfikator);

SELECT * FROM harmonogram WHERE key=1; dla echo $query;
djkret
Cytat
http://127.0.0.1/~html/index.php?strona=in...identyfikator=2
(...)
to jest zmienna $_POST[identyfikator],


Jeżeli pobierasz zmienną z adresu to musi to być przez $_GET, $_POST służy do pobierania zmiennych z wysłanego formularza, a $_GET do zmiennych pobieranych z adresu URL. Sprawdź czy po przypisaniu zmiennej z adresu $identyfikator ma przypisaną właśnie tą zmienną. Dla przykładu powyżej byłoby to 2 i zobacz jaki typ otrzymuje ta zmienna, jeśli będzie to string to to wysypuje zapytanie do bazy.
dudziec
no to zrobiłem tak :
  1. <?
  2. include "bazapolaczenie.php";
  3. $klucz = (int) $_GET["identyfikator"];
  4. $query = "SELECT * FROM `harmonogram` where 'key'='$klucz' ";
  5. $wynik = mysql_query ($query);
  6. while($rzad = mysql_fetch_array($wynik)) {
  7. echo '<b>data szkolenia:</b> '.$rzad['data'].'<br><b>Temat : </b> '.$rzad['tytul'].'<br><b>miejsce :</b> '.$rzad['miejsce'].'<br><hr>';
  8. ?>



i dalej bład:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\html\informacje.php on line 29

przyczepia sie : while($rzad = mysql_fetch_array($wynik)) { ...
djkret
Zobacz jaki błąd generuje zapytanie bo to właśnie jego się tyczy.
Jeśli chcesz przypisywać zmienną to zrób to przez:
  1. <?php
  2. $klucz = floatval($_GET['identyfikator']);
  3. ?>


Ponieważ u siebie przypisywałeś ją jako integer a nie double.

Proponuje też przetestować takie zapytanie:
  1. $query = "SELECT * FROM harmonogram where key=$klucz";


Myśle ze teraz będzie ok.
valhard
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM 'harmonogram' where klucz=".$identyfikator." ');
  3. ?>


tylko przy $identyfikator ma być tylko " bez ukośnika
dudziec
Cytat(valhard @ 24.04.2007, 11:32:52 ) *
tylko przy $identyfikator ma być tylko " bez ukośnika


a gdzie szukać tego ukośnika?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif

no ja juz niewiem wyskakuje bład ten sam sad.gif juz neimam poprostu pomysłu
djkret
Zrób coś takiego:
  1. <?php
  2. $wynik = mysql_query ($query) or die(mysql_error());
  3. ?>

Zobaczysz jak błąd zwraca baza danych, wtedy będzie wiadomo gdzie go szukać.
valhard
sorki za zamieszanie, weź tak:
  1. <?php
  2. $identyfikator = $_GET["identyfikator"];
  3. $wynik = mysql_query("SELECT * FROM 'harmonogram' where klucz=".$identyfikator);
  4. ?>
dudziec
Cytat(djkret @ 24.04.2007, 11:57:19 ) *
Zrób coś takiego:
  1. <?php
  2. $wynik = mysql_query ($query) or die(mysql_error());
  3. ?>

Zobaczysz jak błąd zwraca baza danych, wtedy będzie wiadomo gdzie go szukać.


Wyskoczyło mi ytakie coś :

Something is wrong in your syntax obok ''harmonogram' where klucz=1' w linii 1

a dałem:
  1. <?php
  2. $query = "SELECT * FROM 'harmonogram' where klucz=".$identyfikator;
  3. $wynik = mysql_query ($query) or die(mysql_error());
  4. ?>
djkret
Wyrzuć z zapytania apostrofy, którymi oznaczyłeś słowo harmonogram i zrób kolumnę key jako integer. Nie ma większego sensu aby była double skoro jest auto_increment. Powinno pomóc.

Jak wrócę do domu to przetestuję Twoje zapytanie na bazie i wtedy dokładnie napisze co jest nie tak. Teraz to są moje przypuszczenia.

------------------------------------------------------------------------------------


Wyjaśnienie Twojego problemu tkwi w klauzuli where. Otóż zmień nazwę pola key na inną ponieważ gdy wpisujesz w zapytaniu key to baza danych rozumie to jako klucz oraz to że chcesz przeprowadzać operacje na wartościach kluczy.
Identycznie sprawa się ma wartości double i auto_increment. Takie powiązanie nie istnieje. Wartości auto_increment może mieć jedynie pole integer.
Także rozwiązanie Twojego problemu tkwi w niewłaściwie stworzonej bazie. Jeśli pozmieniasz tak jak pisałem to będzie działało bez problemu, sprawdziłem na własnej bazie.
Sedziwoj
nazwy tabel i kolumn (pól) umieszcza się w ` a nie '. Te drugie oznaczają string.
  1. <?php
  2. $query = 'SELECT * FROM `harmonogram` WHERE `klucz`='.$identyfikator;
  3. ?>

oczywiście trzeba aby $identyfikator miała jakąś wartość, tylko że to już nie ten dział forum.
dudziec
wiec zrobiłem tak :

1. nazwe key nazwałem kluczyk
2. wybrałem int - int(11)
3. dałem kod:

  1. <?
  2. include "polaczenie.php";
  3. $klucz = (int) $_GET["identyfikator"];
  4. $query = "SELECT * FROM `harmonogram` where 'kluczyk'=$klucz ";
  5. $wynik = mysql_query ($query);
  6. while($rzad = mysql_fetch_array($wynik)) {
  7. echo '<b>data szkolenia:</b> '.$rzad['data'].'<br><b>Temat : </b> '.$rzad['tytul'].'<br><b>miejsce :</b> '.$rzad['miejsce'].'<br><hr>';
  8.  }
  9. ?>


i nie działa :-(
nospor
blinksmiley.gif Mowiono ci przeciez, ze nazwy pol i tabel nie daje sie w ' exclamation.gif!
pozatym wogole nie wziales sobie do serca porad i debugowania, choc z drugie strony ci sie nie dziwie bo ten topic i porady takie chaotyczne i bledne momentami...

  1. <?php
  2. //....
  3. $query = "SELECT * FROM `harmonogram` where kluczyk=$klucz ";
  4. $wynik = mysql_query ($query) or die ('zapytanie: '.$query.'----blad: '.mysql_error());
  5. //....
  6. ?>


ps: przenosze na wlasciwe miejsce
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.