Incarcare numar maxim de poze in director, cu nume ordonate
-
- Mesaje: 80
Incarcare numar maxim de poze in director, cu nume ordonate
In prezent se poate incarca numai o poza pentru fiecare user. Se incarca imaginea si se redenumeste. Cum fac sa se poata incarca mai multe foto (adica sa aiba o logica in redenumire ca sa fie distincte) si sa pot seta numarul maxim de imagini ce pot fi uploadate?
MarPlo
Mesaje: 4343
Poti utiliza functia glob().
Vezi cum poti folosi acest exemlu:
Vezi cum poti folosi acest exemlu:
Cod: Selectaţi tot
$files = glob('dir/*.jpg'); // array cu toate fisierele JPG din "dir/"
$nrf = count($files); // numarul de fisiere gasite
// daca sunt mai putin de 4 fisiere
if($nrf < 4) {
$file = 'dir/nume'. ($nrf + 1) .'.jpg'; // setare nume cu numar de ordine pt urmatorul fisier
// Incarca fisierul ...
}
else echo 'Sunt 3 fisiere incarcate';
adrian_ady
Mesaje: 80
Linia de upload folosita in prezent:
Am facut cateva incercari dar nu am 'brodit-o'. Asa ar trebui sa devina linia($file = 'dir/nume'. ($nrf + 1) .'.jpg';)?:
Asa arata clasa Upload
Cod: Selectaţi tot
$upload->uploadImageNoResizeRenameWidthHeight('file',"foldere/furnizori/id_".$login->getMemberId()."","id_".$_GET['id'],512000,array("jpeg"),120,90);
Cod: Selectaţi tot
$upload->uploadImageNoResizeRenameWidthHeight('file',"foldere/furnizori/id_".$login->getMemberId()."","id_".$_GET['id']."-".($nrf+1),512000,array("jpeg"),120,90);
Cod: Selectaţi tot
// upload imagine gif sau jpg fara redimensionare cu redenumire si cu conditia sa aiba anumita latime si inaltime
public function uploadImageNoResizeRenameWidthHeight($file,$cale,$rename,$maxsize,$allow_extension,$w,$h)
{
//$file = numele imputului de tip file
//$cale = calea pozei pe server fara slash la sfarsit
//$rename = numele nou al pozei
//$maxsize = dimensiumea maxima a fisierului permisa
//$allow_extension = extensii permise array("jpeg","/gif")
$file_name = $_FILES[$file]['name'];
$file_type = $_FILES[$file]['type'];
$file_size = $_FILES[$file]['size'];
$tip = substr($file_type,-4);
@list($w1,$h1) = getimagesize($_FILES[$file]['tmp_name']);
if($file_size > $maxsize) // daca e mai mare decat dimensiunea maxima
{
$this->mess = "Dimensiunea maxima permisa este ".($maxsize/25600)." Kb";
}
else if(!in_array($tip,$allow_extension))
{
$this->mess = "Acest format de fisier nu este permis";
}
else if(($w1 != $w) && ($h1 != $h))
{
$this->mess = "Va rugam sa uploadati imagine de <b>".$w." x ".$h." pixel</b>";
}
else if (file_exists($cale.'/'.$file_name)) // daca fisierul neredenumit exista in director
{
$this->mess = "Acest fisier exista deja";
}
else
{
if($tip == "jpeg") $ext = "jpg";
if($tip == "/gif") $ext = "gif";
if($tip == "flash") $ext = "swf";
$new_name = $rename.'.'.$ext;
$new_path = $cale.'/'.$new_name;
if(file_exists($cale.'/'.$new_name))
{
$this->mess = "Acest fisier exista deja";
}
else
{
move_uploaded_file($_FILES[$file]['tmp_name'], $cale.'/'.$new_name);
chmod($new_path,0777);
$this->filename = $new_name;
$this->mess = "";
}
}
}
MarPlo
Mesaje: 4343
Apelarea metodei din acea clasa pare in regula.
Poate ca nu e definita bine variabila $nrf cu numarul de poze din director.
Poate ca nu e definita bine variabila $nrf cu numarul de poze din director.
Cod: Selectaţi tot
$files = glob('foldere/furnizori/id_'. $login->getMemberId() .'/*.jpg');
$nrf = count($files); // numarul de fisiere gasite
adrian_ady
Mesaje: 80
Am reusit pana la urma sa uploadez imaginile, am schimbat clasa, calea, etc. Problema apare cand se doreste sa se stearga unele fotografii sau cand se alege una din ele ca fiind cea care va fi expusa prima(in mesajul succint).
Cu formula 'Adauga foto', sa zicem din intamplare caci era varianta pentru upload numai o imagine, merge bine; cu cea pentru stergere insa nu functioneaza nimik. Eu m-am straduit, am facut ce am crezut dar fara rezultate; acum apelez din nou la un expert.
Cu formula 'Adauga foto', sa zicem din intamplare caci era varianta pentru upload numai o imagine, merge bine; cu cea pentru stergere insa nu functioneaza nimik. Eu m-am straduit, am facut ce am crezut dar fara rezultate; acum apelez din nou la un expert.
Cod: Selectaţi tot
//INCARCARE (IN HEAD)
if(isset($_POST['Upload']))
{
$cale = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'];
$files = glob($cale . "/*.jpg");
if ($files)
$count = count($files);
$total_entries = $count / 2;
$upload = new Upload();
if($_GET['addfoto']=='foto')
$upload->uploadImageThumbRenameResize('file',"foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'],($total_entries + 1),512000,500,113,array("jpeg"));
if($upload->getMessage()) $mesaj_upload = '<br>'.$upload->getMessage();
else header('Location: '.$_SERVER['PHP_SELF']);
//UPLOAD SI STERGERE
<div id="divupload" style="display:<? if(isset($_GET['addfoto'])) echo 'block'; else echo 'none';?>; margin: 0 auto; max-width: 500px;">
<form action="" method="post" enctype="multipart/form-data">
<p class="error"><?=$mesaj_upload?></p>
<span class="mic-gri">Incarcati numai imagini format .jpg 135 x 96 px, maxim 20Kb.
[<a nohref="javascript://" onClick="getElementById('divupload').style.display='none'" style="cursor: pointer;"><b> <i class="fa fa-close"></i> </b></a>]</span>
<input name="file" type="file" class="inputcol" id="file" style="max-width: 300px;" />
<button class="buton" name="Upload" id="Upload" onclick="document.formName.submit();"><i class="fa fa-upload"></i> Upload</button>
</form>
<br />
</div>
//---------------------------
<a style="cursor: pointer;" onClick="location.href='<?=$_SERVER['PHP_SELF']?>?addfoto=foto&id=<?=$id?>'" style="cursor:pointer;">Adauga foto</a>
<br /><br />
<a style="cursor: pointer;" onClick="location.href='<?=$_SERVER['PHP_SELF']?>?deletefoto=foto&id=<?=$id?>'">Sterge foto</a>
//DISPLAY FOTO
<?
$cale = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$id;
$files = glob($cale . "/*.jpg");
if ($files)
$count = count($files);
{
?>
<div class="gallery" id="gallery-small">
<?
$total_entries = $count / 2;
$limit = $total_entries;
$start_img = 1;
for($i=$start_img; $i<min($total_entries + 1, ($start_img + $limit)); $i++) {
echo '<a href="'.$cale.'/'. $i .'_big.jpg" rel="gallery" name=".$i."><img src="'.$cale.'/'. $i .'_small.jpg" alt=" '. $i .' " title="Imagine '. $i .'" /></a>';
}
?>
<br /><br />
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#gallery-small a').fancybox();
});
</script>
<?
}
?>
MarPlo
Mesaje: 4343
Partea de sters un anumit fisier din director, cand sunt mai multe e mai complicata. Trebuie creat un fel de FileManager
La clic pe un buton /Link se afiseaza intr-o fereastra fisierele /imaginile din director, apoi la clic pe imagine se adauga cu javascript numele ei intr-un input-hidden, iar la click pe un buton Submit se acceseaza scriptul php de stergere, care sa preia numele din acel Input.
Asta e ideea, pe partea de cod nu ma bag sa fac eu.
La clic pe un buton /Link se afiseaza intr-o fereastra fisierele /imaginile din director, apoi la clic pe imagine se adauga cu javascript numele ei intr-un input-hidden, iar la click pe un buton Submit se acceseaza scriptul php de stergere, care sa preia numele din acel Input.
Asta e ideea, pe partea de cod nu ma bag sa fac eu.
adrian_ady
Mesaje: 80
Imi dau seama de complicitatea functiei. Am optat pentru a sterge cate o imagine(small + big) pe click, incepand cu ultima adaugata($last). Cum formulez valoarea $last?
Cod: Selectaţi tot
if(isset($_POST['Upload']))
{
$cale = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'];
$files = glob($cale . "/*.jpg");
if ($files)
$count = count($files);
$total_fotos = $count / 2;
if($_GET['addfoto']=='foto')
$upload = new Upload();
$upload->uploadImageThumbRenameResize('file',"foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id'],($total_fotos + 1),512000,800,566,array("jpeg"));
if($upload->getMessage()) $mesaj_upload = '<br>'.$upload->getMessage();
else header('Location: '.$_SERVER['PHP_SELF']);
}
if(isset($_GET['deletefoto']))
{
$last= ???
{
$cale_small = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id']."/".$last."_small.jpg";
$cale_big = "foldere/furnizori/id_".$login->getMemberId()."/oferta_id_".$_GET['id']."/".$last."_big.jpg";
if(file_exists($cale_small)) unlink($cale_small);
if(file_exists($cale_big)) unlink($cale_big);
}
MarPlo
Mesaje: 4343
Daca ai cate 2 tipuri ale aceleiasi imagini (small si big), preiei cu glob() fisierele si imparti numarul la 2.
Incearca asa:
Incearca asa:
Cod: Selectaţi tot
$last = count(glob($cale . "/*.jpg")) / 2;
adrian_ady
Mesaje: 80
Merci, am inteles ideea, am rezolvat! Multumesc!
Subiecte similare
-
Eroare la incarcare json
JavaScript - jQuery - Ajax
Primul mesaj
Bună MariusUltimul mesaj
Cum rezolv să imi încarce tot fișierul .json
eoroare la
//fetch(endpoint)
//.then(blob => blob.json())
//.then(data =>...
Fisierul json de la acea adresa are peste 50 MB, e cam mare pentru preluare si procesare direct in pagina (client side) cu javascript.
A) Indicat... -
Setare timp de incarcare a site-ului
JavaScript - jQuery - Ajax
Primul mesaj
Am o imaine de incarcare a site-ului în format GIF, dar nu apare fiindca pagina web se încarca în 0,01 secunde.Ultimul mesaj
Este posibil să setez un timp de...
Iata un exemplu de preloader cu jQuery, cu metoda delay() (2 sec = 2000), adaugata la evenimentul 'load'.
<style>
.loading {
position:... -
mysql Update dupa nume
PHP - MySQL - XML
Primul mesaj
Salutari,Ultimul mesaj
Incerc de ceva timp sa fac sa imi salveze informatiile jucatorului in baza de date, o data inserate vreau atunci cand gaseste din nou...
Cand se creaza tabelul in baza de date, coloana nickname trebuie sa fie de tip UNIQUE KEY .
Iar id-ul ar trebui sa fie o valoare care sa nu o mai... -
Extragere număr și puncte din șir în php
PHP - MySQL - XML
Primul mesaj
Am un șir cu numere și puncte. De exemplu '123456 ...'Ultimul mesaj
Vreau să am separat numarul 123456 și punctele ... în doua variabile in php.
Am încercat să...
E din cauza că punctul (.) in regex reprezinta orice caracter, în timp ce \. este punct literal.
Încearca următorul cod:
$matches = null;
$input... -
Conversie șir de salariu în număr
JavaScript - jQuery - Ajax
Primul mesaj
Am următoarea problemă:Ultimul mesaj
1. sa se elimine din sirul salarial separatorul de mii (,), astfel 5.555 sa devina 5555.
2. dacă utilizatorul introduce...
Încercați funcția din următorul cod:
function salNr(s){
//If there is comma before the last two digit, replace it with dot, else remove the... -
Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML
Primul mesaj
Bună MarploUltimul mesaj
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc