Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Galeria
Forum PHP.pl > Forum > Przedszkole
mrk9109
Witam kolejnym działem mojej nauki jest galeria i mam pytanie bo nie wiem jak się do tego zabrać. Skrypt który odpowiada mi za wrzucanie zdjęć w adminie mam na takiej samej zasadzie jak robiłem avatar użytkowników ( kod poniżej ) i wszystko śmiga ale nie do końca jestem zadowolony . Ponieważ wrzuca mi max 1 zdjęcie . Moje pytanie brzmi jak zrobić że gdy wybiorę więcej zdjęć z komputera to wrzuci je wszystkie na raz . ( W kodzie UPDATE ale w galerii mam oczywiście INSERT )

  1. $max_rozmiar = 150*150;
  2. if (is_uploaded_file($_FILES['avatar']['tmp_name'])) {
  3. if ($_FILES['avatar']['size'] > $max_rozmiar) {
  4. echo 'Błąd! Plik jest za duży!';
  5. } else {
  6. echo '<br/>';
  7. move_uploaded_file($_FILES['avatar']['tmp_name'],
  8. $_SERVER['DOCUMENT_ROOT'].'../images/avatar/'.$login.''.$_FILES['avatar']['name']);
  9. $zapytanie = $polaczenie->query("UPDATE `uzytkownicy` SET avatar='images/avatar/".$login."".$_FILES['avatar']['name']."' WHERE login = '".$login."'; ");
  10. }
  11. }
Kshyhoo
Dwie rzeczy: pobierasz z formularza tablicę z plikami a formularz musi mieć enctype="multipart/form-data".
mrk9109
Mam inne pytanie rozbudowałem sobie o kategorie i chce je pobrać w formularzu dodawania zdjęcia robiłem to tak ale nie pobiera mi nic przez foreach

  1. $zapytanie ="SELECT id, nazwa FROM galeria_kategorie ORDER by id DESC";
  2. $wynik = mysqli_query($polaczenie,$zapytanie);
  3. while($db = mysqli_fetch_array($wynik) ) {
  4. $nazwa=$db['nazwa'];
  5. }
  6.  
  7. echo '<form method="POST" ENCTYPE="multipart/form-data" action="admin.php?pa=galeria&akcja=dodaj-zdjecie">
  8. <br />
  9. <b><h1>Galeria Zdjęcia - Dodaj</h1></b><br />
  10. <table>
  11. <tr>
  12. <td width="100"><b>Kategoria:</b></td>
  13. <td width="300">
  14. <select name="kategoria">';
  15. foreach($nazwa AS $w) echo '<option>'.$w.'</option>';
  16. echo '
  17. </td>
  18. </tr>
  19. </table><br/>
  20. <table>
  21. <tr>
  22. <td>
  23. <input type="submit" name="zapiszZdj" style="width: 50px; height: 35px; background-color: #c9a606; color: #ffffff;" value="Dodaj" />
  24. </td>
  25. <td>
  26. <input type="submit" name="anuluj" style="width: 50px; height: 35px; background-color: #c9a606; color: #ffffff;" value="Anuluj" />
  27. </td>
  28. </tr>
  29. </table>
  30. </form>
  31. ';
nospor
$nazwa to tekst. Od kiedy po tekscie mozesz iterowac jak po tablicy?

moze chciales zrobic tak
$nazwy[]=$db['nazwa'];

a potem
foreach($nazwy AS $w)
mrk9109
dziękuje smile.gif kolejna rada zapamiętana

Mam jeszcze jedno pytanie zrobiłem całą galerie z multi itp i dodaje i tak 1 zdj a nie 2 jak wybiorę .

http://wklej.org/id/3374274/
nospor
generujesz X pol o tej samej nazwie wiec dosc logiczne, ze sie nadpisuja. Podstawy formularzy.
Albo nadawaj kazdemu polu oddzielna nazwe, albo uzywaj nazw tablicowych, czyli nie:

name="nazwa"
name="obrazek"


a:
name="nazwa[]"
name="obrazek[]"

A potem w php pamietaj ze pod $_POST['nazwa'] bedzie tablica. Analogicznie z $_FILES['obrazek']
mrk9109
dzięki smile.gif rozumie

i patrz użyłem tablic i dalej zapisuje tylko 1 rekod

  1. if (isset($_POST['zapiszZdj']))
  2. {
  3.  
  4. $nazwa = $_POST['nazwa'][0];
  5. $obrazek = $_FILES['obrazek'][0];
  6. $kategoria = $_POST['kategoria'];
  7.  
  8. $zapytanie = $polaczenie->query("INSERT INTO `galeria` (`nazwa`,`kategoria`)
  9. VALUES ('".$nazwa."',
  10. '".$kategoria."'
  11. );");
  12.  
  13. // Obrazek
  14. $id = mysqli_insert_id($polaczenie);
  15.  
  16. $max_rozmiar = 2200*1900;
  17. if (is_uploaded_file($_FILES['obrazek']['tmp_name'][0])) {
  18. if ($_FILES['obrazek']['size'][0] > $max_rozmiar) {
  19. echo 'Błąd! Plik jest za duży! <br /><br />';
  20. } else {
  21. echo '<br/>';
  22. move_uploaded_file($_FILES['obrazek']['tmp_name'][0],
  23. $_SERVER['DOCUMENT_ROOT'].'../images/galeria/'.$id.''.$_FILES['obrazek']['name'][0]);
  24. $zapytanie = $polaczenie->query("UPDATE `galeria` SET obrazek='images/galeria/".$id."".$_FILES['obrazek']['name'][0]."' WHERE id = '".$id."'; ");
  25. }
  26. }
  27.  
  28. header('Location: admin.php?pa=galeria');
  29. }
nospor
Z tablicy pobierasz tylko pierwszy elelement to przepraszam bardzo ale czego oczekujesz? Ze drugi magicznie sam sie doda?
Neutral
Użyj pętli lub ręcznie klep te cyfry.

Example:
  1. for($i=0;$i<=count($something);$i++){
  2. $nazwa = $_POST['nazwa'][$i];
  3. $obrazek = $_FILES['obrazek'][$i];
  4. }
nospor
@neutral tyle bledow popelniles w tym kodzie co podales ze az dziwno ze mozna bylo az tyle...
raz ze iterujesz o jeden raz wiecej niz tablica ma elementro
dwa ze w kazdej iteracji liczysz ile tablica ma elementow
trzy ze uzyles FOR zamiast FOREACH
cztery ze zamykasz petle ktora na dobra sprawe robi nic. Moze to byl tylko skrot myslowy z twojej strony ale nasz bohater moze tego nie wiedziec
mrk9109
nospor dzieki wykorzystalem twoje rady i zmienilem troche kod wedlug poradnik uzylem petli i jest oki dzieki za uwage smile.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.