Skrypt dodaje zdjęcie z opisem dla danego użytkownika.
Funckaj dodatkowo pobiera $smarty ale jeśli ich nie używacie wywalcie to.
// Table SQL z konfiguracją obrazków
grupa - to grupa użytkowniak który dodaje fotke
img_count - to limit ilości zdjęć dla tej grupy
img_size - to maksymalny rozmiar jednego zdjęcia dla tej gupy
CREATE TABLE `img_conf` (
`grupa` varchar(20) NOT NULL,
`img_count` int(11) NOT NULL,
`img_size` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `img_conf` VALUES ('user', 4, 2000);
//Tablea SQL z użytkownikami
To przykładowa tabela użytkoników
CREATE TABLE `users` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ip` varchar(20) NOT NULL,
`data` varchar(20) NOT NULL,
`act` tinyint(1) NOT NULL,
`login` varchar(30) NOT NULL,
`mail` varchar(80) NOT NULL,
`haslo` varchar(255) NOT NULL,
`grupa` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
//Tabela SQL przechowująca obrazki użytkowników
username - to login użytkownika który dodał obrazek
main - to wartość oznaczająca czy zdjęcie jest zdjęciem głownym użytkownika
CREATE TABLE `img` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` varchar(100) NOT NULL,
`url` varchar(250) NOT NULL,
`opis` text NOT NULL,
`main` tinyint(1) NOT NULL,
`data` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;
//Kod HTML do dodawania plików
<form action="dodaj_zdjecie.php" enctype="multipart/form-data" method="post">
<table border="0" >
<tbody>
<tr>
<td><input name="plik" type="file">
</td>
</tr>
<tr>
<td><b>Opis zdjęcia</b><br>
<input name="opis" type="text">
</td>
</tr>
<tr>
<td>
<input value="dodaj zdjęcie" type="submit">
</td>
</tr>
</tbody></table>
</form>
Listing
function lacz_bd()
{
$db = new mysqli('localhost', 'uzytkownik', 'haslo', 'nazwa_bazy');
if (! $db)
return false;
$db->autocommit(TRUE);
return $db;
}
function dodaj_zdjecie($smarty){
if($_SESSION['user']){
//pobieramy nazwę użytkownika
$user = $_SESSION['user'];
$db = lacz_bd();
$zapytanie = "Select b.img_count, b.img_size from users AS a LEFT JOIN img_conf AS b on a.grupa=b.grupa where a.login='$user' ";
$wynik = $db->query($zapytanie);
$wiersz = $wynik->fetch_assoc();
$img_count = stripslashes($wiersz['img_count']);
$img_size = stripslashes($wiersz['img_size']);
$zapytanie = "Select id from img where username='$user' ";
$wynik = $db->query($zapytanie);
$ilosc = $wynik->num_rows;
if($_FILES['plik']['name']&&$_REQUEST['opis']){
if($ilosc<$img_count){
$opis = $_REQUEST['opis'];
$wielkoscPliku = $_FILES['plik']['size']/1000;
if($wielkoscPliku<=$img_size){
$rand = rand(10000,99999);
$plik= pathinfo($_FILES['plik']['name']);
$rozszerzenie = strtolower($plik["extension"]);
if (($rozszerzenie == 'jpg')||($rozszerzenie == 'jpeg')||($rozszerzenie == 'gif')||($rozszerzenie == 'png')){
if(!file_exists('users_gallery/'.$user)) mkdir('users_gallery/'.$user, 0755);
if (is_uploaded_file($_FILES['plik']['tmp_name'])){
if(move_uploaded_file($_FILES['plik']['tmp_name'],'users_gallery/'.$user.'/'.$rand.$_FILES['plik']['name'])){
$nazwa_pliku = $rand.$_FILES['plik']['name'];
$zapytanie = "Select id from img where username='$user' ";
$wynik = $db->query($zapytanie);
$ilosc = $wynik->num_rows;
if($ilosc==0)$main='1'; else $main='0';//sprawdza czy zdjęcie ma być główną fotką
$zapytanie = "INSERT INTO img ( id , username , url , opis , main , data )VALUES (NULL , '$user', '$nazwa_pliku', '$opis', '$main', NOW( ))";
$wynik = $db->query($zapytanie);
$smarty->assign("dodaj_zdjecie", "1");
}else{
$smarty->assign("dodaj_zdjecie", "2");
//echo '6';
}
}else{
$smarty->assign("dodaj_zdjecie", "3");
//echo '5';
}
}else{
$smarty->assign("dodaj_zdjecie", "4");
//echo '4';
}
}else{
$smarty->assign("dodaj_zdjecie", "5");
//echo '3';
}
}else{
//echo '2.1';
$smarty->assign("dodaj_zdjecie", "7");
}
}else{
//echo '2';
$smarty->assign("dodaj_zdjecie", "6");
}
}else{
//echo '1';
$smarty->assign("dodaj_zdjecie", "8");
}
}
//Jeśli wysłano plik to odpalamy funkcje dodającą
if($_FILES['plik']['name']) dodaj_zdjecie($smarty);
?>
Ranga: Administrator serwisu Punktów: 0