Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] błąd w zapytaniu
Forum PHP.pl > Forum > Przedszkole
dzięcioł
Cześć, chciałem zapytać gdzie zrobiłem błąd. Zrobiłem sobie formularz a w nim parę prostych danych +jeśli użytkownik chce może dodać swoje zdjęcie. Z tym że dodanie jakiejś grafiki(zdjecia) nie jest wymagane. W sprawdzeniu mam:
  1. <?php
  2. if(isset($_FILES['zdjecie']) AND $_POST['status'] == '') {
  3.  
  4. $status=0;
  5. include("user.php");
  6. include("mysql_connect.php");
  7.  
  8. $fhandle = fopen($_FILES['zdjecie']['tmp_name'], "r");
  9. $content = base64_encode(fread($fhandle, $_FILES['zdjecie']['size']));
  10. fclose($fhandle);
  11.  
  12. $zapytanie= mysql_query ("INSERT INTO $mysql_tabela (user,kategoria,data_dodania,zdjecie,status) VALUES ('$user','$kategoria', NOW(),'$content','00')") or 
  13. die ("Błąd w zapytaniu !");
  14.  
  15. echo"Dziękujemy za skorzystanie z naszego serwisu. ";
  16.  
  17. } else if(!isset($_FILES['zdjecie']) AND $_POST['status'] == '') {
  18.  
  19. include("user.php");
  20. include("mysql_connect.php");
  21.  
  22. $zapytanie= mysql_query ("INSERT INTO $mysql_tabela (user,kategoria,data_dodania,zdjecie,status) VALUES ('$user','$kategoria', NOW(),'0','00')") or 
  23. die ("Błąd w zapytaniu !");
  24.  
  25. echo"Dziękujemy za skorzystanie z naszego serwisu. ";
  26. ?>


Problem w tym, że jak nie dodam zdjęcia to wywala błąd:
  1. Warning: fread(): supplied argument IS NOT a valid stream resource IN ..../dodaj_cos_wykonaj.php ON line 325
  2. Warning: fread(): supplied argument IS NOT a valid stream resource IN ..../dodaj_cos_wykonaj.php ON line 326


a przecież jak nie ma zdjęcia powinno wykonać 2 pętle, coś sknociłem?
JaRoPHP
Poczytaj, jaka jest różnica pomiędzy funkcjami:
- isset" title="Zobacz w manualu PHP" target="_manual,
- empty" title="Zobacz w manualu PHP" target="_manual.
I zobacz, jak to działa w przypadku przesyłanie formularza.
dzięcioł
dzięki JaRoPHP działa winksmiley.jpg

chciałem jeszcze zapytać o wyświetlanie grafiki z bazy, zapisuje ładnie ale nie moge już jej wyświetlić, zrobiłem tak:

zapis:
  1. <?php
  2. if(!empty($_FILES['zdjecie']['size']) AND $_POST['status'] == '') {
  3. $status = 00;
  4. include("user.php");
  5. include("mysql_connect.php");
  6. $fhandle = fopen($_FILES['zdjecie']['tmp_name'], "r");
  7. $content = base64_encode(fread($fhandle, $_FILES['zdjecie']['size']));
  8. fclose($fhandle);
  9. $zapytanie= mysql_query ("INSERT INTO $mysql_tabela (user,kategoria,data_dodania,zdjecie,status) VALUES ('$user','$kategoria', NOW(),'$content','00')") or 
  10. die ("Błąd w zapytaniu !");
  11. echo"Dziękujemy za skorzystanie z naszego serwisu. ";
  12. ?>


wyświetlanie:
  1. <?php
  2. header("Content-type: image/jpg;");
  3. $zapytanie = mysql_query(sprintf("SELECT zdjecie FROM $mysql_tabela WHERE user='$user' AND status=00 "));
  4. if (mysql_num_rows($zapytanie) != 0) {
  5. $row = mysql_fetch_assoc($zapytanie);
  6. echo base64_decode($row['zdjecie']);
  7. }
  8. ?>


i nic mi się nie wyświetla ... ktoś widzi błąd?
marcio
po co ci sprintf() w zapytaniu bo z tego co widze to go nawet nie wykorzystujesz ale moge sie mylic

a po drugie powinienes uzyc while do wyswietlania danych z bazy

i czemu do mysql_close() nie dajesz argumentu???Nie wiem moze to jest nie istotne ale jednak
JaRoPHP
- zmienna $status ma być stringiem? Jak tak, to powinno być $status = '00', jak nie, to zapis $status = 00 jest bez sensu smile.gif,
- zastanów się, czy rzeczywiście jest sens przechowywać obrazki w bazie, czy nie lepszym rozwiązaniem jest utworzenie katalogu z obrazkami, a w bazie przechowywać tylko nazwę danego pliku?,
- funkcja sprintf" title="Zobacz w manualu PHP" target="_manual jest użyta całkowicie niepotrzebnie i błędnie - zobacz dokumentację,
- funkcja mysql_close" title="Zobacz w manualu PHP" target="_manual wymaga argumentu,
- jak wykonujesz zapytania, to sprawdzaj je:
  1. <?php
  2. $zapytanie = "SELECT zdjecie FROM $mysql_tabela WHERE user='$user' AND status=00";
  3. echo $zapytanie; // wprowadź np. do phpmyadmin i zobacz, czy sie wykona (zakładam (pewny jestem), że jest błąd)
  4. $query = mysql_query($zapytanie) or die(mysql_error());
  5. ?>
dzięcioł
Hej, no więc tak:
po wykonaniu zapytania:
  1. <?php
  2. header("Content-type: image/jpg;");
  3. $zapytanie1 = "SELECT zdjecie FROM $mysql_tabela WHERE user='".$_SESSION["user"]."' AND id_ogloszenia='$id_ogloszenia'";
  4. echo $zapytanie1;
  5. $query = mysql_query($zapytanie1) or die(mysql_error());
  6. ?>

wyświetla mi wynik:
  1. SELECT zdjecie FROM tabela WHERE user='test' AND id_ogloszenia='2'

nie ma wyniku błędów, natomiast jak dodam:
  1. <?php
  2. if (mysql_num_rows($zapytanie1) != 0) {
  3. $row = mysql_fetch_assoc($zapytanie1);
  4. echo base64_decode($row['zdjecie']);
  5. }
  6. ?>

wyskakuje błąd:
  1. Warning: mysql_num_rows(): supplied argument IS NOT a valid MySQL result resource IN /home/.../pokaz_ogloszenia.php ON line 402

jestem troszku niekumaty wiec korzystałem z gotowego skryptu (link) ale chciałem go przerobić pod moja tabele, co jeszcze poknociłem
JaRoPHP
Jeżeli wprowadzasz zmienną $query, to NIE:
  1. <?php
  2. if (mysql_num_rows($zapytanie1) != 0) {
  3. $row = mysql_fetch_assoc($zapytanie1);
  4. //...
  5. }
  6. ?>

A:
  1. <?php
  2. if (mysql_num_rows($query) != 0) {
  3. $row = mysql_fetch_assoc($query);
  4. //...
  5. }
  6. ?>
dzięcioł
ok teraz juz nie wyswietla bledu, tylko nadal nie wyswietla zdjecia, a jak mam na poczatku:
  1. <?php
  2. header("Content-type: image/jpg;");
  3. ?>

to otwiera mi się okno i pokazuje pobieranie pliku no i opcje otworz, pobierz ...
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.