Jump to content
php.lv forumi

Hennikenno

Reģistrētie lietotāji
  • Posts

    27
  • Joined

  • Last visited

Hennikenno's Achievements

Newbie

Newbie (1/14)

  1. Nu jā, tas laikam visu izskaidro... Paldies ;)
  2. Sveiki. Man ir tāda problēma, ka uzrakstīju dziesmu topu kodu, bet kā vienmēr kautkur ir kāda kļūda kuru nu es nekādīgi nevaru atrast. Tātad šeit ir kods: <?php require_once "core/main.php"; checklogin(); draw_head("Charts", "charts"); ?> <h1>Some charts:</h1> <? $chart_res = sql_query("SELECT * FROM charts ORDER BY id DESC"); if(mysql_num_rows($chart_res) >= 1) { while($chart_arr = mysql_fetch_array($chart_res)) { $id = $chart_arr["id"]; $sql_id = sqlesc($id); $name = $chart_arr["name"]; ?> <div class="chart_entry"> <a href="javascript: collapse('a<? echo "$id"; ?>')"><? echo "$name"; ?></a> <div id="ka<? echo "$id"; ?>" class="chart_entry_info" style="display: none;"> <? if($chart_arr["onair"] == "yes") { ?> <b>Broadcast:</b> <? echo $chart_arr["broadcast"]; ?><br/><br/> <? } $ip = getip(); $sql_ip = sqlesc($ip); $once = $chart_arr["voteonce"]; $curdate = date('d.m.Y'); $an_res = sql_query("SELECT * FROM chart_an WHERE chid = $sql_id AND ip = $sql_ip")or die(mysql_error()); if(mysql_num_rows($an_res) >= 1) { $last_an_res = sql_query("SELECT date FROM chart_an WHERE chid = $sql_id AND ip = $sql_ip ORDER BY date DESC LIMIT 1")or die(mysql_error()); $last_an_row = mysql_fetch_assoc($last_an_res); if($once == "yes") { $voted = true; } elseif($last_an_row["date"] == $curdate) { $voted = true; } else { $voted = false; } } else { $voted = false; } if($voted = false) { $op_res = sql_query("SELECT * FROM chart_op WHERE chartid = $sql_id ORDER BY id ASC")or die(mysql_error()); ?> <form method="post" action="charts.php?act=vote"> <? while($op_arr = mysql_fetch_assoc($op_res)) { ?> <input type="radio" name="choice" value="<? echo $op_arr["id"]; ?>" /> <? echo $op_arr["option"]; ?><br/> <? } ?> <input type="submit" value="Vote!" /> </form> <? } elseif($chart_arr["show"] != "yes") { ?> <p>Chart results are hidden. Thanks for voting!</p> <? } else { $op_res = sql_query("SELECT * FROM chart_op WHERE chartid = $id ORDER BY id ASC")or die(mysql_error()); $an_tot_res = sql_query("SELECT id FROM chart_an WHERE chid = $sql_id")or die(mysql_error()); $total_votes = mysql_num_rows($an_tot_res); while($op_arr = mysql_fetch_array($op_res)) { $count = $count + 1; $op_id = $op_arr["id"]; $an_res = sql_query("SELECT id FROM chart_an WHERE opid = $op_id")or die(mysql_error()); $votes = mysql_num_rows($an_res); if($total_votes != 0) { $vote_perc = $votes / $total_votes * 100; $vote_perc = round($vote_perc,1); } else { $vote_perc = 0; } ?> <? echo "$count"; ?>. "<? echo $op_arr["option"]; ?>" <? echo "$votes"; ?> votes (<? echo "$vote_perc"; ?>%)!<br/> <? } ?> <div class="center"> <i>There are total <? echo "$total_votes"; ?> votes on this chart!</i> </div> <? } ?> </div> </div> <? } } else { ?> <h3>There are no charts at current moment!</h3> <? } draw_foot(); ?> Kodā ir vairākas paša rakstītas funkcijas, kuras gan nav nepieciešams pievienot, jo tās strādā nevainojami citos skriptos un nav arī nozīmes, ko tās dar (ja neskaita sql_query() - tā aizvieto mysql_query() + piereģistrē katru izpildīto sql kveriju). Problēma kodā ir šāda: Ja lietotājs nav balsojis, tad vajadzētu parādīt balsošanas formu. Ja ir balsojis, bet tops atļauj balsot katru dienu un pēdējā lietotāja bals nav bijusi šodien, tad arī parāda balsošanas formu. Citos gadījumos (ja tops atļauj) tiek parādīti rezultāti! Bet manā gadījumā, lietotājs nav nobalsojis, bet tikuntā rāda balsošanas rezultātus, nevis balsošanas formu (sk. $voted = true / false)! Kur ir kļūda, kuru es, vairākkārt pārskatot, neesmu atradis?
  3. Man jau tas # tur netraucē atvērt citus linkus, bet nu paldies par ieteikumu, šitais noderēs, ja vajadzēs ;)
  4. Domā šādi? : var answer = confirm("Do you realy want to delete " + subject) ps. Es jau nezinu, kā savienojami divi mainīgie iekš js, tāpēc arī prasu palīdzību šeit ;) Esmu tikai paklausīgs māceklis :D pss. Eju notestēt, vai šādi strādās...! psss. Firebug arī parāda js sintakses kļūdas? Būs jānočeko EDIT: super, izdevās, paldies!
  5. Sveiki. Šis ir pirmais mans mēģinājums pašam kautko uz javascript rakstīt. Tad nu man ir hipersaite, kurai uz onclick ir uzlikta iepriekš nodefinēta javasscript komanda, kas attiecīgi pieprasa apstiprinājumu un vajadzības gadījumā pārsūta lietotāju uz dzēšanas linku. Protams man te kautkas nestrādā, kā es vēlētos (vispār js netiek izpildīts, uzspiežu uz linka, nekas nenotiek). Šeit ir kā tas aptuveni izskatās: <script type="text/javascript"> function confirm_news_delete(id , subject) { var answer = confirm("Do you realy want to delete " subject) if (answer) { alert("Deleting...") window.location = "a_news.php?act=delete&id=" id; } else { alert("Canceled...") } } </script> <? $news_res = sql_query("SELECT * FROM zinas ORDER BY id DESC")or die(mysql_error()); if(mysql_num_rows($news_res) >= 1) { while($news_arr = mysql_fetch_array($news_res)) { $added = $news_arr["added"]; $subject = $news_arr["subject"]; $id = $news_arr["id"]; ?> <h3><? echo "$added"; ?> :: <? echo "$subject"; ?> :: <a href="a_news.php?act=edit&id=<? echo "$id"; ?>">Edit</a> / <a href="#" onclick="confirm_news_delete('<? echo "$id"; ?>','<? echo "$subject"; ?>')" >Delete</a></h3> <? } } Kur šajā visā esmu pieļāvis kļūdu, un vai vispār esmu uz pareizā ceļa?
  6. Nu vot tā, idiots es! :D :D :D Viss aizgāja, paldies par tāda maza sīkuma atgādināšanu ;)
  7. Sveiki. Šodien turpinu iesākto darbu pie vienas weblapas. Uzrakstīju signup, viss iet ideāli. Ustaisīju, skriptu, kas veic ielogošanos un kas nočeko vai lietotājs ir ielgojies, bet sākas problēmas, jo ielogošanos veic bez erroriem, bet pēctam rāda, ka lietotājs nav ielogojies. Drošivien jau pats kautkādu pastulbu kļūdu esmu pieļāvis, bet gan pusnakti nosēž pie koda, tur nav nekāds brīnums... Login.php - ielogošanās izpilde (ar jau saņemtiem datiem no $_POST) <?php require_once "core/main.php"; checklogin(); if(isloggedon() == true) { errmsg("Login error!", "You have already registered and logged on!"); } if(!mkglobal("username:password")) { errsmg("No access!", "You have no access key to this page!"); } $username = $_POST['username']; $password = $_POST['password']; $sql_username = sqlesc($username); if(!validusername($username)) { errmsg("Login error", "You typed in invalid username"); } $user_res = sql_query("SELECT * FROM users WHERE uname = $sql_username")or die(mysql_error()); if(mysql_num_rows($user_res) != 1) { errmsg("Login error", "You typed in unknow or invalid username"); } $user_row = mysql_fetch_assoc($user_res); $db_user_hashedpass = base64_decode($user_row['hashedpass']); $db_user_salt = base64_decode($user_row['salt']); $db_user_id = $user_row['id']; $cur_rev_pass = strrev($password); $cur_hashedpass = md5($username . $cur_rev_pass . $db_user_salt); if($cur_hashedpass != $db_user_hashedpass) { errmsg("Login error", "Username or / and password was incorrect!"); } $_SESSION['uid'] = $db_user_id; $_SESSION['hashed'] = $cur_hashedpass; msg("Congrats!", "You have successfuly logged on. You can now proceed to index page!"); ?> main.php - tikai pāris funkcijas no šī faila <?php // Start counter to check page execution time: $GLOBALS['stime'] = array_sum(explode(' ',microtime())); // Set our timezone: date_default_timezone_set('Europe/Riga'); // Reset query counter: $_SESSION['queries_made'] = 0; // Database config: $db_host = "localhost"; $db_user = "admin"; $db_pass = "pass"; $db_database = "newice"; // Make a connection to mysql server: mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); mysql_select_db($db_database) or die(mysql_error()); // Define all functions: function sql_query($query) { $query = mysql_query($query); $_SESSION['queries_made'] = $_SESSION['queries_made'] + 1; return $query; } function sqlesc($x) { return "'".mysql_real_escape_string($x)."'"; } function unesc($x) { if (get_magic_quotes_gpc()) return stripslashes($x); return $x; } function curdate() { $curdate = date('d.m.Y H:i:s'); return $curdate; } function mkglobal($vars) { if (!is_array($vars)) $vars = explode(":", $vars); foreach ($vars as $v) { if (isset($_GET[$v])) $GLOBALS[$v] = unesc($_GET[$v]); elseif (isset($_POST[$v])) $GLOBALS[$v] = unesc($_POST[$v]); else return 0; } return 1; } function validusername($username) { if ($username == "") return false; // The following characters are allowed in user names $allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."; for ($i = 0; $i < strlen($username); ++$i) if (strpos($allowedchars, $username[$i]) === false) return false; return true; } function checklogin() { unset($GLOBALS['me']); $_SESSION['islogged'] = md5('no'); $curid = 0 + $_SESSION['uid']; $curhash = $_SESSION['hashed']; $user_res = sql_query("SELECT * FROM users WHERE id = $curid")or die(mysql_error()); if(mysql_num_rows($user_res) == 1) { $row = mysql_fetch_assoc($user_res); $db_user_hashedpass = base64_decode($row['hashedpass']); if($curhash == $db_user_hashedpass) { $GLOBALS['me'] = $row; $_SESSION['isloggedon'] = md5('yes'); $now = sqlesc(curdate()); sql_query("UPDATE users SET last_online = $now WHERE id = $curid")or die(mysql_error()); } } } function isloggedon() { $state = false; if($_SESSION['isloggedon'] == md5("yes")) { $state = true; } else { $state = false; } return $state; } function errmsg($title = "Error", $text = "Random error occured") { if(!headers_sent()) { draw_head("Error"); ?> <H2><? echo "$title"; ?></h2> <p> <span style="color: #d82a2a;"><? echo "$text"; ?></span> </p> <? draw_foot(); break; } else { ?> <H2><? echo "$title"; ?></h2> <p> <span style="color: #d82a2a;"><? echo "$text"; ?></span> </p> <? } } function msg($title = "A message", $text = "You now see a message!") { if(!headers_sent()) { draw_head("Message"); ?> <H2><? echo "$title"; ?></h2> <p> <span style="color: #42d82a;"><? echo "$text"; ?></span> </p> <? draw_foot(); break; } else { ?> <H2><? echo "$title"; ?></h2> <p> <span style="color: #42d82a;"><? echo "$text"; ?></span> </p> <? } } Tad varbūt kāds no jums varēs pamanīt to, ko es esmu palaidis garām + varēsiet pēc pilnas programmas "nolikt" manu kodu! :D ps. izlaidu draw_head() un draw_foot() funkcijas. Kā jau var saprast, tās uzzīmē lapas galveni un kājeni!
  8. 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
  9. 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!
  10. Es jau savu panācu, man citus variantus itkā nevajag :D
  11. Ok, aizgāja, paldies (sapratu arī, kāpēc pirmstam negaja) ;)
  12. Sveiki. Man ir viens kods, kur lietotājs var ar radio inputiem izvēlēties vienu no trīs iespējām. Pēctam nākamajai lapa, kas saņem izvēli ar $_POST šī izvēle ir jāsalīdzina ar vienu no trim iespējām. Ja ar nevienu no iespējām nesakrtīt, tad izmet erroru. Man bija kas līdzīgs šim, bet man vislaik meta erroru: $type = $_POST['type']; if($type != "str1" || $type != "str2" || $type != "str3") { stderr("Error", "$type - invalid"); } Neatkarīgi no tā, vai $type bija kāds no iespējamajiem variantiem (str1, str2 vai str3), errors tika izmests tikuntā... Kas ir nepareizi? ps. Neesmu jau gluži pro un vienkārši meklēju palīdzību, lai šis īsais kods nobūtu jāpārvērš garākā...
  13. Sveiki. Man lapā ir uztaisīts viens lauks, kur informācija tiek attēlota ar slīdošu textu (marquee). Man vajadzētu panākt tā, lai uzlaižot ar kursoru uz šī lauka, teksts sāktu slīdēt lēnāk + parādītos vairāki iespējas linki ar kuriem teksts tiktu aiztīts līdz vietai, kur ir ievietota konkrēta atzīme (visu marquee tekstu var sadalīt vairākos div'os pēc kuru class neimiem tiktu atpazīts uz kuru vietu tam ir jāaiztinas). Vēl būtu vēlams, lai viss marquee tiktu attēlots tādā platumā, cik tam ir atvēlēts no vietas, kur beidzas parastais teksts, līdz malai, kur beidzas div's. Ja kautko no via šī nesapratāt, lūdzu tā arī pasakiet nevis sāciet kko d*rst par to!
  14. Sveiki. Man vienā lapā ir liels text laukums, kurā lietotājs var sarakstīt vairākus vārdus šādā virknē: Suns, kaķis, māja, ezers, krūms, koks Kā lai uztaisa tā, lai nākamā lapa, kas ar _POST saņem šo stringu, atdala katru vārdu (pēc komatiem) un katram izpilda vienu kveriju?
  15. hmm... laikam taisnība. Biki nevērīgs laikam esmu :D .Paldies, viss sanāca ;)
×
×
  • Create New...