Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z fread();
Forum PHP.pl > Forum > Przedszkole
murdock
czesc all

mam taki kod

  1. <?php
  2. $fhandle = fopen($HTTP_POST_FILES['zdjecie']['tmp_name'], "r");
  3. $content = addslashes(fread($fhandle, $HTTP_POST_FILES ['zdjecie']['size']));
  4.  
  5.  
  6. fclose($fhandle);
  7. ?>


i wyskakuja mi 2 ostrzezenia :

Warning: fread(): supplied argument is not a valid stream resource in ...
Warning: fclose(): supplied argument is not a valid stream resource in ...

Jak sie moge ich pozbyc questionmark.gif oczywiscie zdjecie jest typu bloob i wczytywane jest z formularza z bazy danych

----------------------
do wstawiania kodu php służy odpowiedni
tag.
---
~strife
devnul
coś chyba pomieszałeś - fopen słuzy do otwierania plików zapisanych na dysku a z tego co widac to odwołujesz się do plikó które nie istnieją - z tąd te błędy
murdock
robilem tak samo jak w tym artykule i nie dziala "przyklad "
rojmarek
Cytat(murdock @ 8.04.2007, 07:16:26 ) *
robilem tak samo jak w tym artykule i nie dziala "przyklad "

nie powinno sie trzymac zdjęć w bazie... to przeczy założeniom bazy...
devnul
Cytat
nie powinno sie trzymac zdjęć w bazie... to przeczy założeniom bazy...
że co prosze? jakie założenia bazy mówiąt o tym że plików /zdjęc i w niej trzymać nie wolno? kolega poprostu źle podchodzi do ich wyświetlania. bo jeśli trzyma je w bazie to wystarczy pobrać dane z bazy do zmiennej wypluć odpowiedni nagłowek (content-type:image/jpeg - albo inny w zależności od formatu zdjęcia) i wypluć zawartość zmiennej przez echo - ew zapisac do pliku - ale wtedy to faktycznie mija sie z celem

/edit:
@murdock: zapoznałęm sie z przykłądem podamym przez Ciebie i stwierdzam ze nie umiesz opisać problemu ty chcesz zdjęcie zapisac do bazy a nie je z tamtąd odczytać jak mniemam - przykład jest podany bardzo fajnie z wyjasnieniem wszystkiego także nie wiem w czym problem - robisz cos nie tak albo wprowadziłeś jakies modyfikacji - prawdopodobnie nie wysyłasz pliku albo masz źle ustawione parametry formularza - pamiętaj że powinno być to tak (zawsze):
  1. <FORM ACTION="upload.php" METHOD="POST" ENCTYPE="multipart/form-data">

zmienić tu się może tylko pole action - jeśli wszystko zrobiłeś jak w opisanym przykładzie to nie powinieneś mieć problemu ( o ile oczywiscie wysyłasz jakiś plik przez formularz na stronie)
murdock
@devnul : zrobilem to jeszcze raz i dodawanie juz dziala , nie mam pojecia czemu mi wczesniej nie chodzilo sad.gif , jeszce mam jedno pytanie : jak nie dodam zdjecia w formularzu to wyskakuja mi te same bledy o ktorych mowa wczesniej , jest moze jakas funkcja sprawdzajaca czy dodano zdjecie questionmark.gif np jak chce sprawdzic czy wpisano imie to robie tak :

Kod
global $database, $form;
         /* sprawdzamy imie */
         $field = "imie";
         if(!eregi ("^(A-za-z])+$",$subimie)){$form->setError($field, "* To nie jest litera");}
         if(!$subimie || strlen($subimie = trim($subimie)) == 0){
         $form->setError($field, "* Nie podano imienia");


oczywiscie to jest czesc kodu podanego jako przyklad.
devnul
  1. <?php
  2. if ($HTTP_POST_FILES['zdjecie']['error']==0){
  3. //wgrano zdjęcie
  4. } else {
  5. //cośnie tak
  6. }
  7. ?>


możesz też poprostu sprawdzać czy plik istnieje
murdock
ja pierd... znowu mam te komunikaty ale pojawiaja sie wtedy jak nie wybiore zdjecia w polu input "file". Wszystko sie dodaje do bazy wiec problem jest tylko z tymi komunikatami . Chce sei tego pozbyc bo jak robie obluge bledow i nie dodam wlasnie zdjecia to wystakuja mi te bledy co jest bardzo wkurzajace, podam kod jak to robilem bo nie mam pojecia co jest zle :

tworze sobie baze danych :

Kod
CREATE TABLE zaklady (
id int(2) NOT NULL,
nazwa_zakladu char (100) NOT NULL,
imie char (100) NOT NULL,
stanowisko char (100) NOT NULL,
zdjecie BLOB,
PRIMARY KEY(id)

);


tworze sobie formularz :


<?php
<FORM ACTION="upload.php" METHOD="POST" ENCTYPE="multipart/form-data">
Id:<br>
<INPUT TYPE="text" NAME="id" maxlength="60"><br>
Nazwa_zakladu:<br>
<INPUT TYPE="text" NAME="nazwa_zakladu" maxlength="60"><br>
Imie:<br>
<INPUT TYPE="text" NAME="imie" maxlength="60">
Stanowisko:<br>
<INPUT TYPE="text" NAME="stanowisko" maxlength="60"><br>
Zdjęcie:<br>
<INPUT TYPE="file" NAME="zdjecie" maxlength="60"><br>
<input type="hidden" name="subzaklady" value="1">
<input type="submit"  value="Dodaj zaklady">
</form>
?>


plik upload.php



<?php


include("include/session.php");


$fhandle = fopen($HTTP_POST_FILES['zdjecie']['tmp_name'], "rb");
$content = addslashes(fread($fhandle, $HTTP_POST_FILES['zdjecie']['size']));
fclose($fhandle);

     if(isset($_POST['subzaklady']))
     {   dodajz();
     }

     function dodajz()
     {
         global $form;
          
         $retval = dodajzaklaady($_POST['id'], $_POST['nazwa_zakladu'],$_POST['imie'],$_POST['stanowisko'],$content);     //pobieramy dane z formularza za pomoca POST

            /* dodano */
         if($retval == 0){
         header("Location: adminzaklady.php");
         }
         /* blad przy wpisie */
         else if($retval == 1){                                   //tablica sesji przechowujacej wartosci
         $_SESSION['value_array'] = $_POST;
         $_SESSION['error_array'] = $form->getErrorArray();
         header("Location: adminzaklady.php?page=add");  //tablica sesji przechowujacej bledy

         }
     }




     function dodajzaklaady($subid, $subnazwa,$subimie,$substanowisko,$content)
     {
         global $database, $form;
         /* sprawdzamy tytul */
         $field = "imie";
         if(!eregi ("^(A-za-z])+$",$subimie)){$form->setError($field, "* To nie jest litera");}
         if(!$subimie || strlen($subimie = trim($subimie)) == 0){
         $form->setError($field, "* Nie podano imienia");
          }
                          
      if($form->num_errors > 0) {
         return 1;
      }  else {
         $q ="insert into zaklady ( id,nazwa_zakladu,imie ,stanowisko,zdjecie ) values('$subid','$subnazwa','$subimie','$substanowisko','$content')";
         $zapytanie =  mysql_query($q);

         return 0;  // ok
         }

    }






?>
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.