Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mam problem
Forum PHP.pl > Forum > Bazy danych > MySQL
Emte
Czesc jestem tu nowy i mam problem ze strona php. W ogole to jest wersja php3. Otoz wyswietla mi sie blad:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/accounts_e/emte/public_html/php/dataout.php3 on line 13

Tak wyglada kod strony (sluzy do pokazywania wpisow do ksiegi gosci)
Kod
<html>
<head>
    <title>ksiega</title>
</head>

<body bgcolor="#ffffff">
<table border="1" width="100%" style="border-collapse:collapse" bordercolor="#BE7A27">
<?php
$db = mysql_connect("localhost", "emte", "*****");
mysql_select_db("ksiega", $db);
$sql = "select * from ksiega";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result))
{
    print("<tr><td width=\"20%\" bgcolor=\"#D1A978\">");
    printf("<b>%s</b>\n",
    $row["wpisimie"]);
    printf("<a href=\"mailto:%s\">%s</a>\n",
    $row["wpismail"]);
    printf("<a href=\"%s\" target=\"_blank\">%s</a>\n",
    $row["wpissite"]);
    printf("%s</td>\n",
    $row["data"]);
    printf("<td width=\"80%\">%s</td></tr>\n",
    $row["tekst"]);
}
?>
</table>
</body>
</html>


Co ja zrobilem zle?? Pomozcie sad.gif Jestem poczatkujacy w jezyku php, wiec prosze abyscie mi dokladnie opisali co mam zrobic...
sf
Brak rezultatów, coś jest nie tak. Spróbuj wypisać echo mysql_error(); po query. Sprawdź czy jest połączenie w ogóle. Na stronie php.net są przykłady jak powinna wyglądać obsługa błędów (patrz na kolejne funkcje). Skoro zaczynasz to staraj się robić wszędzie warunki if czy wszystko jest ok smile.gif
Vertical
To znaczy, że nazwa tabeli jest identyczna z nazwą bazy, a w niektórych wersjach MySQL to może powodować błąd
Ive
po prostu wejdz do phpmyadmin, wejdz w swoja baze jesli jeszcze tam nie jestes ;] dalej zakladka SQL i tam w pole textarea wstaw to zapytanie "select * from ksiega" i ci powinnien phpmyadmin sam wyrzucic błedy troszke bardziej zrozumiale ;]
Emte
Cytat(Ive @ 2005-01-04 16:05:42)
po prostu wejdz do phpmyadmin, wejdz w swoja baze jesli jeszcze tam nie jestes ;] dalej zakladka SQL i tam w pole textarea wstaw to zapytanie "select * from ksiega" i ci powinnien phpmyadmin sam wyrzucic błedy troszke bardziej zrozumiale ;]

zadnych bledow nie wykazal... :|
Ive
hm... a wejdz do phpmyadmin > baza > tabela > Przegladanie i gory masz gotowe zapytanie sql sprobuj je wkleic do tego twojego kodu wywalajac z niego tylko LIMIT 0,30 [no chyba ze chcesz zeby ci tylko 30 wpisow pokazywal ;]]
Emte
no dobrze wszystko jest ok, poprawilem bledy... tylko, gdy dodaje wpis do ksiegi za pomoca strony php, to data i godzina mi sie nie pojawiaja tylko 0000-00-00 i 00:00... co mam zrobic? mam cos dopisac w skrypcie strony, ktory jest powyzej? ( chcialem dodac ze do skyptu dodalem zmienna "czas" [typ MySQL tabeli: time]).
Ive
jak robisz zapytanie INSERT to w pole data dajesz now() i powinno byc dobrze
Emte
Cytat(Ive @ 2005-01-06 18:10:11)
jak robisz zapytanie INSERT to w pole data dajesz now() i powinno byc dobrze

moglbys zapodac skryptem, bo nie wiem, czy dobrze zrozumialem o co Ci chodzi

btw, sorry ze tak wszystkich mecze, ale dopiero sie ucze...
Wieviór
daj takie zapytanie:

$sql = 'SELECT * FROM 'ksiega'';
// Tam po prawej są dwa apostroy a nie cudzysłów.
Emte
@Wieviór: po Twojej propozycji mam blad
Parse error: parse error, unexpected T_STRING in /home/accounts_e/emte/public_html/php/dataout.php3 on line 11
Vertical
@Wieviór: Powinno być:
  1. <?php
  2. $sql = &#092;"SELECT * FROM 'ksiega'\";
  3. ?>
Emte
po waszych propozycjach zaczely mi sie same dziwne bledy pokazywac...
dataout.php3 - pobiera dane z bazy (zaktualizowany)
  1. <html>
  2. <head>
  3. <title>ksiega</title>
  4. </head>
  5.  
  6. <body bgcolor=\"#ffffff\">
  7. <table border=\"1\" width=\"100%\" style=\"border-collapse:collapse\" bordercolor=\"#BE7A27\">
  8. <?php
  9. $db = mysql_connect(&#092;"localhost\", \"emte\", \"******\");
  10. mysql_select_db(&#092;"emte\", $db);
  11. $sql = &#092;"SELECT * FROM 'ksiega'\";
  12. $result = mysql_query($sql);
  13. while($row=mysql_fetch_array($result))
  14. {
  15. echo &#092;" <tr>
  16. <td width=&#092;"18%\">\".$row['wpisimie'].\"</td>
  17. <td width=&#092;"18%\">\".$row['wpismail'].\"</td>
  18. <td width=&#092;"18%\">\".$row['tekst'].\"</td>
  19. <td width=&#092;"18%\">\".$row['wpissite'].\"</td>
  20. <td width=&#092;"18%\">\".$row['data'].\"</td>
  21. <td width=&#092;"18%\">\".$row['czas'].\"</td>
  22. </tr>&#092;";
  23. }
  24. ?>
  25. </table>
  26. </body>
  27. </html>


nastepujacy blad:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/accounts_e/emte/public_html/php/dataout.php3 on line 13

(to chyba znow ten sam... :| )
Ociu
Spróbuj tak:
  1. <html>
  2. <head>
  3. <title>ksiega</title>
  4. </head>
  5.  
  6. <body bgcolor=\"#ffffff\">
  7. <table border=\"1\" width=\"100%\" style=\"border-collapse:collapse\" bordercolor=\"#BE7A27\">
  8. <?php
  9. mysql_connect(&#092;"localhost\", \"emte\", \"******\");
  10. mysql_select_db(&#092;"emte\");
  11. $sql = mysql_query(&#092;"SELECT * FROM ksiega\");
  12. while($row=mysql_fetch_array($sql))
  13. {
  14. echo &#092;" <tr>
  15. <td width=&#092;"18%\">\".$row['wpisimie'].\"</td>
  16. <td width=&#092;"18%\">\".$row['wpismail'].\"</td>
  17. <td width=&#092;"18%\">\".$row['tekst'].\"</td>
  18. <td width=&#092;"18%\">\".$row['wpissite'].\"</td>
  19. <td width=&#092;"18%\">\".$row['data'].\"</td>
  20. <td width=&#092;"18%\">\".$row['czas'].\"</td>
  21. </tr>&#092;";
  22. }
  23. ?>
  24. </table>
  25. </body>
  26. </html>
Emte
no dziala, tylko nadal mi nie wyjasniliscie jak zrobic, zeby data i czas sie ukazyaly, zamiast 0000-00-00 i 00:00
Ociu
  1. <?php
  2. # tu poptrzedni kod
  3. date('d-m-Y', $row['data']);
  4. ?>


Chyba... jeśli nie to problem jest w zapisywaniu danych.
Emte
sorry, nie sprecyzowalem swojego problemu... po prostu po wpisie na stronie php ( http://www.emte.boo.pl/php/datain.php3 ) swoich danych, dataout.php3 pokazuje kto sie wpisal itd, ale nie pokazuje daty i czasu prawdziwego tylko 0000-00-00 i 00:00... gdzie zrobilem blad? -> http://www.emte.boo.pl/php/dataout.php3 <- 9nie liczac tego pierwszego, bo ten dodalem za pomoca PHPMyAdmin)
hmmm
moze zle wysylasz dane?
jezeli chcesz wyswietlic dane w postaci rrrr-mm-dd hh:mm:ss to najlepiej jest utworzyc w bazie kolumne, np. data i nadac jej typ DATETIME
  1. ALTER TABLE nazwatabeli ADD COLUMN DATA DATETIME NOT NULL;


ale potem, przy wysylaniu danych do bazy, musisz jeszcze uwzglednic nowa kolumne i dodawac do niej rekordy. samo dodawanie do kolumny data wyglada tak:
  1. INSERT
  2. INTO nazwatabeli (DATA) VALUES (NOW());


mam nadzieje, ze o to chodzi ...
Ive
dodawanie wpisow do bazy chyba masz w datain.php3 z tego co wywniskowałem i tera zeby dodac wpisów uzywasz zapytania:
  1. INSERT
  2. INTO `ksiega` (pole1,pole2)
  3. VALUES ('pole1','pole2')

no i tera masz tam pewnie pole nazwane 'data' ['date', etc...] w ktorym przechowujesz date dodania wpisu
czyli zapytanie INSERT powinno wygladać tak:
  1. INSERT
  2. INTO `ksiega` (pole1,DATA,pole2) VALUES ('pole1',now(),'pole2')

i to ci powinno poprawnie zapisac date do bazy
Emte
dziala, wilkie dzieki... dla was wszystkich wileki calus :* tongue.gif:P:P:P
(albo piwo, jak kto woli smile.gifsmile.gifsmile.gifsmile.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.