Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie mysql
set4812
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 13.04.2010

Ostrzeżenie: (0%)
-----


Mam zapytanie mysql którym chce pobrac id uzytkownika który jest włascicielem katalogu i porównac z id sesji czy własciwa osoba jest zalogowana
oto mój kod
  1. <?php
  2. function connect(){
  3. $link = mysql_connect('localhost', 'root', '');
  4. $result = mysql_select_db('forum');
  5. }
  6. function raporty(){
  7. $idk=$_GET['idk'];
  8.  
  9. $query= 'SELECT * FROM raporty WHERE idk='.$_GET['idk'].'';
  10. $z=mysql_query($query);
  11. while ($row=mysql_fetch_assoc($z))
  12. {
  13. echo '<div class="NEWST"><center>';
  14.  
  15. echo '<img src="'.$row['link'].'"/>';
  16. echo '</center></div>';
  17. }}
  18. function addraport(){
  19. <form action="index.php?id='.$_GET['id'].'&idk='.$_GET['idk'].'" method="post">Podaj link do raportu</font><input type="text" name="raport" size="15"><br/>
  20. <input type="submit" value="Wyślij" name="wyslij" ></form>';
  21. if(isset ($_POST['wyslij'])){
  22. $patterns = '#\/report/#';
  23. $replacements = '/report-img/';
  24. $_POST['raport'] = preg_replace($patterns, $replacements, $_POST['raport']);
  25. file_get_contents($_POST['raport']);
  26. $patterns = '#\/report-img/#';
  27. $replacements = '/img/';
  28. $_POST['raport'] = preg_replace($patterns, $replacements, $_POST['raport']);
  29. $_POST['raport']= $_POST['raport'].'.png';
  30. $query= "INSERT INTO raporty (id,idk,link) VALUES ('','".$_GET['idk']."','".$_POST['raport']."')";
  31. mysql_query($query);
  32. }}
  33. function haslo(){
  34. echo 'Chcesz aby raporty mogli obejrzec innie?? wpisz w polu hasło a inni beda mogli obejrzec te raporty po podaniu odpowiedniego linku';
  35. echo '<form action="index.php?id='.$_GET['id'].'&idk='.$_GET['idk'].'" method="post">Hasło</font><input type="text" name="haslo" size="15"><br/>
  36. <input type="submit" value="Wyślij" name="acs" ></form>';
  37. if (isset($_POST['acs'])){
  38. $_POST['acc']= md5($_POST['acc']);
  39. echo $_POST['acc'];
  40. $query= 'UPDATE katalogi SET haslo="'.$_POST['acc'].'" WHERE id='.$_GET['idk'].'';
  41. mysql_query($query);
  42. echo 'twoj link index.php?id=reports&idk='.$_GET['idk'].'&pass='.$_POST['acc'];
  43. }}
  44. if(!isset($_SESSION['id']))
  45. {
  46. // Sesja si꡺aczyna, wiec inicjujemy u࠹tkownika anonimowego
  47. $_SESSION['id'] = 0;
  48. echo 'Zaloguj siꧻ
  49. echo '<html><head><meta http-equiv="refresh" content="3;url=http://localhost/forum/loguj.php"/></head><body></body></html>';
  50. }
  51. if($_SESSION['id']>0 or isset($_GET['pass'])){
  52. connect();
  53. if (isset($_GET['pass'])){
  54. $query='SELECT pass FROM katalogi WHERE id='.$_GET['idk'].'';
  55. $z=mysql_query($query);
  56. $row=mysql_fetch_assoc($z);
  57. if (strcasecmp($_GET['pass'], $row['haslo']) == 0)
  58. raporty();}
  59. else{
  60. raporty();}
  61. }
  62. if ($_SESSION['id']>0){
  63. $query='SELECT * FROM katalogi WHERE id='.$GET_['idk'].'';
  64. $z=mysql_query($query);
  65. $row=mysql_fetch_assoc($z);
  66. echo $row['idu'];
  67. if($row['idu']==$_SESSION['id']){
  68. addraport();
  69. haslo();
  70. }}
  71. ?>

moze zagmotany kod (IMG:style_emoticons/default/tongue.gif) problem jest w 2 miejscach tam gdzie sprawdzam id uzytkownika z katalogiem oraz czy istnieje zmienna pass w tablicy get tez mi wyrzuca ten sam bład o to bład
Cytat
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\raporty\reports.php on line 67

Prosze o pomoc nie mam juz litosci szukania igły w całym
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Temat: Jak poprawnie zadac pytanie -> Wykonywanie zapytań do bazy
Go to the top of the page
+Quote Post
set4812
post
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 13.04.2010

Ostrzeżenie: (0%)
-----


Zapomniałem
  1. BŁĄD:You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near '' at line 1

Niech teraz fachowcy przetłumacza bo nie rozumiem
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




chryste...
$GET_ co to w linii 65? Masz taką zmienną?
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

Ostrzeżenie: (0%)
-----


Raz stosujesz apostrofy raz cudzysłowy np:

$query='SELECT * FROM katalogi WHERE id='.$GET_['idk'].''; -> wywal cudzysłów z końca. jest coś takiego jak $GET_ (IMG:style_emoticons/default/questionmark.gif)

$query= 'SELECT * FROM raporty WHERE idk='.$_GET['idk'].'';-> tutaj znów cudzysłów

EDIT: Jednak to są apostrofy:)

Ten post edytował artur_dziocha 5.07.2010, 10:39:26
Go to the top of the page
+Quote Post
set4812
post
Post #6





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 13.04.2010

Ostrzeżenie: (0%)
-----


nie spałem od 24 godzin (IMG:style_emoticons/default/tongue.gif)
nastepny tez nie rozumiem bardzo,
Cytat
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\raporty\reports.php on line 58
BŁĄD:Unknown column 'pass' in 'field list'


mój adres url gdy jest bład
Kod
http://localhost/raporty/index.php?id=reports&idk=5&pass=d41d8cd98f00b204e9800998ecf8427e


Działa na 2 cudzysłowiach, jak wywale tekst mi notepad przestanie kolorowac to sa 2 ''

Ten post edytował set4812 5.07.2010, 10:47:27
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #7





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

Ostrzeżenie: (0%)
-----


ja się pomyliłem. Zapytanie jest OK, ale nie pobiera Ci danych w lini 56-57. Do mysql_fetch_assoc nie przekazuje żadnych danych. Sprawdź za pomocą mysql_num_rows lub var_dump($z);
Go to the top of the page
+Quote Post
thek
post
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Normalnie wspominają mi się jak żywe serwisy pisane X lat temu przez "fahofcuff" (IMG:style_emoticons/default/winksmiley.jpg)
  1. //funkcje start
  2. funkcja X() {
  3. //kod
  4. }
  5. Funkcja Y() {
  6. //kod
  7. X();
  8. }
  9. //funkcje end
  10. Y();
gdzie porozbijano całą stronę po prostu na bloczki, choć można było to zrobić "ciągiem" i na dodatek jeszcze w tychże funkcjach z powodu takiego podziału używano global dla zmiennych (IMG:style_emoticons/default/winksmiley.jpg) Potem jednej funkcji szukałeś po całym dokumencie bo nie wiedziało się gdzie była wywołana. A Ty masz tak z wszystkimi funkcjami raport, addraporty, haslo. Inna sprawa to popatrz na kolorowanie składni na forum. Krzaki zrąbały składnię, ale i tak nie wiem w liniach 54-63 co jest grane. Klamry są tak pozamykane, że sam nie wiem kiedy się wykonuje raport() jesli chodzi o spełnienie bądź nie określonych warunków.

Sam bug tyczy się byka w linii 65, gdzie masz $query. To zapytanie musi być niepoprawne bo mysql_query zwraca błąd (FALSE w wyniku niemal na 100%! ) i dlatego mysql_fetch_assoc nie potrafi zrobić tego co do niego należy. Bo jak ma wyciągać tablicę asocjacyjną skoro nie dostaje resource'a tylko FALSE do obrobki? Kompletnie olaleś sprawę sprawdzenia co Ci zapytania zwracają i się dziwisz że masz byki? Nie masz nawet tak podstawowego "ujęcia" jak
  1. $zapytanie = 'jakiś sql';
  2. $resource = mysql_query( $sql );
  3. if( $resource ) {
  4. if( mysql_num_rows( $resource ) > 0 ) {
  5. //dopiero tutaj robię co chce z kodem(!)
  6. } else {
  7. echo 'Ja pierdzielę, zapytanie nie ma nawet jednego rekordu pasującego!';
  8. }
  9. } else {
  10. echo 'Ja pierdzielę, błąd! '.mysql_error();
  11. }
To jest minimum jakie powinieneś mieć by cokolwiek o debugu mówić. A błąd jaki dostajesz jest związany z najprawdopodobniej skopaną składnią zapytania na tyle, że parser błędów nawet dobrze nie wie gdzie byk i wskazuje na pusty ciąg w zapytaniu.
Go to the top of the page
+Quote Post
set4812
post
Post #9





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 13.04.2010

Ostrzeżenie: (0%)
-----


Podminiłem zapytanie z wczesniejszego błedu i działa nie wiem jakim cudem dziekuje za pomoc

Thek porozbijałem zeby łatwiej mi było dojsc (IMG:style_emoticons/default/tongue.gif) co do czego, miałem to w ciagu i tez mi działało (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.09.2025 - 12:04