Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] pobieranie wartości z tabeli do formularza okna SELECT
Forum PHP.pl > Forum > Przedszkole
THOR_JAN
Witam
kod który dodaje zdjęcia do galeri:

  1. <?php
  2. session_start(); // Na samej górze zadeklaruj sesję.
  3. if(!session_is_registered("uzytkownik")){ // Sprawdza zmienną sesji.
  4. header("location:logowanie.php"); // Przekierowanie do index.php
  5. }
  6. ?>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  8. <head>
  9. <title>ADM - edycja galeri</title>
  10. <link rel="stylesheet" href="../css/style.css" type="text/css">
  11. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  12. </head>
  13. <body>
  14. <?php
  15. include("menu.php");
  16. ?>
  17. <div id="tresc">
  18. <fieldset><legend>Galeria</legend>
  19. <?php
  20.  
  21. // potrzebne foldery (chmod 777) galeria, galeria/orginal, galeria/miniatury
  22.  
  23. include('config.php'); //łącze się z bazą
  24. $f = $_FILES['zdj'];
  25. $spr= '../galeria/orginal/'.$data; //ścieżka (tam gdzie mają znajdować się zdjęcia)
  26. $zdj=$f['name'];
  27. $opi=$_POST['opi'];
  28. $kat=$_POST['kat'];
  29. if (is_dir($spr)) //sprawdzam czy plik istnieje
  30. {
  31. if(isset($f['name']))
  32. {
  33.  
  34. if (is_uploaded_file($f['tmp_name'])) {
  35. if ($f['type']=='image/bmp')
  36. $typ='bmp';
  37. elseif ($f['type']=='image/jpeg' || $f['type']=='image/pjpeg') //sprawdza format jpg lub dla Internet Explorera pjpg
  38. $typ='jpg';
  39. elseif ($f['type']=='image/png' || $f['type']=='image/x-png') //sprawdza format png lub dla Internet Explorera x-png
  40. $typ='png';
  41. elseif ($f['type']=='image/gif')
  42. $typ='gif';
  43. else $tekst='Niepoprawny format obrazu.<br><br>';
  44. echo $tekst;
  45.  
  46.  
  47. }
  48. elseif(!$tekst) $tekst='Nie wczytano obrazu<br>';
  49. if (!$tekst) {
  50. move_uploaded_file($f['tmp_name'],'../galeria/orginal/'.$zdj);
  51.  
  52. if ($typ=='jpg') $img=imagecreatefromjpeg('../galeria/orginal/'.$zdj);
  53. elseif ($typ=='png') $img=imagecreatefrompng('../galeria/orginal/'.$zdj);
  54. elseif ($typ=='gif') $img=imagecreatefromgif('../galeria/orginal/'.$zdj);
  55. elseif ($typ=='bmp') $img=imagecreatefromwbmp('../galeria/orginal/'.$zdj);
  56. $x = imagesx($img);
  57. $y = imagesy($img);
  58.  
  59. if($x > $y){
  60. $nx = 200;
  61. $ny = 200 * ($y / $x);
  62. $mx = 800;
  63. $my = 800 * ($y / $x);
  64. }
  65. elseif($x < $y){
  66. $nx = 200 * ($x / $y);
  67. $ny = 200;
  68. $mx = 800 * ($x / $y);
  69. $my = 800;
  70. }
  71. else{
  72. $nx = 200;
  73. $ny = 200;
  74. $mx = 800;
  75. $my = 800;
  76. }
  77. $mini_img = imagecreatetruecolor($nx, $ny);
  78. imagecopyresampled($mini_img, $img, 0, 0, 0, 0, $nx, $ny, $x, $y);
  79. $new_img = imagecreatetruecolor($mx, $my);
  80. imagecopyresampled($new_img, $img, 0, 0, 0, 0, $mx, $my, $x, $y);
  81. if ($typ=='jpg') imagejpeg($mini_img, '../galeria/miniatury/'.$zdj) && imagejpeg($new_img, '../galeria/'.$zdj) ;
  82. elseif ($typ=='png') imagepng($mini_img, '../galeria/miniatury/'.$zdj) && imagepng($new_img, '../galeria/'.$zdj);
  83. elseif ($typ=='gif') imagegif($mini_img, '../galeria/miniatury/'.$zdj) && imagegif($new_img, '../galeria/'.$zdj);
  84. elseif ($typ=='bmp') imagewbmp($mini_img, '../galeria/miniatury/'.$zdj) && imagewbmp($new_img, '../galeria/'.$zdj);
  85.  
  86. $sql1 = mysql_query("INSERT INTO gallery SET
  87. zdjecie='$zdj',opis='$opi',
  88. kategoryID='$kat'"); //dodaje nazwę pliku i nazwę kategori do bazy danych
  89. }
  90. }
  91. }
  92.  
  93.  
  94. echo '<b>zdjęcia w twojej galeri:</b><br><br>';
  95. echo '<table border="1" align="center" cellspacing="5"> ';
  96. echo '<tr>';
  97.  
  98.  
  99. $i = 1;
  100. $rezultat=mysql_query('SELECT g.*,k.kategoria FROM gallery AS g LEFT JOIN kategory AS k ON(g.kategoryID=k.kategoryID)ORDER BY id desc');
  101. while($wiersz=mysql_fetch_array($rezultat))
  102. {
  103. echo '<td>';
  104. echo '<table>';
  105. echo '<tr>' ;
  106. echo '<td width="220" height="220" bgcolor="grey" align="center">';
  107. echo '<img src="../galeria/miniatury/'.$wiersz['zdjecie'].'" alt="'.$wiersz['kategoryID'].'"></a>';
  108. echo '</td> ';
  109. echo '</tr>';
  110. echo '<td width="220" height="20" valign="top" align="center">' ;
  111. echo '<b>'.$wiersz['zdjecie'].'</b>';
  112. echo '</td> ';
  113. echo '</tr>';
  114. echo '<td width="220" height="50" valign="top" align="center">' ;
  115. echo $wiersz['kategoria'];
  116. echo '</td> ';
  117. echo '</tr>';
  118. echo '<td width="220" height="50" valign="top" align="center">' ;
  119. echo $wiersz['opis'];
  120. echo '</td>';
  121. echo '</tr>';
  122. echo '<td width="220" height="20" valign="top" align="center">' ;
  123. echo '<a href="gallery_edycja.php?galeria=usun&id='.$wiersz['id'].'">Usuń</a>';
  124. echo '</td>';
  125. echo '</tr>';
  126. echo '</table>';
  127. echo '</td>';
  128.  
  129. if($i % 2 == 0){
  130. echo '</tr>';
  131. echo '<tr>';
  132. }
  133. $i++;
  134. }
  135. echo '</tr>';
  136. echo '</table>';
  137.  
  138. if(isset($_GET['galeria']) && $_GET['galeria']=='usun' && isset($_GET['id']))
  139. {
  140.  
  141. $id=$_GET['id'];
  142.  
  143. $rezultat=mysql_query("select zdjecie FROM gallery WHERE id='$id' ") ;
  144. if($row = mysql_fetch_array($rezultat)) {
  145.  
  146. $plik= $row ['zdjecie'] ;
  147. unlink('../galeria/'.$plik);
  148. unlink('../galeria/orginal/'.$plik);
  149. unlink('../galeria/miniatury/'.$plik);
  150. $zapytanie="DELETE FROM gallery WHERE id='$id'";
  151. mysql_query($zapytanie) or die("Wystąpił błąd" );
  152. echo 'Pomyślnie usunąłem zdjęcie.';
  153. }
  154. else{
  155. echo "Zdjęcie zostało usunięte" ;
  156. }
  157.  
  158.  
  159.  
  160. }
  161.  
  162.  
  163. ?>
  164. <fieldset>
  165. <legend>Dodaj zdjęcie</legend>
  166. <form action="gallery_edycja.php?page=addzdj" enctype="multipart/form-data" method="post">
  167. <div><label for="plik">Wybierz zdjęcie:</label><br>
  168. <input id="plik" name="zdj" size="32" type="file" /></div>
  169. <div>
  170. <div><label for="opi">Opis:</label><br>
  171. <input id="kat" name="opi" size="32" type="text" /></div><br>
  172.  
  173. <div><label for="kat">Kategoria:</label><br>
  174. <select id="kat" name="kat">
  175. <option value="1">projektor</option>
  176. <option value="2">lampa</option>
  177. <option value="3">laptop</option>
  178. </select>
  179.  
  180. </div><br>
  181. <div><input class="submit" type="submit" value="Wyślij" /></div>
  182. </div>
  183.  
  184. </form>
  185. </fieldset>
  186. </fieldset>
  187. </div>
  188. </body>
  189.  


oraz tabele

gallery z polami : id, zdjecie, kategoryID, opis
kategory z polami : kategoryID, kategoria

połączone tak
  1. ALTER TABLE `gallery` ADD FOREIGN KEY ( `kategoryID` ) REFERENCES `thor_thor`.`kategory` (
  2. `kategoryID`
  3. ) ON DELETE CASCADE ON UPDATE CASCADE ;


problem mam z selektem w formularzu. jest możliwość żeby wartości pobierane były automatycznie do niego z tabeli "kategory"
tzn zamiast wpisywać ręcznie
  1. <option value="1">projektor</option>
  2. <option value="2">lampa</option>
  3. <option value="3">laptop</option>
  4.  
samo by sie wypełniało.

drugi problem to jeśli dodaje zdjęcie to dodać moge tylko trzy zdjęcia i to każde musi mieć inne "kategoryID" jeśli chce dodać np z kategoryID = 1 a w tabeli gallery jest już rekord z taką wartością to nie dodaje rekordu i wywala błąd że już rekord z ta wartością jest.
mortus
Problem 1. To tak na prawdę żaden problem:
  1. <?php
  2. // ustanowienie połączenia z bazą danych
  3. $sql = "SELECT * FROM kategory;";
  4. $result = mysql_query($sql);
  5. ?>
  6. <select id="kat" name="kat>
  7. <?php
  8. while($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  9. echo '<option value="' . $row['kategoryID'] . '">' . $row['kategoria'] . '</option>';
  10. }
  11. ?>
  12. </select>
Problem 2. Nie za bardzo rozumiem, co znaczy
Cytat
jeśli dodaje zdjęcie to dodać moge tylko trzy zdjęcia i to każde musi mieć inne "kategoryID"
Ale jeśli chodzi o błąd, to sprawdź, czy na pole kategoryID w tabeli gallery nie masz przypadkiem nałożonego indeksu unique.
THOR_JAN
Po nocnym odpoczynku odrazu człowiek inaczej myśli

odnosnie pierwszego problemu
dzieki mortus podobne rozwiazanie przyszlo do glowy w nocy

co do drugiego
może bardziej zobrazuje

w tabeli kategory z polami : kategoryID, kategoria
mam 3 wpisy KategoryID pokolei 1,2,3

w tabeli gallery z polami : id, zdjecie, kategoryID, opis

dodaje zdjecie, kategoryID ( odpowiednio 1, 2 lub 3) oraz opis
i jeśli jest już rekord z nr 1 w kategoryID
to innego zdjecia z nr 1 w kategoryID już sie nie da dodac
wyskakuje ze juz rekord z taką wartością istnieje

a co do pola kategoryId w gallery to jest ustawione na INDEX
mortus
To spróbuj ten index usunąć i zobacz, czy zadziała.
THOR_JAN
nie da rady

może źle powiązałem te dwie tabele w MySQL-u

ja zrobiłem tak : wszedłem w tabele gallery/struktura/widok relacji/
i tam:

FOREIGN KEY (INNODB)
id ON DELETE ON UPDATE
zdjecie Brak zdefiniowanego indeksu!
kategoryID [nazwabazy.kategory.kategoryID] ON DELETE [CASCADE] ON UPDATE [CASCADE]
opis Brak zdefiniowanego indeksu!

zrobiłem tak i działa:

FOREIGN KEY (INNODB)
id ON DELETE ON UPDATE
zdjecie Brak zdefiniowanego indeksu!
kategoryID [nazwabazy.kategory.kategoryID] ON DELETE [ ] ON UPDATE [ ]
opis Brak zdefiniowanego indeksu!
mortus
Jak tworzę tabele i próbuję wstawić dane w taki sposób:
  1. DROP TABLE IF EXISTS gallery;
  2. DROP TABLE IF EXISTS kategory;
  3.  
  4. CREATE TABLE kategory (
  5. kategoryID INT(11) NOT NULL AUTO_INCREMENT,
  6. kategoria VARCHAR(20) NOT NULL,
  7. PRIMARY KEY kategoryID_pk (kategoryID),
  8. UNIQUE KEY kategoria_ui(kategoria)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  10.  
  11. INSERT INTO kategory VALUES
  12. (0, 'kategoria1'),
  13. (0, 'kategoria2');
  14.  
  15. CREATE TABLE gallery (
  16. id INT(11) NOT NULL AUTO_INCREMENT,
  17. zdjecie BLOB DEFAULT NULL,
  18. kategoryID INT(11),
  19. opis VARCHAR(100) DEFAULT 'Opis',
  20. PRIMARY KEY photo_id (id)
  21. -- CONSTRAINT kat_fk FOREIGN KEY kategoryID_fk (kategoryID) REFERENCES kategory(kategoryID) ON DELETE CASCADE ON UPDATE CASCADE
  22. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  23.  
  24. ALTER TABLE gallery ADD FOREIGN KEY (kategoryID) REFERENCES kategory(kategoryID) ON DELETE CASCADE ON UPDATE CASCADE;
  25.  
  26. INSERT INTO gallery VALUES
  27. (0, DEFAULT, 1, DEFAULT),
  28. (0, DEFAULT, 2, DEFAULT),
  29. (0, DEFAULT, 1, DEFAULT);
to wszystko działa jak trzeba.
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.