Чуденка с едни checkbox-ове и submit...

t0m3kk

Registered
Здравейте, преди да дам код ще се опитам да ви обясня какво искам да направя, а то е следното:
Примерно в база данни имам запис от 5 снимки, като в страницата, в която ще ги изкарвам под снимките ще излизат и по 1 checkbox-че за всяка снимка, като се цъкне на дадената снимка, нейното чекбоксче се маркира (при повторен клик се маркера изчезва), но при submit искам на маркираните снимки (всички маркирани) да се прави промяна в поленцето в база данни, а именно - recycle. По принцип поленцето е с default стойност "0", но ако снимката е маркира искам стойноста да се променя на 1...

А сега ето и малко код:
index.php
Код:
<?php
header("Content-Type: text/html; charset=UTF-8");
include("config.php");

echo "
<html>
<head>
	<title>recycle bin</title>
	<link type=\"text/css\" rel=\"stylesheet\" href=\"style.css\" />
</head>
<body>
";

$query = "SELECT * FROM `photos` WHERE `recycle`='0' ORDER BY `id` ASC";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo "
<div class=\"images\">
<div class=\"image\"<label for=\"persistent{$row['id']}\" id=\"label_persistent\"><img src=\"image.php?image={$row['location']}\" /></label></div>
<div class=\"check\"><input type=\"checkbox\" name=\"persistent{$row['id']}\" id=\"persistent{$row['id']}\" value=\"1\"></div>
</div>
";
}
echo "
</body>
</html>
";

?>

image.php (скрипта за оразмеряване на снимките)
Код:
<?php

$max_width = 150; //Максимална широчина на thumb-овете
$max_height = 150; //Максимална височина на thumb-овете

$upfile = $_GET['image'];
$type = getimagesize($upfile);

    Header("Content-type: ".$type['mime']."");
   
    $size = getimagesize($upfile);
          $width = $size[0];
          $height = $size[1];
         
          $x_ratio = $max_width / $width;
          $y_ratio = $max_height / $height;

          if( ($width <= $max_width) && ($height <= $max_height) )
          {
               $tn_width = $width;
               $tn_height = $height;
          }
          elseif (($x_ratio * $height) < $max_height)
          {
               $tn_height = ceil($x_ratio * $height);
               $tn_width = $max_width;
          }
          else
          {
               $tn_width = ceil($y_ratio * $width);
               $tn_height = $max_height;
          }
    
     ini_set('memory_limit', '1024M');
    
if($type['mime'] == "image/jpeg") {
    $src = imagecreatefromjpeg($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagejpeg($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
elseif($type['mime'] == "image/png") {
    $src = imagecreatefrompng($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagepng($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
elseif($type['mime'] == "image/gif") {
    $src = imagecreatefromgif($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagegif($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
elseif($type['mime'] == "image/bmp") {
    $src = imagecreatefrombmp($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagebmp($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
?>

style.css
Код:
.images {
float: left;
margin-right: 5px;
}

sql.sql
Код:
CREATE TABLE IF NOT EXISTS `photos` (
  `id` int(11) NOT NULL auto_increment,
  `location` text collate utf8_unicode_ci NOT NULL,
  `recycle` int(1) default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `photos` (`id`, `location`, `recycle`) VALUES
(1, 'http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs107.snc3/15453_1257243320653_1516736707_30677639_5659748_n.jpg', 0),
(2, 'http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs107.snc3/15453_1267014044915_1516736707_30700211_4604543_n.jpg', 0),
(3, 'http://sphotos.ak.fbcdn.net/hphotos-ak-ash1/hs543.ash1/31744_1429580628978_1516736707_31060775_5436280_n.jpg', 0),
(4, 'http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs082.snc3/15027_1370252265806_1516736707_30931870_5645402_n.jpg', 0),
(5, 'http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs435.snc3/25051_1344524742634_1516736707_30881454_8052965_n.jpg', 0);


В кода, не съм сложиш submit-а, защото точно преди да го сложа дойде голямата чуденка... А й също така, ако може да се изкарват по 4 снимки на ред, след 4-тата, другите 4 да минават също на нов ред...

Поздрави!
 
правиш на чекбокса името като масив (name="check[]") и после въртиш един цикъл за $_POST['check'] и правиш заявка.
 
index.php

<?php
header("Content-Type: text/html; charset=UTF-8");
include("config.php");

echo "
<html>
<head>
<title>recycle bin</title>
<link type=\"text/css\" rel=\"stylesheet\" href=\"style.css\" />
</head>
<body>
";

$query = "SELECT * FROM `photos` WHERE `recycle`='0' ORDER BY `id` ASC";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$id = $row['id'];
$location = $row['location'];
echo "
<div class=\"images\">
<div class=\"image\"<label for=\"persistent$id\" id=\"label_persistent\"><img src=\"image.php?image=$location\" /></label></div>
<div class=\"check\"><input type=\"checkbox\" name=\"id[]\" value=\"$id\"></div>
</div>
"; }
echo "
</body>
</html> ";

?>

После след като се натисне бутона правиш това:

$id = $_POST['id'];
foreach ($id as $current)
{
$a = mysql_query("SELECT * FROM photosh WHERE id='$current'") or die(mysql_error());
$b = mysql_fetch_array($a);
$recycle = $b['recycle'];
if ($recycle == "0")
{
mysql_query("UPDATE photos SET recycle='1' WHERE id='$current'");
}
}

А това за маркирането , като натиснеш снимката , ще е нещо с js според мен.
За него немога да ти помогна.
 

Back
Горе