![]() |
|
|||||||||
|
|||||||||
|
| Attention Visitor: |
| You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
||||||
| PHP DB Discutii despre lucrul cu baze de date in PHP. |
![]() |
|
|
Thread Tools | Moduri de afișare |
|
|
#1 |
|
8-Bit Member
Data înregistrării: 17.03.2007
Mesaje: 1
Rep Power: 6 ![]() |
Incerc dupa ce am citit mai multe tutorialuri si exemple de pe forumuri sa introduc niste date si o poza (numai denumirea ei si link-ul) intr-o baza de date, si in acelasi timp poza sa se stocheze intr-un folder de pe server, atat in forma mare cat si thumbnail.
Am reusit sa introduc poza redimensionata (mare si mica) in folderul de pe server,dar in baza de date nu intra decat campurile nume si prenume iar la poza nu intra nimic. Poate cineva sa-mi explice ce este gresit in partea de introducere in baza de date (pentru ca restul merge perfect) Mai jos redau in totalitate scripturile folosite Baza de date este: -- -- Table structure for table `tabel1` -- CREATE TABLE `tabel1` ( `id` bigint(20) NOT NULL auto_increment, `nume` varchar(50) collate latin1_general_ci NOT NULL, `prenume` varchar(50) collate latin1_general_ci NOT NULL, `image` varchar(50) collate latin1_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=62 ; ----------------------------------- Formul de introducere este: <form method="POST" action="insereaza_cu_poza_thumb.php" encType="multipart/form-data"> <p><font face="Arial" size="2"><b>Numele</b></font><input type="text" name="nume" size="20"></p> <p><font size="2" face="Arial"><b>Prenumele</b></font> <input type="text" name="prenume" size="20"></p> <p><b><font size="2" face="Arial">Poza <input type="file" name="image" ACCEPT="image/gif, image/jpeg, image/jpg"> </font></b></p> <p><input type="submit" value="Trimite" name="B1"><input type="reset" value="Reset" name="B2"></p> </form> ------------------------------ insereaza_cu_poza_thumb.php, este: <?php ################################################## ########################################### $IMG_ORG_HEIGHT = 300; #Inaltimea imaginii originale stocate pe server $IMG_ORG_WIDTH = "*"; #Latimea imaginii originale stocate pe server #se seteaza "*" pentru a preveni deformarea dupa dimensiunea fixata #in acest fel se pastreaza proportiile imaginii $IMG_HEIGHT = "*"; # Inaltimea dorita pt imaginile micsorate $IMG_WIDTH = 150; # Latimea dorita pt imaginile micsorate #se seteaza "*" pentru a preveni deformarea dupa dimensiunea fixata $IMG_ROOT = "images"; # Calea relativa catre folderul unde vor fi stocate imaginile pe server; atentie! fara "/" la sfarsit # Exemplu: $IMG_ROOT = "./images"; # Nu uitati sa setati drepturile de scriere in acel folder de pe server. 777 spre ex ![]() $use_imagecreatetruecolor = false; // inctiveaza ImageCreateTrueColor(); ImageCopyResampled(); $use_imagecopyresampled = false; // pentru serverele care nu permit aceasta facilitate... $JPG_QUALITY = 90; // calitatea jpg a pozelor finale ################################################## ########################################### if(!$HTTP_POST_FILES ["image"]["tmp_name"] || $HTTP_POST_FILES ["image"]["tmp_name"] =="none") die("Va rugam uploadati doar poze legale.<br>"); if( ! $f_org = resizer_main("image","",$IMG_ORG_WIDTH,$IMG_ORG_HE IGHT))die("<br><font color=\"red\"><b>Nu s-a receptionat nici o imagine...</b></font><br>"); if( ! $f_res = resizer_main("image","th_",$IMG_WIDTH,$IMG_HEIGHT) )die("<br><font color=\"red\"><b>Nu a fost facuta redimensionarea .</b></font><br>"); $sz_org =getimagesize( "$IMG_ROOT/$f_org" ); $sz_res =getimagesize( "$IMG_ROOT/$f_res" ); $fs_org= filesize("$IMG_ROOT/$f_org" ); $fs_res= filesize("$IMG_ROOT/$f_res" ); ################################################## ########################################### function resizer_main($image, $dest_file_prefix,$w, $h){ //image_name = imaginea uploadata. numele sau "file field" din formular. //w,h - latimea si inaltimea in care sa se incadreze imaginea global $use_imagecreatetruecolor, $use_imagecopyresampled, $IMG_ROOT, $JPG_QUALITY, $HTTP_POST_FILES; $image_name = $HTTP_POST_FILES [$image]["name"]; $image = $HTTP_POST_FILES [$image]["tmp_name"]; if(trim($image) == "" || trim($image) =="none") return false; $arr_img = image_from_upload($image); if( $arr_img["w"] != $w && $arr_img["h"] != $h){ $wh = get_sizes($arr_img["w"], $arr_img["h"], $w, $h); $img_res = img_get_resized( $arr_img["img"], $arr_img["w"], $arr_img["h"], $wh["w"], $wh["h"], $use_imagecreatetruecolor, $use_imagecopyresampled); } else { //dupa ce s-a redimensionat!!! $img_res = $arr_img["img"]; } $file_name = make_filename($image_name, $dest_file_prefix); ImageJPEG($img_res,"$IMG_ROOT/$dest_file_prefix$file_name", $JPG_QUALITY); return "$dest_file_prefix$file_name"; } function image_from_upload($uploaded_file){ $img_sz = getimagesize( $uploaded_file ); ## returneaza array cu unele proprietati ale imaginiicum ar fi dimensiune si tip; ####### Acum va fi creata imaginea originala care v-a ramane pe server, din imaginea care a fost uploadata. Sunt preferabile imaginile cu extensia .jpg switch( $img_sz[2] ){ case 1: $img_type = "GIF"; $img = ImageCreateFromGif($uploaded_file); break; case 2: $img = ImageCreateFromJpeg($uploaded_file); $img_type = "JPG"; break; case 3: $img = ImageCreateFromPng($uploaded_file); $img_type = "PNG"; break; case 4: $img = ImageCreateFromSwf($uploaded_file); $img_type = "SWF"; break; case 5: $img = ImageCreateFromBmp($uploaded_file); $img_type = "BMP"; break; default: die("<br><font color=\"red\"><b>Ne pare rau, Acest tip de imagine nu este inca suportata.</b></font><br>"); }//case return array("img"=>$img, "w"=>$img_sz[0], "h"=>$img_sz[1], "type"=>$img_sz[2], "html"=>$img_sz[3]); } function get_sizes($src_w, $src_h, $dst_w,$dst_h ){ //src_w ,src_h-- incepe cu latimea si inaltimea //dst_w ,dst_h-- se termina cu latimea si inaltimea //return array w=>noua latime h=>noua inaltime mlt => factor de multiplicare //functiile incearca sa modifice imaginea src_w,h in asa fel incat sa se potriveasca in dst_w,h //pastrand intacte proportiile x si y //dst_w si/sau dst_h pot fi "*" si atunci inseamna ca acea dimensiune nu conteaza pentru noi //spre ex daca dst_w="*" atunci se va incerca redimensionarea inaltimii fara a se tine cont de latime //(cu toate acestea proportia x/y ramane constanta) //daca amandoua sunt = "*" nu redimensionam nimic. #### Calculeaza multiplicarea $mlt_w = $dst_w / $src_w; $mlt_h = $dst_h / $src_h; $mlt = $mlt_w < $mlt_h ? $mlt_w:$mlt_h; if($dst_w == "*") $mlt = $mlt_h; if($dst_h == "*") $mlt = $mlt_w; if($dst_w == "*" && $dst_h == "*") $mlt=1; #### Calculeaza noile dimensiuni $img_new_w = round($src_w * $mlt); $img_new_h = round($src_h * $mlt); return array("w" => $img_new_w, "h" => $img_new_h, "mlt_w"=>$mlt_w, "mlt_h"=>$mlt_h, "mlt"=>$mlt); } function img_get_resized($img_original,$img_w,$img_h,$img_n ew_w,$img_new_h,$use_imagecreatetruecolor=false, $use_imagecopyresampled=false){ //$img_original, -- imaginea de redimensionat //$img_w, -- latimea imaginii de redimensionat //$img_h, -- inaltimea imaginii de redimensionat //$img_new_w, -- latimea imaginii redimensionate //$img_new_h -- inaltimea imaginii redimensionate //$use_imagecreatetruecolor, $use_imagecopyresampled permite utilizarea acestor functii //daca exista pe server if( $use_imagecreatetruecolor && function_exists("imagecreatetruecolor")){ // echo("Utilizand ImageCreateTruecolor (calitate mai buna a imaginii)<br>"); $img_resized = imagecreatetruecolor($img_new_w,$img_new_h) or die("<br><font color=\"red\"><b>Failed to create destination image.</b></font><br>"); } else { // echo("Utilizand ImageCreate (calitate obisnuita a imaginii)<br>"); $img_resized = imagecreate($img_new_w,$img_new_h) or die("<br><font color=\"red\"><b>Failed to create destination image.</b></font><br>"); } if($use_imagecopyresampled && function_exists("imagecopyresampled")){ // echo("Utilizand ImageCopyResampled (calitate mai buna a imaginii)<br>"); imagecopyresampled($img_resized, $img_original, 0, 0, 0, 0,$img_new_w, $img_new_h, $img_w,$img_h) or die("<br><font color=\"red\"><b>Failed to resize @ ImageCopyResampled()</b></font><br>"); }else{ // echo("Utilizand ImageCopyResized (calitate obisnuita a imaginii)<br>"); imagecopyresized($img_resized, $img_original, 0, 0, 0, 0,$img_new_w, $img_new_h, $img_w,$img_h) or die("<br><font color=\"red\"><b>Failed to resize @ ImageCopyResized()</b></font><br>"); } return $img_resized; } function make_filename($image_name){ ## creeaza nume unice, si se poate considera ca nu este posibil sa se uploadeze o daoua poze identice in aceeasi secunda. ## exista mai multe moduri in care se creeaza nume unice. Spre exemplu functiile time(), sau uniqueid(). $file_name = time()."_$image_name"; #se anuleaza extensia originala $pos = strrpos($file_name, '.'); //se introduce extensia .jpg $file_name = substr($file_name, 0,$pos).".jpg"; return $file_name; echo"$file_name"; } ################################################## ########################################### //de aici introducerea in baza de date $link=mysql_connect('localhost','root',''); mysql_select_db("tabel",$link); $result=mysql_query("insert into tabel1 values ('','${HTTP_POST_VARS['nume']}','${HTTP_POST_VARS['prenume']}','${HTTP_POST_VARS['$IMG_ROOT/$file_name']}')",$link); mysql_close($link); echo "OK!" ; echo "<a href=\"afiseaza.php\">afiseaza baza de date</a>"; ?> |
|
|
|
| Sponsored Links |
|
|
#2 |
|
Spamofob
|
Verifica unde ai scris:
${HTTP_POST_VARS['$IMG_ROOT/$file_name']} // in interogarea sql Cred ca trebuia ceva de genu: $IMG_ROOT.$file_name sau simplu $file_name din moment ce directorul e unul singur nu a are rost sa-l retii in baza de date. Si din cate stiu eu in loc de ${HTTP_POST_VARS['nume']} poti sa folosesti simplu $_POST['nume'].
__________________
www.luxian.ro | "Prieten e cel care te învață să pescuiești, nu cel care îți dă pește!" Oo==oO | w210 owner |
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Moduri de afișare | |
|
|