Jump to content
php.lv forumi

Banneru rotācija un uzglabāšana datubāzē


Hennikenno

Recommended Posts

sql:

 

CREATE TABLE IF NOT EXISTS `ads` (
 `id` int(10) NOT NULL auto_increment,
 `name` varchar(100) NOT NULL,
 `url` varchar(100) NOT NULL,
 `alt` varchar(100) NOT NULL,
 `img` text NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=23 ;

 

 

banneru pievienošana un dzēšana (pieņemot kā banner.php)

 

$delad = "delad";
$takead = "takead";

$act = $_GET['act'];

if($act == $delmad)
{
$id = 0 + $_GET['id'];
mysql_query("DELETE FROM mads WHERE id = $id")or die(mysql_error());
header("Location: banner.php");
}

elseif($act == $takemad)
{
$name = sqlesc($_POST['name']);
$url = sqlesc($_POST['url']);
$alt = sqlesc($_POST['alt']);
$img = sqlesc($_POST['img']);
mysql_query("INSERT INTO mads (name , url , alt , img) VALUES ($name , $url , $alt , $img)")or die(mysql_error());
header("Location: banner.php");
}

$res = mysql_query("SELECT * FROM ads ORDER BY id")or die(mysql_error());
$total = mysql_num_rows($res);
$count = 0;
if($total >= 1)
{
while($arr = mysql_fetch_array($res))
	{
	echo"<a href=\"".$arr['url']."\"><img src=\"".$arr['img']."\" alt=\"".$arr['alt']."\" /></a><br/>";
	$id = $arr['id'];
	echo"<a href=\"banner.php?act=delad&id=$id\">Delete this advert</a>";
	$count = $count + 1;
	if($total > $count)
		{
		echo"<br/><br/><hr><br/>";
		}
	}
}
else
{
echo"No adverts added";
}

echo"</div>";
echo"<h2>Make new advert</h2>";
echo"<div class=\"block\">";
echo"<form method=\"post\" action=\"banner.php?act=takead\">";
echo"<table><tr><td>";
echo"<input type=\"text\" name=\"name\" value=\"Type in name of this ad\" size=\"50\" maxlength=\"100\" />";
echo"</td></tr><tr><td>";
echo"<input type=\"text\" name=\"img\" value=\"Type in url of image\" size=\"50\" />";
echo"</td></tr><tr><td>";
echo"<input type=\"text\" name=\"url\" value=\"Type in url of this ad\" size=\"50\" maxlength=\"100\" />";
echo"</td></tr><tr><td>";
echo"<input type=\"text\" name=\"alt\" value=\"Type in alt text for this ad\" size=\"50\" maxlength=\"100\" />";
echo"</td></tr><tr><td>";
echo"<input type=\"submit\" value=\"Send\" />";
echo"</td></tr></table></form>";
echo"</div>";

 

 

Un banneru parādīšana:

 

$ad_res = mysql_query("SELECT * FROM ads ORDER BY id")or die(mysql_error());

if(mysql_num_rows($ad_res) >= 1)

{

$url = array();
$img = array();
$alt = array();

$count = 0;

while($ad_arr = mysql_fetch_array($ad_res))
	{
	$count = $count + 1;
	$url[$count] = $ad_arr['url'];
	$img[$count] = $ad_arr['img'];
	$alt[$count] = $ad_arr['alt'];
	}

$count = mysql_num_rows($ad_res);

$chosen = mt_rand(1, $count);

$adurl = $url[$chosen];
$adimg = $img[$chosen];
$admsg = $alt[$chosen];

echo"<h2>Our supporters:</h2>";
echo"<div class=\"block\">";
echo"<table style=\"margin:auto;\"><tr><td>";
echo"<a href=\"$adurl\" target=\"_blank\"><img border=\"0\" src=\"$adimg\" alt=\"admsg\" /></a>";
echo"</td></tr></table></div><br/>";

}

 

 

 

ps. Kad rakstīju skriptu, man viņš bija pielāgots manam webam un bija pa vairākiem failiem. Pašlaik visu saliku šādi + noņēmu funkciju, kas nočekjoa, vai lietotāji ir ielogojies kā administrātors. To visu lieciet klāt paši. Ceru, ka neko neaizmirsu piebilst!

Link to comment
Share on other sites

Banneru izvadei gan tev ir tāda interesanta pieeja...

 

* Sāksim ar $count mainīgo - kāda šo mainīgo pēc cikla pārdefinēt, iesetojot tādu pašu vērtību, kāda viņam jau ir?

* Priekš kam vispār tev ciklā to $count skatīt? $var[] = $value; un vēl labāk būtu izmantot daudz dimensiju masīvu -> $arr[] = array('url' => $url...);

* Random atslēgu varam iegūt ar array_rand() funkciju, tāds mainīgais kā $count vispār nebūs vajadzīgs

* Ja jau tev vajadzīgs tikai viens ieraksts, tad kāpēc selektēt visus? ORDER BY RAND() LIMIT 1

Link to comment
Share on other sites

Vieta

  $id = 0 + $_GET['id']; 

un id tālāka izmantošana kverijā izskatās aizdomīgi.Šādi laikam būtu drošāk

 $id = 0 + intval($_GET['id']); 

 

Edit: Kļūdījos.Pieskaitot skaitli injekcijas draudi it kā pazūd.Bet nu kaut vai principa pēc var izfiltrēt :)

Edited by 404
Link to comment
Share on other sites

Banneru izvadei gan tev ir tāda interesanta pieeja...

 

* Sāksim ar $count mainīgo - kāda šo mainīgo pēc cikla pārdefinēt, iesetojot tādu pašu vērtību, kāda viņam jau ir?

* Priekš kam vispār tev ciklā to $count skatīt? $var[] = $value; un vēl labāk būtu izmantot daudz dimensiju masīvu -> $arr[] = array('url' => $url...);

* Random atslēgu varam iegūt ar array_rand() funkciju, tāds mainīgais kā $count vispār nebūs vajadzīgs

* Ja jau tev vajadzīgs tikai viens ieraksts, tad kāpēc selektēt visus? ORDER BY RAND() LIMIT 1

 

 

Nu esmu amatieris php valodā un rakstu kā pats māku, tāpēc jau arī kautko cenšos ielikt te, vai pajautāt, lai noskaidrotu, kā labāk ;)

 

ps. Par to visu ierakstu selektēšanu - vajag noskaidrot, cik banneri ir pievienoti datubāzē, tāpēc tiek paņemti visi un tad saskaitīti. Ja ir vienkāršāks veids - lūdzu paskaidro man

Edited by Hennikenno
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...