Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]zapętlenie zapytania
Forum PHP.pl > Forum > Przedszkole
MrLoverLover
Witam.
Mam sprawę mógłby ktoś pokazać jak zapętlić zapytanie do bazy na podstawie tego skryptu dodawania plików. Do bazy ma się dodać id - takie samo dla każdego obrazka dodawanego w tym samym czasie i ścieżka do obrazka.

Problem w tym że tym sposobem dodaje się na serwer wszystkie obrazki a do bazy tylko jeden - pierwszy.

  1. $num_uploads = 5;
  2. $num = 0;
  3.  
  4. while($num < $num_uploads)
  5. {
  6. echo '<div><input name="userfile[]" type="file" /></div>';
  7. $num++;
  8. }
  9. if(isset($_FILES['userfile']['tmp_name'])){
  10. for($i=0; $i < count($_FILES['userfile']['tmp_name']);$i++) {
  11.  
  12. $plik_tmp = $_FILES['userfile']['tmp_name'][$i];
  13. $plik_nazwa = $_FILES['userfile']['name'][$i];
  14. $plik_rozmiar = $_FILES['userfile']['size'][$i];
  15.  
  16. if(is_uploaded_file($plik_tmp)) {
  17. $queryx = "INSERT INTO `images` (`id`,`image`) VALUES ('".$idzdjecie."','img/angebot/".$plik_nazwa."')";
  18. mysql_query($queryx);
  19. move_uploaded_file($plik_tmp, "../img/angebot/$plik_nazwa");
  20. echo "Zdjecie: <strong>$plik_nazwa</strong> o rozmiarze
  21. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  22. }
  23. }
  24. }
SmokAnalog
Czy zmienna $idzdjecie w ogóle istnieje? Najlepiej niech pole ID będzie kluczem podstawowym z auto_increment i pomijaj je w zapytaniu - samo się będzie dodawało prawidłowo, czyli byś miał:
  1. $queryx = "INSERT INTO `images` (`image`) VALUES ('img/angebot/$plik_nazwa')";
nospor
1)Ciezko sprawdzic czy baza nie pluje bledem poczas INSERT?
Temat: Jak poprawnie zada pytanie
2) No i skad bierzesz to: $idzdjecie?
MrLoverLover
ID zdjęcie istnieję bo generalnie do bazy dodaje ale tylko jedno, załóżmy dodaje 3 pliki to na serwer dochodzą wszystkie, a do bazy tylko jeden smile.gif

a idzdjecie to

  1. $idzdjecie = mysql_insert_id();


a pole id nie może być kluczem podstawowym z AI bo są dwa zapytania jedno dodaje całą treść z formularzy do jednej tabeli natomiast same zdjęcia mają trafić do innej tabeli ale z tym samym ID smile.gif więc jest dodawane za pomocą $idzdjecie



Całość wraz z formularzem wygląda tak

  1. echo '
  2. <form id="dodawajka" enctype="multipart/form-data" method="POST" action="?go=angebote&feature=new">
  3. <table class="new_page">
  4. <tbody>
  5. <tr>
  6. <td width="16%">Kategoria:</td> <td><select name="kategoria">
  7. <option value="Hauser">Hauser</option>
  8. </select></td>
  9. </tr>
  10. <tr>
  11. <td width="16%">Tytuł Ogłoszenia:</td> <td><input type="text" name="nazwa" value="" /></td>
  12. </tr>
  13. <tr>
  14. <td width="16%">Cena:</td> <td><input type="text" name="cena" value="" /></td>
  15. </tr>
  16. <tr>
  17. <td width="16%">Powierzchnia:</td> <td><input type="text" name="size" value="" /></td>
  18. </tr>
  19. <tr>
  20. <td width="16%">Ilość Pokoi:</td> <td><input type="text" name="beds" value="" /></td>
  21. </tr>
  22. <tr>
  23. <td width="16%">Łazienki:</td> <td><input type="text" name="baths" value="" /></td>
  24. </tr>
  25. <tr>
  26. <td width="16%">Garaż:</td> <td><select name="garage">
  27. <option value="JA">ja</option>
  28. <option value="NEIN">nein</option>
  29. </select></td>
  30. </tr>
  31. <tr>
  32. <td width="16%">Opis:</td> <td><textarea name="opis"></textarea></td>
  33. </tr>
  34. <tr>
  35. <td width="16%">Zdjęcia:</td> <td>';
  36. $num_uploads = 5;
  37. $num = 0;
  38.  
  39. while($num < $num_uploads)
  40. {
  41. echo '<div><input name="userfile[]" type="file" /></div>';
  42. $num++;
  43. }echo '</td>
  44. </tr>
  45. </tbody>
  46. </table>
  47. <input type="submit" value="Dodaj" />
  48. </form>
  49. ';
  50. include("../inc/config.php");
  51. if($_SERVER['REQUEST_METHOD'] == 'POST')
  52. {
  53. $query2 = mysql_query("INSERT INTO `angebote` (`id`,`kategoria`,`image`,`nazwa`,`data`,`cena`,`typ`,`size`,`beds`,`baths`,
    `garage`,`opis`) VALUES ('','"
    .$_POST['kategoria']."',".$plik_nazwa.",'".$_POST['nazwa']."',now(), '".$_POST['cena']."', '".$_POST['kategoria']."','".$_POST['size']."','".$_POST['beds']."','".$_POST['baths']."', '".$_POST['garage']."','".$_POST['opis']."')");
  54. $idzdjecie = mysql_insert_id();
  55. }
  56. if(isset($_FILES['userfile']['tmp_name'])){
  57. for($i=0; $i < count($_FILES['userfile']['tmp_name']);$i++) {
  58.  
  59. $plik_tmp = $_FILES['userfile']['tmp_name'][$i];
  60. $plik_nazwa = $_FILES['userfile']['name'][$i];
  61. $plik_rozmiar = $_FILES['userfile']['size'][$i];
  62.  
  63. if(is_uploaded_file($plik_tmp)) {
  64. $queryx = "INSERT INTO `images` (`id`,`image`) VALUES ('".$idzdjecie."','img/angebot/".$plik_nazwa."')";
  65. mysql_query($queryx);
  66. move_uploaded_file($plik_tmp, "../img/angebot/$plik_nazwa");
  67. echo "Zdjecie: <strong>$plik_nazwa</strong> o rozmiarze
  68. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  69.  
  70.  
  71. }
  72. }
  73. }
SmokAnalog
Problem w tym, że mysql_insert_id zwraca ID dodane wcześniej przez poprzednie zapytanie, czyli próbujesz dodać rekord o istniejącym ID.
MrLoverLover
Kurde, faktycznie! Hehe, w takim razie czy jest jakiś sposób aby przypisać zdjęciom dodanym w tym samym czasie tą samą wartość ID?
Turson
To samo id jest bezsensem, bo id z założenia ma być unikalne. Dodaj nową kolumnę np. group_id i wtedy nadawaj im to samo id
MrLoverLover
Jesteś Geniuszem smile.gif, Dziękuję za pomoc można zamknąć wink.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.