Phorum.ro
Your Avatar Welcome to Phorum.ro!
If you haven't registered yet, click here!
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.
Du-te înapoi   Phorum.ro > Web Design & Web Development > Programare > PHP > PHP DB

PHP DB Discutii despre lucrul cu baze de date in PHP.

Răspunde
 
Thread Tools Moduri de afișare
Vechi 17.03.2007   #1
admarnic
8-Bit Member
 
Data înregistrării: 17.03.2007
Mesaje: 1
Rep Power: 6
admarnic is on a distinguished road
Implicit Link in mysql (unde gresesc?)

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>";
?>
admarnic is offline   Reply With Quote
Sponsored Links
Vechi 17.03.2007   #2
Luxian
Spamofob
 
Luxian's Avatar
 
Data înregistrării: 26.06.2006
Locație: Timișoara
Vârsta: 25
Mesaje: 398
Rep Power: 6
Luxian is on a distinguished road
Trimite un mesaj prin Yahoo pentru Luxian
Implicit

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
Luxian is offline   Reply With Quote
Răspunde


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Moduri de afișare

Reguli de postare
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Pornit
emoticoanele sunt Pornit
Codul [IMG] este Pornit
Codul HTML este Oprit



Ora este GMT +3. Ora este acum 01:32:22.


Rulează cu: vBulletin Version 3.8.4
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Forum SEO by Zoints

XXXXXXXXXXXXXXXXXXX
Inactive Reminders By Icora Web Design