Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodawanie zdjęcia do aktualności
Forum PHP.pl > Forum > Przedszkole
Olsz4k
Witam, stworzyłem sobie możliwość dodawania aktualności do bazy z poziomu przeglądarki.
Chciałem również to rozszerzyć o możliwość dodawania zdjęcia do pojedynczej aktualności, jednak coś mi nie gra.

Mam tabelę news, a w niej:
id,zdjecie,tytul,data,tresc.

Dodawanie aktualności (bez zdjęcia) działa bez zarzutu, jednak gdy dorzuciłem zdjęcie, przechodzi wszystko przez formularz, wyświetla się komunikat o poprawnym dodaniu aktualności, jednak do bazy zawsze dodają się 2 rekordy po naciśnięciu przycisku. Dlaczego się tak robi, to wiem, ponieważ mam zrobione 2 zapytania, ale niestety nie mam pojęcia jak złączyć je w jedno.
Rekord "zdjecie" mam ustawiony na typ mediumblob.

Oto mój kod:

  1.  
  2. <?php
  3. include("../polacz.php");
  4. if(!empty($_SESSION["login"]))
  5. {
  6. $zapytanie="SELECT * From news ORDER BY tytul";
  7. $wykonaj=mysql_query($zapytanie);
  8. ?>
  9. <div class="cms-header">
  10. <h4>Dodawanie nowej aktualności PL</h4>
  11. </div>
  12. <div id="dodaj-aktualnosc">
  13.  
  14. <form action="" method="POST" enctype="multipart/form-data">
  15. <ul>
  16. <li><label>Zdjęcie:</label></li>
  17. <li><input type="file" name="zdjecie" /></li>
  18. <li><label>Tytuł:</label></li>
  19. <li><textarea name="tytul"></textarea></li>
  20. <li><label>Data:</label></li>
  21. <li><textarea name="data"></textarea></li>
  22. <li><label>Treść:</label></li>
  23. <li><textarea id="edytor" name="tresc"></textarea></li>
  24. <li><input class="submit" type="submit" value="Dodaj" name="dodaj"/></li>
  25. </form>
  26. <li><a class="back" href="admin.php"><< Powrót</a></li>
  27.  
  28.  
  29.  
  30. <?php
  31.  
  32.  
  33.  
  34.  
  35. if(isset($_POST['dodaj']))
  36. {
  37.  
  38. $tresc=$_POST['tresc'];
  39. $tytul=$_POST['tytul'];
  40. $data=$_POST['data'];
  41.  
  42. $fhandle = fopen($_FILES['zdjecie']['tmp_name'], "r");
  43. $content = base64_encode(fread($fhandle, $_FILES['zdjecie']['size']));
  44. fclose($fhandle);
  45.  
  46.  
  47. $q=mysql_query("INSERT INTO news SET tytul='$tytul', data='$data', tresc='$tresc'");
  48. $zdjecie = mysql_query("INSERT INTO news (zdjecie) VALUES (\"".$content."\")");
  49.  
  50.  
  51. if($q) echo "<li class='true'>Aktualność została dodana poprawnie!</li>";
  52. else echo "<li class='false'>Błąd! Nie udało się dodać nowej aktualności!</li>";
  53.  
  54. }
  55. }
  56.  
  57.  
  58.  
  59. else
  60. echo "<p class='false'>Aby uzyskać dostęp należy się zalogować!</p>";
  61. ?>
  62. </ul>
  63. </div>
  64.  
  65.  
  66.  


Za wszelką pomoc i wskazówki dziękuję.
memory
Drugie zapytanie musi aktualizować pierwsze. Czyli UPDATE.
To mozna w jednym zapytaniu dać

  1. $q=mysql_query("INSERT INTO news SET tytul='$tytul', data='$data', tresc='$tresc', zdjecie ='$content'");

Olsz4k
Ahh no tak, że też nie wpadłem na to, dzięki!

Teraz mam problem z wyświetleniem tego zdjęcia. Do bazy się już wszystko ładnie dodaje, lecz jak próbuje to wyświetlić w ten sposób:

  1. <?php
  2. include('CMS/polacz.php');
  3.  
  4.  
  5.  
  6. $zapytanie="SELECT * from news WHERE id='207'";
  7. $wykonaj=mysql_query($zapytanie);
  8. while($wiersz=mysql_fetch_array($wykonaj))
  9. {
  10. echo '<div class="naglowek">'.$wiersz['tytul'].'</div><div class="data">'.$wiersz['data'].'</div><div class="added-news">'.$wiersz['tresc']."</div>".$wiersz['zdjecie'];
  11. }
  12.  
  13. ?>


To w miejsce zdjęcia wyskakuje milion linijek krzaczków. Czytałem że trzeba ustawiać jakieś headersy, ale niestety nie ma nigdzie konkretne poradnika jak to zrobić. Czy mógłbym prosić jeszcze o pomoc tutaj, czyli jak wyświetlić to zdjęcie z pozostałymi danymi?
Wazniak96
Utwórz plik, z headerem ustawionym na image/jpg, w którym będziesz pobierać z tablicy GET id zdjęcia i je wyświetlac za pomocą echa. A następnie na głownej stronie daj html'owe wyświetlenie zdjęcia ze ścieszką na stworzony plik uzupelnione o odpowiednie dane w GET ;p

Co nie tłumaczy tego, że trzymanie danych w bazie danych jest bezsensowne, jak juz pewnie gdzieś czytałeś..
Olsz4k
Tak, czytalem ze trzymanie zdjec (nie danych:P) w bazie jest raczej nie praktyczne.
Zajmę się jutro tym headerem jak będę miał jakiś problem to napiszę.

A co do ładowania zdjęć, to jak się to powinno robić tzn. gdzie je trzymać, a jak je przechowywać w bazie? W bazie same linki?
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.