Hennikenno Posted August 13, 2009 Report Share Posted August 13, 2009 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! Quote Link to comment Share on other sites More sharing options...
marcis Posted August 13, 2009 Report Share Posted August 13, 2009 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 Quote Link to comment Share on other sites More sharing options...
404 Posted August 13, 2009 Report Share Posted August 13, 2009 (edited) 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 August 13, 2009 by 404 Quote Link to comment Share on other sites More sharing options...
Hennikenno Posted August 14, 2009 Author Report Share Posted August 14, 2009 (edited) 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 August 14, 2009 by Hennikenno Quote Link to comment Share on other sites More sharing options...
404 Posted August 14, 2009 Report Share Posted August 14, 2009 Šāds variants ierakstu uzzināšanai neder? $skaits=mysql_result(mysql_query("SELECT COUNT(*) FROM ads"),0,0); Quote Link to comment Share on other sites More sharing options...
marcis Posted August 14, 2009 Report Share Posted August 14, 2009 Vienkāršāks veids būtu COUNT() vai SQL_CALC_FOUND_ROWS + SELECT FOUND_ROWS(). Tavā gadījumā varētu derēt arī mysql_num_rows(), jo netiek izmantots LIMIT. Bet vispār neredzu, ka kaut kur pēc cikla vēl būtu izmantots ierakstu skaits. Quote Link to comment Share on other sites More sharing options...
Artuuro_lv Posted August 18, 2009 Report Share Posted August 18, 2009 es personiigi lietoju bez datubaazes :D man taa liekas drosaaak, man visa info no cfg failiem lasaas.. sisteema ar citadaka.. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.