Optimising this code

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

User avatar
patrikG
DevNet Master
Posts: 4235
Joined: Thu Aug 15, 2002 5:53 am
Location: Sussex, UK

Post by patrikG »

Excellent - the only thing we've done here, though, is increase the readability of your code a wee bit and introduced a very basic separation of view and logic (or controller & model), not optimised the code. Glad that was useful.
Z3RO21
Forum Contributor
Posts: 130
Joined: Thu Aug 17, 2006 8:59 am

Post by Z3RO21 »

patrikG wrote:yeah, but in this scenario it's pointless as it's a reference when passed to the class-constructor anyway.
Yeah looking back I realize this, was to quick to jump the reply gun 8)
User avatar
spamyboy
Forum Contributor
Posts: 266
Joined: Sun Nov 06, 2005 11:29 am
Location: Lithuania, vilnius

Post by spamyboy »

Ok, now when I'm done with seperation, what can I do to optimise code ?
User avatar
spamyboy
Forum Contributor
Posts: 266
Joined: Sun Nov 06, 2005 11:29 am
Location: Lithuania, vilnius

Post by spamyboy »

ups... new problem, with pconnect, I just uploadet files to server and I got this:

Code: Select all

Warning: mysql_pconnect() [function.mysql-pconnect]: Too many open persistent links (0) in /home/lyricing/public_html/mysql.class.php on line 2

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/lyricing/public_html/mysql.class.php on line 3

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/lyricing/public_html/mysql.class.php on line 14
array(1) { [0]=> array(6) { ["file"]=> string(42) "/home/lyricing/public_html/mysql.class.php" ["line"]=> int(52) ["function"]=> string(15) "getlatestlyrics" ["class"]=> string(6) "lyrics" ["type"]=> string(2) "->" ["args"]=> array(1) { [0]=> ∫(5) } } }
What can I do ?
User avatar
feyd
Neighborhood Spidermoddy
Posts: 31559
Joined: Mon Mar 29, 2004 3:24 pm
Location: Bothell, Washington, USA

Post by feyd »

Don't make persistent connections. :)
User avatar
spamyboy
Forum Contributor
Posts: 266
Joined: Sun Nov 06, 2005 11:29 am
Location: Lithuania, vilnius

Post by spamyboy »

Well OK, I changed it to mysql_connect - works, but still - what can I do now to optimise code.
User avatar
superdezign
DevNet Master
Posts: 4135
Joined: Sat Jan 20, 2007 11:06 pm

Post by superdezign »

As long as your code isn't object-oriented, we really don't know what tips to give you.
User avatar
spamyboy
Forum Contributor
Posts: 266
Joined: Sun Nov 06, 2005 11:29 am
Location: Lithuania, vilnius

Post by spamyboy »

Well isn't this object-oriented called ?

Code: Select all

<?php
include_once "session.php";
include_once "admin/connect.php";
require_once ("mysql.class.php");
$db = mysql_connect("localhost", "root", "*****");
mysql_select_db("lyrics", $db);

$configurations = new configurations(&$db);
$config = $configurations->getConfig();

$users_online = new users_online(&$db);
$sessionId = session_id();
if (!session_is_registered('online'))
{
    $users_online->addOnlineUser($sessionId);
    session_register('online');
}
elseif (session_is_registered('user_id'))
{
    $users_online->addOnlineMember($sessionId);
}
if (session_is_registered('online'))
{
    $users_online->updateOnlineVisitor($sessionId);
}
?>
<script language="JavaScript" src="details_j.js"></script>
<script language="JavaScript" src="javascript.js"></script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title><?php echo $config['site_name']; ?></title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<link href="style.css" type="text/css" rel="stylesheet">
<script type="text/javascript">
<!--

var state = 'none';

function showhide(layer_ref) {

if (state == 'block') {
state = 'none';
}
else {
state = 'block';
}
if (document.all) { //IS IE 4 or 5 (or 6 beta)
eval( "document.all." + layer_ref + ".style.display = state");
}
if (document.layers) { //IS NETSCAPE 4 or below
document.layers[layer_ref].display = state;
}
if (document.getElementById &&!document.all) {
hza = document.getElementById(layer_ref);
hza.style.display = state;
}
}
//-->
</script>
<script type="text/javascript">
function bookmarksite(title,url){
if (window.sidebar)
	window.sidebar.addPanel(title, url, "");
else if(window.opera && window.print){
	var elem = document.createElement('a');
	elem.setAttribute('href',url);
	elem.setAttribute('title',title);
	elem.setAttribute('rel','sidebar');
	elem.click();
} 
else if(document.all)
	window.external.AddFavorite(url, title);
}
</script>
</head>

<body>

<div class="topdiv">

	<div class="topleft" align="left">
		<a href="faq.php">FAQ</a>
		&nbsp;&nbsp;&nbsp;
		<a href="">About</a>
		&nbsp;&nbsp;&nbsp;
		<a href="">Advertise</a>
		&nbsp;&nbsp;&nbsp;
		<a href="contactus.php">Contact us</a>
      </div>

<?php if (isset($_SESSION["user_id"]) && isset($_SESSION["username"]))
{ ?>
<div class="topright">
<a href="changepassword.php">Change Password</a>
&nbsp;&nbsp;&nbsp;
<a href="submitlyric.php">Submit a lyric</a>
&nbsp;&nbsp;&nbsp;
<?php
    $userId = $_SESSION["user_id"];
    $members = new members(&$db);
    $member = $members->getMemberInfo($userId);
    $email_addr = $member['email_addr'];

    $subscribers = new subscribers(&$db);
    $subsbriber = $subscribers->checkIfSubscribed($email_addr);
    if ($subsbriber)
    {
        echo '<a href="subscribe.php?subscribe=no&email_id=' . $email_addr .
            '" >Unsubscribe</a>';
    }
    else
    {
        echo '<a href="subscribe.php?subscribe=yes&email_id=' . $email_addr .
            '" >Subscribe</a>';
    }
?>
&nbsp;&nbsp;&nbsp;
<a href="logout.php">Logout</a>
</div>
<?
}
else
{
?>
<div class="topright2">
<form action="login.php" style="margin: 0px;" name="login_form" id="login_form" onSubmit="return validate();">
<font color="#FFFFFF"><a href="signup.php">Register</a></font>&nbsp;&nbsp;&nbsp;<a href="forgotpassword.php"><font color="#6e00bc">Forgotten Password?</font></a>
&nbsp;&nbsp;&nbsp;
<input type="text" name="username" id="username" value="" class="topinput" align="absmiddle" />
<input type="pass" name="userpwd" id="userpwd" value="" class="topinput" align="absmiddle" />
<input type="submit" class="topsubmit" value="" align="absmiddle" />
</form>
<? } ?></div></div><div class="topdiv">

<table width="100%" border="0">
  <tr>
    <td width="31%" valign="top"><a href="index.php"><img src="images/main_logo.jpg" alt="Lyricing.Com" style="margin-top: 30px;" align="absmiddle" /></a></td>
<td width="69%" valign="bottom">
<?
$advertisiment = new advertisiment(&$db);
$ad = $advertisiment->getAds(2);
echo $ad['ad_text'];
?>
</td>
  </tr>
</table>
</div>

<div class="topdiv">

<table width="745px" align="center" style="margin-top: 20px;" cellpadding="0px" cellspacing="0px" border="0px">
		<tr>
			<td width="121px"><a href="index.php" onMouseOver="document.images['Home'].src='images/home_h.jpg';" onMouseOut="document.images['Home'].src='images/home.jpg';"><img src="images/home.jpg" name="Home" alt="Home" /></a>
			
		  <td width="125px"><a href="index.php?do=list" onMouseOver="document.images['Lyrics'].src='images/lyrics_h.jpg';" onMouseOut="document.images['Lyrics'].src='images/lyrics.jpg';"><img src="images/lyrics.jpg" alt="Lyrics" name="Lyrics" border="0"></a></td>

			<td width="181px"><a href="submitlyric.php" onMouseOver="document.images['Submit'].src='images/submit_h.jpg';" onMouseOut="document.images['Submit'].src='images/submit.jpg';"><img src="images/submit.jpg" name="Submit" alt="Submit"></a></td>
			<td width="188px"><a href="requestlyric.php" onMouseOver="document.images['Request'].src='images/request_h.jpg';" onMouseOut="document.images['Request'].src='images/request.jpg';"><img src="images/request.jpg" name="Request" alt="Request"></a></td>
			<td width="130px"><a href="#" onMouseOver="document.images['Forum'].src='images/forum_h.jpg';" onMouseOut="document.images['Forum'].src='images/forum.jpg';"><img src="images/forum.jpg" name="Forum" alt="Forum"></a></td>
		</tr>
	</table>
    <?php if (isset($_REQUEST["msg"]) && $_REQUEST['msg'] <> "")
{
    echo '<div id="msg">';
    print ($_REQUEST['msg']);
    echo "</div>";
} ?>
<table width="745px" align="center" cellpadding="0px" cellspacing="0px" border="0px">
		<tr height="54px" style="background-image: url('images/top_bg.jpg'); background-repeat: repeat-x;">
			<td width="745px" valign="middle" align="middle">
				
			  <table width="600px" align="center" border="0px">

				<tbody class="alphamenu">
					<tr height="25px">
                    <?php
for ($i = 65; $i <= 90; $i++)
{
    printf("<td onMouseOver=\"this.style.backgroundColor='#C7F241';\" onMouseOut=\"this.style.backgroundColor='#1e1e1e';\"><a href=\"searchresult.php?index_key=%c\">%c</a></td>",
        $i, $i);
}
?>
				</tr>
			</tbody>
			  </table>

		
			</td>
		</tr>
	</table>



</div>

<table width="994" cellpadding="0px" cellspacing="0px" border="0px" align="center">
  <tr>
    <td style="width:120px;"><?
$advertisiment = new advertisiment(&$db);
$ad = $advertisiment->getAds(1);
echo $ad['ad_text'];
?></td>
	  <td width="430px" valign="top">
       <?php main(); ?>
<div align="right">
</div></td>
		<td width="19px" valign="top" class="vstrip"></td>
		<td width="296px" valign="top">
<?php
if (!empty($youtube))
{
    $a = strlen($youtube);
?>
<div id="latest_video">
<img src="images/video.jpg" alt="Video" style="margin: 0px;" />
<div style="clear: both; width: 290px; height: 235px; border: 2px solid #92b527"><div class="youtube_resizer style=text-align:center;">
<?php
    if ($a < 100)
    {
        $lyrics = new lyrics(&$db);
        $newYoutube = $lyrics->lyricYoutube();
        $bodytag = str_replace(' width="425" height="350"', ' width="290" height="235"',
            $lyricYoutube['youtube']);
        echo $bodytag;
    }
    else
    {
        $youtube = str_replace(' width="425" height="350"', ' width="290" height="235"',
            $youtube);
        echo $youtube;
    }
?></div>
<a href="http://www.layoutcodez.net/" title="Resize YouTube videos!" style="font-size:11px;font-weight:bold;">YouTube Video Resizer</a>
</div>
<img src="images/bottom.jpg" alt="" />
</div>
<?php } ?>
        <div id="search">
        <img src="images/search.jpg" alt="Search" />
        <div style="padding:10px 0px 0px 0px; margin:0px; text-align:center;">
		  <form name="" id="" method="post" action="searchresult.php">
			<input type="text" name="keyword" id="keyword" class="topinput" style="width: 120px;">
			<select name="for" class="form_select">
			  <option value="2">Artists</option>

			  <option value="1">Song Tittle</option>
			</select>
			<input type="submit" name="Submit" class="form_button" value="Search" />
		  </form>
          </div>
<img src="images/bottom.jpg" alt="" />
</div>

<?php
if (empty($youtube))
{
    $a = 0;
?>
<div id="latest_video">
<img src="images/videos.jpg" alt="Videos" style="margin: 0px;" />
<div style="clear: both; width: 290px; height: 235px; border: 2px solid #92b527"><div class="youtube_resizer style=text-align:center;">
<?php
    if ($a < 100)
    {
        $lyrics = new lyrics(&$db);
        $newYoutube = $lyrics->newYoutube();
        $bodytag = str_replace(' width="425" height="350"', ' width="290" height="235"',
            $newYoutube['youtube']);
        echo $bodytag;
    }
    else
    {
        $youtube = str_replace(' width="425" height="350"', ' width="290" height="235"',
            $youtube);
        echo $youtube;
    }
?></div>
<a href="http://www.layoutcodez.net/" title="Resize YouTube videos!" style="font-size:11px;font-weight:bold;">YouTube Video Resizer</a>
</div>
<img src="images/bottom.jpg" alt="" />
</div>
<?php } ?>

<div id="latest_lyric">
<img src="images/lat_lyrics.jpg" alt="Lyrics" />

<table width="296px" cellpadding="0px" cellspacing="0px" border="0px">
<tbody class="lyrics">

<?php
$latest_lyrics_number = 5;
$latest_lyrics = new lyrics(&$db);
$result = $latest_lyrics->getLatestLyrics($latest_lyrics_number);
while ($row = mysql_fetch_array($result))
{
    $latestLyric = $row;
?>
                          <tr> 
                            <td style="background-color:#010101;"><a href="index.php?<?php echo
"lyric_id=" . $latestLyric["lyric_id"]; ?>"><strong><?php echo
$latestLyric["lyric_artist"]; ?></strong> - <?php echo
$latestLyric["lyric_title"]; ?></a></td>
                          </tr>
                          <?php
}
?>

                          
			</tbody>
			</table>
<img src="images/bottom.jpg" alt="" />
</div>

<div id="latest_members">
<img src="images/lat_members.jpg" alt="Members" />

<?php
$latest_members_number = 5;
$latest_members = new members(&$db);
$result = $latest_members->getLatestMembers($latest_members_number);
while ($row = mysql_fetch_array($result))
{
    $latestMembers = $row;
?>
<table width="296px" cellpadding="0px" cellspacing="0px" border="0px" class="members">
            
                          <tr> 
                            <td style="background-color:#010101;"><?php echo $latestMembers["user_name"]; ?></td>
                          </tr>
                          <?
}
?>
			</table>
<img src="images/bottom.jpg" alt="" />
</div>
</td>
<td style="width:120px;">
<?
$advertisiment = new advertisiment(&$db);
$ad = $advertisiment->getAds(3);
echo $ad['ad_text'];
?></td>
</tr>
</table>
<div style="background-color: #8ca63b; border-top: 1px solid #c6f241; border-bottom: 1px solid #c6f241">
<table width="745px" align="center" cellpadding="0px" cellspacing="0px" border="0px" bgcolor="#8ca63b">
	<tr>
	  <td width="149px" style="padding-top: 10px;" align="center">
		
			<table width="140px" cellpadding="0px" cellspacing="0px" border="0px">
			<tbody class="bottomtab">
			<tr>
				<th>Navigation</th>

			</tr>
			<tr>
				<td onMouseOver="this.style.backgroundColor='#9eb750';" onMouseOut="this.style.backgroundColor='#8ca63b';"><a href="index.php">Home</a></td>
			</tr>
			<tr>
				<td onMouseOver="this.style.backgroundColor='#9eb750';" onMouseOut="this.style.backgroundColor='#8ca63b';"><a href="">Lyrics</a></td>
			</tr>
			<tr>

				<td onMouseOver="this.style.backgroundColor='#9eb750';" onMouseOut="this.style.backgroundColor='#8ca63b';"><a href="submitlyric.php">Submit Lyrics</a></td>
			</tr>
			<tr>
				<td onMouseOver="this.style.backgroundColor='#9eb750';" onMouseOut="this.style.backgroundColor='#8ca63b';"><a href="requestlyric.php">Request Lyrics</a></td>
			</tr>
			<tr>
				<td onMouseOver="this.style.backgroundColor='#9eb750';" onMouseOut="this.style.backgroundColor='#8ca63b';" style="border:none;"><a href="">Forums</a></td>

			</tr>
			</tbody>
	  </table>	
				
	  </td>
		<td width="149px" align="center" valign="top" style="padding-top: 10px;"><table width="140px" cellpadding="0px" cellspacing="0px" border="0px">
<?php
$lyrics = new lyrics(&$db);
$lyrics_count = $lyrics->countApproved();
$lyrics_count_unapproved = $lyrics->countUnapproved();
$members = new members(&$db);
$result = $members->countMembers();
$members_count = $result;
?>
          <tbody class="bottomtab">
            <tr>
              <th>Stats</th>
            </tr>
            <tr>
              <td><?php echo "Total lyrics: $lyrics_count<br />"; ?></td>
            </tr>
            <tr>
              <td><?php echo "Unapproved lyrics: $lyrics_count_unapproved<br />"; ?></td>
            </tr>
            <tr>
              <td style="border:none;"><?php echo "Total members: $members_count<br />"; ?></td>
            </tr>
          </tbody>
        </table></td>
	  <td width="149px" align="center" valign="top" style="padding-top: 10px;"><table width="140px" cellpadding="0px" cellspacing="0px" border="0px">
<?php
$members = new members(&$db);
$limit_time = time() - 300;
$visits = $members->countOnlineVisitors($limit_time);
$members = $members->countOnlineMembers($limit_time);
?>
        <tbody class="bottomtab">
          <tr>
            <th>Users online</th>
          </tr>
          <tr>
            <td><?php echo "Guests Online: $visits<br />"; ?></td>
          </tr>
          <tr>
            <td style="border:none;"><?php echo "Members Online: $members<br />"; ?></td>
          </tr>
        </tbody>
      </table></td>
	  <td width="149px" style="padding-top: 10px;" align="center">&nbsp;</td>
	  <td width="149px" style="padding-top: 10px;" align="center">&nbsp;</td>
	</tr>
	<tr><td colspan=5>&nbsp;</td></tr>
	</table>


</div>
<div style="background-color: #303a12; height: 25px">
	<div class="topdiv">
	<div class="topleft">
		<font color="#707f42">All Content Copyright</font> <a href="http://www.lyricing.com/"><font color="#707f42">Lyricing.com</font></a> <font color="#707f42">2007 |</font> <a href="javascript:bookmarksite('Lyricing', 'http://www.lyricing.com/')">Bookmark site</a> <font color="#707f42"> | </font> <a href="rss.php">RSS</a>	</div>

<div class="topright" style="margin-top: 5px;">
		<font color="#707f42">Site Design by <a href="http://www.xeststudios.com/">XestStudios.com</a> | Lyrics CMS <a href="http://www.spamyboy.com/">spamyboy.com</a></font>
	</div>
</div>

</div>
</body>
</html>
User avatar
superdezign
DevNet Master
Posts: 4135
Joined: Sat Jan 20, 2007 11:06 pm

Post by superdezign »

A lot of the stuff used IN the code is object-oriented.
You can't really do much else to it. I'd merge the two JavaScript snippets. Actually, I'd make them external.
User avatar
spamyboy
Forum Contributor
Posts: 266
Joined: Sun Nov 06, 2005 11:29 am
Location: Lithuania, vilnius

Post by spamyboy »

Ok, done with that - merdge them all and made external, now the mysql.class.php file.

Code: Select all

<?php
class comments{
        var $db;

        function comments($db){
                $this->db=$db;
        }

        function getCommentsByLyrics($lyric_id){
                $query  = "SELECT * FROM comments WHERE comment_lyricid='$lyric_id' ORDER BY comment_date";
                $result =        mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($record[]=mysql_fetch_row($result)){
                }
                return $record;
        }
}

class configurations{
        var $db;
        function configurations($db){
                $this->db=$db;
        }

		function getConfig(){
                $query  = "SELECT * FROM config";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
				while($row=mysql_fetch_array($result)){
				$config = $row;
                }
                return $config;
                }
}

class advertisiment{
        var $db;
        function advertisiment($db){
                $this->db=$db;
        }
		
		function getAds($position){
				$query  = "SELECT * FROM ads WHERE ad_active='yes' and ad_position='$position'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
				$count_ads=mysql_num_rows($result);
				if($count_ads>1) {
				$count_ads= mt_rand(1,$count_ads);
				}
				for($i=0;$i<$count_ads;$i++) {
				$row=mysql_fetch_array($result);
				}
				$ads=$row;
                return $ads;
                }
}

class members{

        var $db;
        function members($db){
                $this->db=$db;
        }
		
		function getLatestMembers($limit){
				$query  = "select * from members order by member_id desc";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
				
		function getMemberInfo($userId){
                $query  = "SELECT * FROM members WHERE member_id='$userId'";
                $result =        mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $member=mysql_fetch_array($result);
                return $member;
        }
		
		function countMembers(){
                $query="select * from members";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
		}
		
		function countOnlineVisitors($limit_time){
                $query="SELECT * FROM users_online WHERE UNIX_TIMESTAMP(activity) >= $limit_time AND member='n'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
		}
		
		function countOnlineMembers($limit_time){
                $query="SELECT * FROM users_online WHERE UNIX_TIMESTAMP(activity) >= $limit_time AND member='y'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
		}
}

class subscribers{
        var $db;
        function subscribers($db){
                $this->db=$db;
        }
		
		function checkIfSubscribed($email_addr){
				$query  = "select * from subscribers where email_id='$email_addr'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($subsbriber=mysql_fetch_array($result)){
                }
                return $subsbriber;
                }
}

class users_online{
        var $db;
        function users_online($db){
                $this->db=$db;
        }
		
		function addOnlineUser($sessionId){
				$query  = "INSERT INTO users_online (session_id, activity) VALUES ('$sessionId', now())";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
				
		function addOnlineMember($sessionId){
				$query  = "UPDATE users_online SET activity=now(), member='y' WHERE session_id='$sessionId'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
		
		function updateOnlineVisitor($sessionId){
				$query  = "UPDATE users_online SET activity=now() WHERE session_id='$sessionId'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
}

class lyrics{
        var $db;

        function lyrics($db){
                $this->db=$db;
        }
		
		function getLatestLyrics($limit){
				$query  = "select * from lyrics where approved='yes' order by lyric_id desc limit $limit";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
        }
		
		function getSearchResults($keyword_str, $index_str, $rating_str){
				$query  = "SELECT *,DATE_FORMAT((submit_date),'%d, %b %Y') as _date, score/no_of_ratings as score FROM `lyrics` WHERE 1 $keyword_str $index_str $rating_str and approved='yes' ORDER BY score desc, submit_date desc";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
        }
		
		function getLyric($lyric_str){
                $query="select *,score/no_of_ratings as score from lyrics where 1 $lyric_str and approved='yes'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
				}
				
		function countApproved(){
                $query="select * from lyrics where approved='yes'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
				}
				
		function countUnapproved(){
                $query="select * from lyrics where approved='no'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
				}
		
		function updateYoutube($youtube, $lyric_id){
                $query="update lyrics set youtube='$youtube' where lyric_id ='$lyric_id'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
				}
				
		function lyricYoutube(){
                $query="select * from lyrics where approved='yes' and youtube>'6' ORDER BY lyric_id desc limit 1";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($lyricYoutube[]=mysql_fetch_array($result)){
                }
                return $lyricYoutube;
				}
		
		function newYoutube(){
                $query="select * from lyrics where approved='yes' and youtube>'6' ORDER BY lyric_id desc limit 1";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $newYoutube=mysql_fetch_array($result);
                return $newYoutube;
				}
				
		function getCommentsByLyrics($lyric_id){
                $query  = "SELECT * FROM comments WHERE comment_lyricid='$lyric_id' ORDER BY comment_date";
                $result =        mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($record[]=mysql_fetch_row($result)){
                }
                return $record;
        }
}
?>
What can I optimise here ?
User avatar
superdezign
DevNet Master
Posts: 4135
Joined: Sat Jan 20, 2007 11:06 pm

Post by superdezign »

Don't use "SELECT *." Specify the fields you want.
User avatar
spamyboy
Forum Contributor
Posts: 266
Joined: Sun Nov 06, 2005 11:29 am
Location: Lithuania, vilnius

Post by spamyboy »

Done were possible.

Code: Select all

<?php
class comments{
        var $db;

        function comments($db){
                $this->db=$db;
        }

        function getCommentsByLyrics($lyric_id){
                $query  = "SELECT * FROM comments WHERE comment_lyricid='$lyric_id' ORDER BY comment_date";
                $result =        mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($record[]=mysql_fetch_row($result)){
                }
                return $record;
        }
}

class configurations{
        var $db;
        function configurations($db){
                $this->db=$db;
        }

		function getConfig(){
                $query  = "SELECT * FROM config";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
				while($row=mysql_fetch_array($result)){
				$config = $row;
                }
                return $config;
                }
}

class advertisiment{
        var $db;
        function advertisiment($db){
                $this->db=$db;
        }
		
		function getAds($position){
				$query  = "SELECT * FROM ads WHERE ad_active='yes' and ad_position='$position'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
				$count_ads=mysql_num_rows($result);
				if($count_ads>1) {
				$count_ads= mt_rand(1,$count_ads);
				}
				for($i=0;$i<$count_ads;$i++) {
				$row=mysql_fetch_array($result);
				}
				$ads=$row;
                return $ads;
                }
}

class members{

        var $db;
        function members($db){
                $this->db=$db;
        }
		
		function getLatestMembers($limit){
				$query  = "select member_id, user_name from members order by member_id desc";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
				
		function getMemberInfo($userId){
                $query  = "SELECT email_addr FROM members WHERE member_id='$userId'";
                $result =        mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $member=mysql_fetch_array($result);
                return $member;
        }
		
		function countMembers(){
                $query="select member_id from members";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
		}
		
		function countOnlineVisitors($limit_time){
                $query="SELECT member FROM users_online WHERE UNIX_TIMESTAMP(activity) >= $limit_time AND member='n'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
		}
		
		function countOnlineMembers($limit_time){
                $query="SELECT member FROM users_online WHERE UNIX_TIMESTAMP(activity) >= $limit_time AND member='y'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
		}
}

class subscribers{
        var $db;
        function subscribers($db){
                $this->db=$db;
        }
		
		function checkIfSubscribed($email_addr){
				$query  = "select email_id from subscribers where email_id='$email_addr'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($subsbriber=mysql_fetch_array($result)){
                }
                return $subsbriber;
                }
}

class users_online{
        var $db;
        function users_online($db){
                $this->db=$db;
        }
		
		function addOnlineUser($sessionId){
				$query  = "INSERT INTO users_online (session_id, activity) VALUES ('$sessionId', now())";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
				
		function addOnlineMember($sessionId){
				$query  = "UPDATE users_online SET activity=now(), member='y' WHERE session_id='$sessionId'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
		
		function updateOnlineVisitor($sessionId){
				$query  = "UPDATE users_online SET activity=now() WHERE session_id='$sessionId'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
                }
}

class lyrics{
        var $db;

        function lyrics($db){
                $this->db=$db;
        }
		
		function getLatestLyrics($limit){
				$query  = "select lyric_id, lyric_artist, lyric_title from lyrics where approved='yes' order by lyric_id desc limit $limit";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
        }
		
		function getSearchResults($keyword_str, $index_str, $rating_str){
				$query  = "SELECT lyric_id, lyric_artist, lyric_title, score, DATE_FORMAT((submit_date),'%d, %b %Y') as _date, score/no_of_ratings as score FROM `lyrics` WHERE 1 $keyword_str $index_str $rating_str and approved='yes' ORDER BY score desc, submit_date desc";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
        }
		
		function getLyric($lyric_str){
                $query="select *,score/no_of_ratings as score from lyrics where 1 $lyric_str and approved='yes'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
				}
				
		function countApproved(){
                $query="select approved from lyrics where approved='yes'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
				}
				
		function countUnapproved(){
                $query="select approved from lyrics where approved='no'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $result = mysql_num_rows($result);
				return $result;
				}
		
		function updateYoutube($youtube, $lyric_id){
                $query="update lyrics set youtube='$youtube' where lyric_id ='$lyric_id'";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                return $result;
				}
				
		function lyricYoutube(){
                $query="select youtube from lyrics where approved='yes' and youtube>'6' ORDER BY lyric_id desc limit 1";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($lyricYoutube[]=mysql_fetch_array($result)){
                }
                return $lyricYoutube;
				}
		
		function newYoutube(){
                $query="select youtube from lyrics where approved='yes' and youtube>'6' ORDER BY lyric_id desc limit 1";
                $result = mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                $newYoutube=mysql_fetch_array($result);
                return $newYoutube;
				}
				
		function getCommentsByLyrics($lyric_id){
                $query  = "SELECT * FROM comments WHERE comment_lyricid='$lyric_id' ORDER BY comment_date";
                $result =        mysql_query($query,$this->db) or die("<xmp>".var_dump(debug_backtrace())."</xmp><br/>".mysql_error());
                while($record[]=mysql_fetch_row($result)){
                }
                return $record;
        }
}
?>
What's next ? maybe I should close connection after avery query ?
(if yes, please give me example how to.)
User avatar
superdezign
DevNet Master
Posts: 4135
Joined: Sat Jan 20, 2007 11:06 pm

Post by superdezign »

Where possible? The only time it wouldn't be possible is if the table you were retrieving the data from was defined by a variable, so you wouldn't know which columns existed.
User avatar
spamyboy
Forum Contributor
Posts: 266
Joined: Sun Nov 06, 2005 11:29 am
Location: Lithuania, vilnius

Post by spamyboy »

I mean that in for e.g. table News I use all collums, so there is no point to list them (that is news_id, news_title, news_date, news_text) or is there ?
User avatar
superdezign
DevNet Master
Posts: 4135
Joined: Sat Jan 20, 2007 11:06 pm

Post by superdezign »

I typically list them all, which helps with giving them new aliases, manipulating some of them, and all of that nonsense. However, I rarely do any simple databasing that requires me to just get everything from one table... I guess if you are actually using ALL of it, it's okay.

But your code's no fun to read. If you want to "optimize," find something that's slow and ask about it. Optimization is pretty broad, and a lot of it is unnecessary. Your main concern should be how easily you can change what you have.
Post Reply