Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wrzut zdjęc + info do bazy, nie działa, ale co?
Forum PHP.pl > Forum > PHP
zaaap
Witam,
Pisze sobie maly skrypcik i natrafilem na problem. Opieram sie na skrypcie podanym w jednej z ksiazek do php/mysql. Problemem jest fakt, iz chce wrzucic zdjecie. Bedzie ono skalowane "w locie" aby na roznych stronach mogl byc wyswietlane w roznych rozmiarach. Po rzekomym zaladowaniu newsa ze zdjeciem z dysku nie wyskakuje zaden blad. NAWET jesli bede chcial wrzucic .exe, .pdf czy cokolwiek innego nie ma zadnego bledu.

  1. <?php
  2. if ( (isset($_FILES['image']['name']) &&
  3.      is_uploaded_file($_FILES['image']['tmp_name'])))
  4. {
  5.  
  6.  if (!isset($_REQUEST['artykul']) || $_REQUEST['artykul'] == '')
  7.  {
  8.    $artykul = mysqli_insert_id($lacz);
  9.  }
  10.  $typ = basename($_FILES['image']['type']);
  11.  
  12.  switch ($typ) {
  13.    case 'jpeg':
  14.    case 'pjpeg':   $nazwapliku = "obrazki/$artykul.jpg";
  15.                    move_uploaded_file($_FILES['image']['tmp_name'], '../'.$nazwapliku);
  16.                    $sql = "update artykuly
  17.                            set obrazek = '$nazwapliku'
  18.                            where id = $artykul";
  19.                    $wynik = $lacz->query($sql);
  20.                    break;
  21.    default:        echo 'Nieprawidłowy format obrazka: '.
  22.                          $_FILES['image']['type'];
  23.  }
  24. }
  25. ?>


Jakies pomysly? Dodam, ze dla pewnosci wszystko ma CHMOD 777. Jeszcze sa 2 pliki, ktore maja jakis udzial w calym skrypcie powiazane obrazkiem ale narazie wklejam tylko ten fragment, jako, ze nawet nie ma bledu typu pliku, wiec stawiam, ze cos tu jest nie tak.
Darti
dopisz sobie do tego :
  1. <?php
  2. else {
  3. echo 'nie działa bo $_FILES['image']['name'] zawiera '.$_FILES['image']['name'];
  4. }
  5. ?>
zaaap
Wyglada na to, ze
  1. <?php
  2. $_FILES['image']['name']
  3. ?>
jest pusta, tyle, ze jesli usune break; na dole, to pokazuje default ze switcha, czyli mimo ze zmienna jest pusta to jednak wynik if() jest spełniany i petla jest wykonywana. O co tu chodzi?
pinochet
to znaczy ze masz zły/nieadekwatny formularz HTML (daj kod)
zaaap
  1. <?php
  2.  
  3. include ('funkcje_dolacz.php');
  4.  
  5. if (isset($_REQUEST['artykul']))
  6.  $a = pobierz_rekord_artykulu($_REQUEST['artykul']);
  7.  
  8. ?>
  9.  
  10. <form action="artykul_wyslij.php" method="post" enctype="multipart/form-data">
  11. <input type="hidden" name="artykul" value="<?php print $_REQUEST['artykul'];?>">
  12. <input type="hidden" name="przeznaczenie"
  13. value="<?php print $_SERVER['HTTP_REFERER'];?>">
  14. <table>
  15.  
  16. <tr>
  17.  <td>Nagłówek<td>
  18. </tr>
  19. <tr>
  20.  <td><input size="80" name="naglowek"
  21.              value="<?php print $a['naglowek'];?>"></td>
  22. </tr>
  23.  
  24. <tr>
  25.  <td>Strona</td>
  26. </tr>
  27. <tr>
  28.  <td>
  29. <?php
  30.  if (isset($_REQUEST['artykul']))
  31.  {
  32.    $sql = "select s.kod, s.opis
  33.            from strony s, uprawnienia_autora ua, artykuly a
  34.            where s.kod = ua.strona and
  35.            ua.autor = a.autor and
  36.            a.id = ".$_REQUEST['artykul'];
  37.  }
  38.  else
  39.  {
  40.    $sql = "select s.kod, s.opis
  41.            from strony s, uprawnienia_autora ua
  42.            where s.kod = ua.strona and
  43.            ua.autor = '{$_SESSION['uwierz_uzyt']}'";
  44.  }
  45.  echo zapytanie_select('strona', $sql, $a['strona']);
  46. ?>
  47.  </td>
  48. </tr>
  49.  
  50. <tr>
  51.  <td> Tekst artykułu (może zawierać znaczniki HTML) </td>
  52. </tr>
  53. <tr>
  54.  <td><textarea cols="80" rows="7" name="tekst_artykulu"
  55.           wrap="virtual"><?php echo $a['tekst_artykulu'];?></textarea>
  56.  </td>
  57. </tr>
  58.  
  59. <tr>
  60.  <td> Lub wysłanie pliku HTML </td>
  61. </tr>
  62. <tr>
  63.  <td><input type="file" name="html" size="40"></td>
  64. </tr>
  65.  
  66. <tr>
  67.  <td>Obrazek</td>
  68. </tr>
  69. <tr>
  70.  <td><input type="file" name="obrazek" size="40"></td>
  71. </tr>
  72.  
  73. <?php
  74. if ($a[obrazek]) {
  75.  $rozmiar   = GetImageSize('../'.$a['obrazek']);
  76.  $szerokosc = $rozmiar[0];
  77.  $wysokosc  = $rozmiar[1];
  78. ?>
  79. <tr>
  80.  <td>
  81.    <img src="<?php echo '../'.$a['obrazek'];?>"
  82.          width="<?php print $szerokosc;?>" height="<?php print $wysokosc;?>">
  83.  </td>
  84. </tr>
  85. <?php
  86.  }
  87. ?>
  88.  
  89. <tr>
  90.  <td align="center"><input type="submit" value="Wysłanie"></td>
  91. </tr>
  92.  
  93. </table>
  94. </form>
pinochet
Cytat(zaaap @ 13.11.2008, 20:24:13 ) *
  1. <?php
  2. <input type="file" name="obrazek" size="40">
  3. ?>


a w kodzie php odwołujesz sie do image :] wbrew pozorów image to nie obrazek biggrin.gif
zaaap
Boze, no dziala, wielkie dzieki. Najglupsze bledy a tyle problemow. Jeszcze raz THX biggrin.gif

Aha i jeszcze jedno, da sie to jakos obejsc? (po wprowadzeniu zlego typu pliku)

Kod
Nieprawidłowy format obrazka: application/vnd.ms-excel
Warning: Cannot modify header information - headers already sent by (output started at /home/zaaap/public_html/rozdzial/admin/artykul_wyslij.php:78) in /home/zaaap/public_html/rozdzial/admin/artykul_wyslij.php on line 84


Tzn wiem, ze przed header nie moze byc zadnego tekstu, to moze wogole wywalic te echo?
zaaap
OK. Nie chce zakladac nowego tematu, skoro sprawa dotyczny tego samego skryptu.
Wszystko pieknie ladnie, ale w folderze obrazki, za kazdym razem gdy wrzucam plik ma on nazwe: $artykul.jpg
Czyli wszystkie nowe newsy maja te same zdjecie, nie chce zapisac kazdej oddzielnie. Podejrzewam, ze moze byc jakis problem w tym miejscu:

Kod
$nazwapliku = 'obrazki/$artykul.jpg';


Albo ktos ma inny pomysl? Bo z tego co sie orientuje nazwa pliku ma byc roznoznaczna z nazwa wiadomosci(newsa)
Darti
  1. <?php
  2. $nazwapliku = "obrazki/$artykul.jpg";
  3. ?>


p.s. zwróć uwagę na cudzysłowia
pinochet
albo:
  1. <?
  2. $nazwapliku = 'obrazki/'.$artykul.'.jpg';
  3. ?>
  4. ?>

@Darti: cudzysłowy a pozatym w twoim kodzie jest jeden cudzysłów
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.