ordine poze... [REZOLVAT]

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 12, 2009 4:43 pm

aha da astai ala d p php.net lam vazut da nu stiam cum sa-l folosesc deci il pun la codul de upload intre cine si cine?:)


Ar fi...

Cod: Selectaţi tot

<?php
// File and new size
$filename = $numepozanew;
$percent = 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>



dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Joi Feb 12, 2009 5:00 pm

dupa ce ai uploadat poza apelezi functia pe care ti-am scris-o:

sa zicem ca poza uploadata se numeste sebyku_1.jpg si se gaseste in directorul "foto/originale" si vrei s-o salvezi in "foto/thumb" cu numele "thumb_sebyku_1.jpg"

daca vrei sa modifici poza la marimea de 640x480, apelezi functia:

Cod: Selectaţi tot

creare_thumb("foto/originale/sebyku_1.jpg", "foto/thumb", 640, 480, thumb_sebyku_1.jpg");

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 12, 2009 5:11 pm

aha dar ca sa inteleg si eu codu toata treaba asta ce face? ia poza originala ii creeaza o copie dar mai mica la size si rezolutie? iar originala o sterge sau cum?:D

dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Joi Feb 12, 2009 5:16 pm

exact, face o copie a originalului la ce dimensiune vrei tu si denumita cum vrei tu
daca vrei, poti sa stergi originalul.
eu obisnuiesc sa fac 2 directoare
de exemplu:

am directorul foto cu 2 subdirectoare:
foto/large si foto/thumb
uploadez poza originala, creez o poza de 640x480 pe care o folosesc in galeria foto si o stochez in foto/large si creez un thumb de 90x60 pe care il stochez in foto/thumb. verific daca s-au creat cele 2 poze, dupa aceea sterg poza originala uploadata

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 12, 2009 8:40 pm

hmm da dupa cum ai explicat asa ar fi logic si fain... dar nu prea vad logica codului de exemple da imi ia poza uploadata aici

Cod: Selectaţi tot

// File and new size
$filename = $numepozanew;
$percent = 0.5;


la resize de exemplu undes 0,0,0 trebuie sa dau valori? si prin cod nu vad unde ar salvao....

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Vin Feb 13, 2009 1:47 am

pff am rezolvat pana la o bucata de noapte cu un prieten:) codul arata cam asa:)

Cod: Selectaţi tot

<?
session_start();
require_once('config.php');
if (isset($_SESSION['iduser']))
{
 $iduser = (integer) $_SESSION['iduser'];
}
else
{
   $cerereSQL = "SELECT * FROM `utilizatori` WHERE utilizator='".htmlentities($_SESSION['user'])."';";
   $rezultat = mysql_query($cerereSQL);
   if(mysql_num_rows($rezultat) == 1)
   {
        $rand = mysql_fetch_array($rezultat);
      $iduser = $rand['id'];
      $_SESSION['iduser'] = $iduser;
     }
     else
     {
        echo  "EROARE !";
     }
 }
{
if ($_FILES["fisier"]["error"] > 0)
{
  echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
}
else
{
   $query_catepoze="Select * from poze where id_user='{$iduser}'";
   $result_catepoze=mysql_query($query_catepoze);

   $totalpoze=mysql_num_rows($result_catepoze);

if ($totalpoze < 15){
  $nrpoza=nrmaxpoze($iduser, "poze");
  $pozeramase=14-$nrpoza;
  $numepozaup = $_FILES['fisier']['name'];
  $numepozanew= $user."_".$nrpoza.".jpg";
  rename($numepozaup, $numepozanew);
  if (file_exists($numepozanew))  // verificam daca fisierul exista deja pe server
  {
    echo "Fisierul pe care incerci sa-l uploadezi exista deja";
  }
  else
  {
    $query = "INSERT INTO `poze` (id_user, nume_poza, ordine) VALUES ('{$iduser}','{$numepozanew}', '{$nrpoza}')";
    mysql_query($query) or die(mysql_error() . '<br />' . $query);
    $uploadedfile = $_FILES['fisier']['tmp_name'];
    $src = imagecreatefromjpeg($uploadedfile);
    list($width,$height)=getimagesize($uploadedfile);
    $newwidth=600;
   $newheight=($height/$width)*$newwidth;
   $tmp=imagecreatetruecolor($newwidth,$newheight);
   imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
   $filename = "vot/". $user."_".$nrpoza.".jpg";
   imagejpeg($tmp,$filename,100);
   imagedestroy($uploadedfile);
      imagedestroy($src);
    echo 'Mai puteti incarca' .$pozeramase. 'poze';
   }
}else{
   echo 'Nu puteti incarca decat maximum 15 poze';
}
 }

   
  }


?>

<?php
function nrmaxpoze($userid, $tabel)
{
   $q="select max(ordine) as nrmaxf from ".$tabel. " where id_user={$userid}";
   $r=mysql_query($q);
   $row=mysql_fetch_array($r);

   $nrf=$row['nrmaxf']+1;
   return $nrf;
}   
?>
numa ca am facut o buba...dante imi poti zice la numarul pozelor de ce mai ajunge la -1 si apoi deabia se opreste... 3.2.1.0.-1 si atat... incerc neseara sa rezolv si zic daca am rezolvat

dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Vin Feb 13, 2009 12:00 pm

incearca

Cod: Selectaţi tot

$pozeramase=15-$nrpoza;

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Vin Feb 13, 2009 8:53 pm

pff a mers.... si revin iar cu o nedumerire.... eu am facut o schema acuma nu stiu cum folositi voi sau e bun cum fac eu?...
1.Cand ma inregistrez setez poza principala...
2.Cand ma loghez am optiunea pozele mele in care am 2 suboptiuni:
a. Poza principala la care probabil voi folosi un $query = "UPDATE `poze`....bla bla bla dar cea principala fiind cu numarul de ordine 1...
b. Poze secundare la care am toate pozele si optiunea de stergere langa si jos iar un form unde voi folosi $query = "UPDATE `poze pentru ordinele de la 2 la 14 numarul maxim de poze...

Cam asta ar fi planul aveti vreo noua sugestie sau ceva?:| am gresit undeva sau se poate ce zic? multumesc

dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Vin Feb 13, 2009 11:00 pm

personal nu cred ca e sanatos ca poza principala sa fie cea cu nr. de o ordine 1. daca omul vrea sa schimbe poza principala e mai complicat sa redenumesti fisierele respective.
mai bine faci un camp in tabela poze, sa zicem "poza_principala" care sa poata avea valoarea 0 sau 1.

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Vin Feb 13, 2009 11:03 pm

valoarea 0 daca ce si 1 daca ce?:D

dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Vin Feb 13, 2009 11:14 pm

daca e poza principala va avea valoarea 1, daca e secundara va avea 0
transmiti prin url numele sau id-ul pozei sa zicem $_GET['poza']
in momentul un care userul vrea sa aleaga alta poza principala:

Cod: Selectaţi tot

// mai intai faci secundare toate poze userului respectiv
$query1="update poze set poza_pricipala=0 where id_user={$iduser}";
$result1=mysql_query($query1);
// apoi o faci principala pe cea pe care ai ales-o (cea trimisa prin url)
$query2="update poze set poza_principala=1 where nume_poza='{$_GET['poza']}';
$result2=mysql_query($query2);

dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Sâm Feb 14, 2009 10:27 am

Cod: Selectaţi tot

<?php
session_start(); ?>
<?php
// partea asta am pus-o pentru ca nu am tabela de utilizatori. modifici tu


$_SESSION['iduser']=2;
$user="dant";
$iduser = $_SESSION['iduser'];
//
?>
<?php
if (isset($_POST['Submit'])){

 
if ($_FILES["fisier"]["error"] > 0) {
  echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
}else{
   $query_catepoze="Select * from poze where id_user='{$iduser}'";
   $result_catepoze=mysql_query($query_catepoze);

   $totalpoze=mysql_num_rows($result_catepoze);

   if ($totalpoze < 15){
     $nrpoza=nrmaxpoze($_SESSION['iduser'], "poze");
        // daca numarul de ordine a pozei este 1 ea devine principala din oficiu
      if ($nrpoza == 1){   
           $pozaprinc=1;
        }else{
           $pozaprinc=0;
        }   
      $calepoza=$_SESSION['iduser']."/";    // directorul userului (calea in care se salveaza pozele
      // daca directorul userului nu exista, se creaza
      if (!file_exists($calepoza)){
           mkdir($calepoza, 0777);
        }   
        
      $pozeramase=15-$nrpoza;
      $numepozaup = $calepoza.$_FILES['fisier']['name'];       // poza originala uploadata
        $numepozanew= $user."_".$nrpoza.".jpg";             // poza redenumita dupa uploadare (numai numele, fara cale)
      $pozacareseredimensioneaza = $calepoza.$numepozanew;   // poza redenumita cu tot cu cale
        move_uploaded_file($_FILES["fisier"]["tmp_name"], $numepozaup);
        rename($numepozaup, $pozacareseredimensioneaza);
        // daca poza uploadata si redenumita exista, o salvam in baza de date
      if (file_exists($pozacareseredimensioneaza))  { 
           $query = "INSERT INTO poze (id_user, nume_poza, ordine, poza_princ) VALUES ('{$iduser}','{$numepozanew}', '{$nrpoza}', {$pozaprinc})";
         mysql_query($query) or die(mysql_error() . '<br />' . $query);
            // se creeaza 2 poze noi, astea vor ramane pe server. dupa cum vezi, numele pozei mari va incepe cu l_ iar al celei thumb cu t_
         $pozamare = $calepoza."l_". $numepozanew;
         $pozathumb = $calepoza."t_". $numepozanew;
         
         // dimensiunile pozelor sunt ultimii parametrii ai functiei (latime, inaltime - poti sa le pui cat vrei         
         resizefoto($pozacareseredimensioneaza, $pozamare, 460, 357);
         resizefoto($pozacareseredimensioneaza, $pozathumb, 68, 51);
         unlink($pozacareseredimensioneaza);       // se sterge poza originala
         echo 'Mai puteti incarca ' .$pozeramase. ' poze';
        }else{
            echo 'Nu puteti incarca decat maximum 15 poze';
      }
   }
}
}

?>
<?php
/*
aici user-ul poate seta care sa fie poza lui principala, daca nu mai doreste sa fie prima poza uploadata
practic, se pune 1 in campul poza_princ la poza care vrea user-ul sa fie principala
*/   
if (isset($_GET['pozaprinc'])){      
   // mai intai se fac toate pozele secundare
   $q1="update poze set poza_princ=0 where id_user={$iduser}";      
   $r1=mysql_query($q1);
   // apoi se pune 1 in dreptul pozei dorite sa fie principala
   $q2="update poze set poza_princ=1 where id_user={$iduser} and nume_poza='{$_GET['pozaprinc']}'";   
   $r2=mysql_query($q2);
}   
?>
<form name="form1" enctype="multipart/form-data" method="post" action="upload.php">
  <input name="fisier" type="file" id="fisier">
  <input type="submit" name="Submit" value="Submit">
</form>


<?php
// aici se afiseaza pozele
// daca exista poza principala se afiseaza mare
$calepozaafisare=$_SESSION['iduser']."/";
$qpozaprinc = "select * from poze where id_user={$iduser} and poza_princ=1";
$rpozaprinc = mysql_query($qpozaprinc);
if (mysql_num_rows($rpozaprinc)>0){
   $row_pozaprinc=mysql_fetch_array($rpozaprinc); ?>
   <div>
    <img src="<?php echo $calepozaafisare."l_".$row_pozaprinc['nume_poza'];?>" border="0">
   </div>
<?php } ?>   

<?php
// se afiseaza pozele secundare.
$qpoze = "select * from poze where id_user={$iduser}";
$rpoze = mysql_query($qpoze);
?>
<table cellpadding="3"><tr>
<?php while ($row_poze = mysql_fetch_array($rpoze)){ ?>
<td>
  <a href="<?php echo $calepozaafisare."l_".$row_poze['nume_poza'];?>"><img src="<?php echo $calepozaafisare."t_".$row_poze['nume_poza'];?>" border="0"></a>
  <br />
  <a href="upload.php?pozaprinc=<?php echo $row_poze['nume_poza'];?>">Poza principala</a>
</td>
<?php } ?>

</tr></table>   


<?php
function nrmaxpoze($iduser, $tabel)
{
   $q="select max(ordine) as nrmaxf from " .$tabel. " where id_user={$iduser}";
   $r=mysql_query($q);
   $row=mysql_fetch_array($r);

   $nrf=$row['nrmaxf']+1;
   return $nrf;
}   


function resizefoto($poza_orig, $poza_redimensionata, $width, $height)
{
header('Content-type: image/jpeg');

list($width_orig, $height_orig) = getimagesize($poza_orig);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($poza_orig);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);


imagejpeg($image_p, $poza_redimensionata, 100);
}

?>


cam asta ar fi solutia. bineinteles, scriptul il modici sa-ti mearga tie.
te sfatuiesc sa-l incerci pe localhost

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Sâm Feb 14, 2009 11:58 pm

pff nuj kare e problema nu am scoso la capat cand dau upload la poza pe ftp si pe baza de date merge perfect dar cand sa-mi afiseze upload.php in browser nu mere afiseaza adresa www.blablalba.com/upload.php asa cum e in poza de mai jos... dar ciudat ca la unii apare corect pagina si zice si cate poze mai are:|...uite cum imi apare mie Imagine... daca nu apare poza adresa e newimobilia. com/error. jpg

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Lun Feb 16, 2009 11:38 am

postez codul aici daca cineva observa vreo greseala va rog sa imi spuneti:)

Cod: Selectaţi tot

<?php
session_start();
require_once('config.php');

if (isset($_SESSION['iduser']))
{
 $iduser = (integer) $_SESSION['iduser'];
}
else
{
   
   $cerereSQL = "SELECT * FROM `utilizatori` WHERE utilizator='".htmlentities($_SESSION['user'])."';";
   $rezultat = mysql_query($cerereSQL);
   if(mysql_num_rows($rezultat) == 1)
   {
        $rand = mysql_fetch_array($rezultat);
      $iduser = $rand['id'];
      $_SESSION['iduser'] = $iduser;
     }
     else
     {
        echo  "EROARE !";
     }
 }

if ($_FILES["fisier"]["error"] > 0) {
  echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
}else{
   $query_catepoze="Select * from poze where id_user={$iduser}";
   $result_catepoze=mysql_query($query_catepoze);

   $totalpoze=mysql_num_rows($result_catepoze);

   if ($totalpoze < 15){
     $nrpoza=nrmaxpoze($iduser, "poze");
        // daca numarul de ordine a pozei este 1 ea devine principala din oficiu
      if ($nrpoza == 1){   
           $pozaprinc=1;
        }else{
           $pozaprinc=0;
        }   
       $calepozemari="poze_mari/";
      $calepozemici="poze_mici/";   
     
      $pozeramase=15-$nrpoza;
      $numepozaup = $calepozemari.$_FILES['fisier']['name'];       // poza originala uploadata
      $numepozanew= $user."_".$nrpoza.".jpg";             // poza redenumita dupa uploadare (numai numele, fara cale)
      $pozaredusa = $calepozemari.$numepozanew;   // poza redenumita cu tot cu cale
        move_uploaded_file($_FILES["fisier"]["tmp_name"], $numepozaup);
        rename($numepozaup, $pozaredusa);
        // daca poza uploadata si redenumita exista, o salvam in baza de date
      if (file_exists($pozaredusa)) 
      {
           $query = "INSERT INTO poze (id_user, nume_poza, ordine, poza_princ) VALUES ('{$iduser}','{$numepozanew}', '{$nrpoza}', {$pozaprinc})";
           mysql_query($query) or die(mysql_error() . '<br />' . $query);
            // se creeaza 2 poze noi, astea vor ramane pe server. dupa cum vezi, numele pozei mari va incepe cu l_ iar al celei thumb cu t_
         $pozamare = $calepozemari."l_".$numepozanew;
         $pozathumb = $calepozemici."t_".$numepozanew;
         
         // dimensiunile pozelor sunt ultimii parametrii ai functiei (latime, inaltime - poti sa le pui cat vrei         
         resizefoto($pozaredusa, $pozamare, 460, 357);
         resizefoto($pozaredusa, $pozathumb, 68, 51);
         unlink($pozaredusa);       // se sterge poza originala
         echo 'Mai puteti incarca  poze';
      }
      
   }else{
            echo 'Nu puteti incarca decat maximum 15 poze';
      }
   }
?>


<?php
function nrmaxpoze($iduser, $tabel)
{
   $q="select max(ordine) as nrmaxf from " .$tabel. " where id_user={$iduser}";
   $r=mysql_query($q);
   $row=mysql_fetch_array($r);

   $nrf=$row['nrmaxf']+1;
   return $nrf;
}   


function resizefoto($poza_orig, $poza_redimensionata, $width, $height)
{
header('Content-type: image/jpeg');

list($width_orig, $height_orig) = getimagesize($poza_orig);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($poza_orig);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);


imagejpeg($image_p, $poza_redimensionata, 100);
}

?>

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Lun Feb 16, 2009 4:30 pm

daca ne zici si care e problema poate ne prindem

+ htmlentities nu e recomandat in cereri SQL pentru ca transforma caractere nedorit in alte caractere ;)

e indicat sa pui codul cu problema, nu toata gramada de litere [read rules!!!]

[ca un mic offtopic] nu inteleg de ce s-a vorbit 3 pagini pe baza unui mic script [chiar nu ma intereseaza] dar un lucru e clar: nu ai habar ce reprezinta debug si, ar trebui sa inveti in timp pentru ca sunt probleme care nu se rezolva pe forum ;)

bafta!


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 28 vizitatori