Problem polega na tym, że uploadując zdjęcia zapisuje ich dane w bazie, gdy uploaduje jedno zdjęcie jest dobrze, jednak gdy uploaduje więcej zdjęć to kolejne zdjęcia zapisują się kilkukrotnie i nie dostrzegam tu błędów:

  1. function upload($_FILES,$_POST){
  2. $files = Validation::factory($_FILES)
  3. ->add_rules('pliki', 'upload::valid', 'upload::required', 'upload::type[gif,jpg,png]', 'upload::size[3M]');
  4.  
  5. foreach(arr::rotate($_FILES['pliki']) as $i => $file)
  6. {
  7. $filename = upload::save($file);
  8.  
  9. Image::factory($filename)
  10. ->resize(598, 700, Image::AUTO)
  11. //->watermark(new Image(DOCROOT.'watermark.png'))
  12. ->save(DOCROOT.'photos\\'.str_replace(" ","_",$_POST['kategoria'][$i]).'\\'.basename($filename));
  13.  
  14. Image::factory($filename)
  15. ->resize(150, 150, Image::AUTO)
  16. ->save(DOCROOT.'photos\\'.str_replace(" ","_",$_POST['kategoria'][$i]).'\\thumb_'.basename($filename));
  17. unlink($filename);
  18. //zapisuje nazwe pliku, aby dodać do bazy razem z resztą danych z $_POST
  19. array_push($this->files,basename($filename));
  20. $this->save($_POST);
  21. }
  22.  
  23.  
  24. }
  25.  
  26. function save($_POST){
  27.  
  28. foreach($this->files as $i => $file){
  29. $this->db->query('INSERT INTO luke_photos SET image="'.$file.'", category="'.$_POST['kategoria'][$i].'", opis="'.$_POST['opis'][$i].'"');
  30. }
  31.  
  32. }


Zdjęcia uploaduje z takiego formularza: (kolejne wiersze tworzę przez js)
  1. <form method="POST" action="/kohana2/zdjecia/dodaj/" enctype="multipart/form-data">
  2. <table id="formularz">
  3. <tr>
  4. <td class="input"><input type="file" name="pliki[]" /></td><td class="input" style="float:right;">
  5. <select name="kategoria[]">
  6. <option value=""></option>
  7. <?php foreach($kategorie as $cat){ ?>
  8. <option value="<?php echo $cat['name']; ?>"><?php echo $cat['name']; ?>  </option>
  9. <?php } ?>
  10. </td><td rowspan="2"></td>
  11. </tr>
  12. <tr><td colspan="2">Opis: <input type="text" name="opis[]" style="width: 370px;border: 1px solid #A0A0A0;"/></td></tr>
  13. <input type="button" id="add" value="Więcej" />


Ps. Temat w tym dziale, bo prawdopodobnie problem ma mało wspólnego z samym frameworkiem.


@edit
Problem banalny, że aż mi wstyd. Wywołanie Save() w złym miejscu miałem. Tak czy inaczej nikt tego nie zauważył, a mieliście cały dzień. tongue.gif