Jump to content

Find the lowest value.


ShibSta

Recommended Posts

I am wanting to find the link that has the lowest unique hits and then redirect the visitor to it.
I have the value of the unique hits in the varibles $unique1, $unique2, and $unique3.
How would I go about doing this?
Thanks

I have the following code:

[code]   1.  <?php ob_start() ?>
   2.  <html xmlns="http://www.w3.org/1999/xhtml">
   3.  <head>
   4.  <title>Title</title>
   5.  </head>
   6.  <body>
   7.  <?php
   8.  $host = 'localhost';
   9.  $username = '---';
  10.  $password = '---';
  11.  $db_name = '---';
  12.  $sql_connect = mysql_connect("$host", "$username", "$password") or die("MySQL Connection Failed: " . mysql_error());;
  13.  $db_connect = mysql_select_db("$db_name")or die("Could not select DB: " . mysql_error());;
  14.  
  15.  $count1 = mysql_query("SELECT * FROM s") or die(mysql_error());
  16.  $unique1 = mysql_num_rows($count);
  17.  $count2 = mysql_query("SELECT * FROM s1") or die(mysql_error());
  18.  $unique2 = mysql_num_rows($count);
  19.  $count3 = mysql_query("SELECT * FROM g") or die(mysql_error());
  20.  $unique3 = mysql_num_rows($count);
  21.  
  22.  
  23.  if () {
  24.  include("updatedb1.php");
  25.  header("location:--Link Removed--");
  26.  //echo "test1";
  27.  }
  28.  if () {
  29.  include("updatedb2.php");
  30.  header("location:--Link Removed--");
  31.  //echo "test2";
  32.  }
  33.  if () {
  34.  include("updatedb3.php");
  35.  header("location:--Link Removed--");
  36.  //echo "test3";
  37.  }
  38.  
  39.  ?>
  40.  </body>
  41.  </html>
[/code]
Link to comment
Share on other sites

Your if statements are completly invalid! They wont even work properly
[code]if () {
  include("updatedb1.php");
  header("location:--Link Removed--");
  //echo "test1";
}[/code]
If statements require some form of arguemnt between the opnening closing brackets - ()

This is a proper if statement:
[code]$a = 2;
if($a == 2)
{
    echo '$a equals to 2!';
}
else
{
    echo '$a does not equal 2!';
}[/code]

The below code you use a variable called $count. $count hasn't been defined any where so mysql_num_rows wont be working and most probably is stoping your script from running! You do have variables called $count1, $count2 and $count3. So on lines 16, 18 and 20 you need to change $count to $count1 on line 16, $count to $count2 on line 18 and change $count to $count3 on line 20.
[code]  15.  $count1 = mysql_query("SELECT * FROM s") or die(mysql_error());
  16.  $unique1 = mysql_num_rows($count);
  17.  $count2 = mysql_query("SELECT * FROM s1") or die(mysql_error());
  18.  $unique2 = mysql_num_rows($count);
  19.  $count3 = mysql_query("SELECT * FROM g") or die(mysql_error());
  20.  $unique3 = mysql_num_rows($count);[/code]
Link to comment
Share on other sites

The reason the if statement are blank is because I have no clue as to what arguement to add. In which is what I was asking.
As for the $count it was a mistake when transfering it from dreamweaver to the site and removing personal info.
I forgot to copy that part.

It should be:
[code]$count1 = mysql_query("SELECT * FROM s") or die(mysql_error());
$unique1 = mysql_num_rows($count1);
$count2 = mysql_query("SELECT * FROM s1") or die(mysql_error());
$unique2 = mysql_num_rows($count2);
$count3 = mysql_query("SELECT * FROM g") or die(mysql_error());
$unique3 = mysql_num_rows($count3);[/code]

My goal:
When somone go to this page it grabs the 3 values from the database and defines the values to the varibles $unique1, $unique2, $unique3.
I then want the PHP script to find what have the 3 varibles has the lowest value and then execute the correct include and header:location.

Overall Understanding:
I am a affiliate on a site aswell as 2 of my other friends. We want referrals so we're going to post on my forums, however we want the same number of visitors to be directed to each of our referral links.
Therefore in our post we are going to send them to this script, it will check the database, find which has the lowest amount of unique hits and then add +1 to that number (updates the DB) and sends them to the header:location.

When you don't understand a situation please let me know I will do try to explain it better, when nothing is said I feel as if I'm being ignored hince many other topics are receiving a response.

Thanks
-ShibSta


Link to comment
Share on other sites

[!--quoteo(post=352070:date=Mar 6 2006, 09:11 AM:name=ShibSta)--][div class=\'quotetop\']QUOTE(ShibSta @ Mar 6 2006, 09:11 AM) [snapback]352070[/snapback][/div][div class=\'quotemain\'][!--quotec--]
[code]$count1 = mysql_query("SELECT * FROM s") or die(mysql_error());
$unique1 = mysql_num_rows($count1);
$count2 = mysql_query("SELECT * FROM s1") or die(mysql_error());
$unique2 = mysql_num_rows($count2);
$count3 = mysql_query("SELECT * FROM g") or die(mysql_error());
$unique3 = mysql_num_rows($count3);[/code]
[/quote]

First things first. If you're interested in the slowest loading page possible, the above is fine. However, I would recommend, instead, that you allow MySQL to do the counting for you. Observe :

[code]
list($unique1) = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM s'));
[/code]

Or, to break it out into edible chunks :

[code]$query = 'SELECT COUNT(*) FROM s';
$count1 = mysql_query($query) or die(mysql_error());
list($unique1) = mysql_fetch_array($count1);
mysql_free_result($count1);
[/code]

[!--quoteo(post=352070:date=Mar 6 2006, 09:11 AM:name=ShibSta)--][div class=\'quotetop\']QUOTE(ShibSta @ Mar 6 2006, 09:11 AM) [snapback]352070[/snapback][/div][div class=\'quotemain\'][!--quotec--]
My goal:
When somone go to this page it grabs the 3 values from the database and defines the values to the varibles $unique1, $unique2, $unique3.
I then want the PHP script to find what have the 3 varibles has the lowest value and then execute the correct include and header:location.
[/quote]

Hrm.. Just off the top of my head :

[code]
if (($unique1 <= $unique2) && ($unique1 <= unique3)) {
   # unique1 is the lowest
} else if (($unique2 <= $unique1) && ($unique2 <= unique3)) {
   # unique2 is the lowest
} else if (($unique3 <= $unique1) && ($unique3 <= unique2)) {
   # unique3 is the lowest
} else {
   # You should never reach this point
}
[/code]
Link to comment
Share on other sites

[!--quoteo(post=352088:date=Mar 6 2006, 10:39 AM:name=XenoPhage)--][div class=\'quotetop\']QUOTE(XenoPhage @ Mar 6 2006, 10:39 AM) [snapback]352088[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Hrm.. Just off the top of my head :

[code]
if (($unique1 <= $unique2) && ($unique1 <= unique3)) {
   # unique1 is the lowest
} else if (($unique2 <= $unique1) && ($unique2 <= unique3)) {
   # unique2 is the lowest
} else if (($unique3 <= $unique1) && ($unique3 <= unique2)) {
   # unique3 is the lowest
} else {
   # You should never reach this point
}
[/code]
[/quote]

Which would this code use if all values were the same?
Link to comment
Share on other sites

[!--quoteo(post=352153:date=Mar 6 2006, 01:50 PM:name=ShibSta)--][div class=\'quotetop\']QUOTE(ShibSta @ Mar 6 2006, 01:50 PM) [snapback]352153[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Which would this code use if all values were the same?
[/quote]

Simulate the values and try it out.. :) It should run through the first if() statement if all 3 values are equal. But, it shouldn't matter unless you're looking to make sure one person gets the hit before everyone else.. *grin*

So, as an example, the hits will work out like this :

0 0 0
1 0 0
1 1 0
1 1 1
2 1 1
2 2 1
2 2 2
etc.
Link to comment
Share on other sites

[!--quoteo(post=352220:date=Mar 6 2006, 04:04 PM:name=XenoPhage)--][div class=\'quotetop\']QUOTE(XenoPhage @ Mar 6 2006, 04:04 PM) [snapback]352220[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Simulate the values and try it out.. :) It should run through the first if() statement if all 3 values are equal. But, it shouldn't matter unless you're looking to make sure one person gets the hit before everyone else.. *grin*

So, as an example, the hits will work out like this :

0 0 0
1 0 0
1 1 0
1 1 1
2 1 1
2 2 1
2 2 2
etc.
[/quote]

I just wanted to know because if it's random stats are goin' to jump around. Which is not fair.
I want it turn by turn as you pointed out it is.
I will go try this right now.
Thankx Alot!
Link to comment
Share on other sites

[!--quoteo(post=352606:date=Mar 7 2006, 03:30 PM:name=ShibSta)--][div class=\'quotetop\']QUOTE(ShibSta @ Mar 7 2006, 03:30 PM) [snapback]352606[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Erm, I put an error message after the last else() and the error is being displayed when all values are equal to 1
[/quote]

Hrm.. can you post your code please? You should never hit that else ....
Link to comment
Share on other sites

[code] <?php ob_start() ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<?php
$host = 'localhost';
$username = '----';
$password = '----';
$db_name = '----';
$sql_connect = mysql_connect("$host", "$username", "$password") or die("MySQL Connection Failed: " . mysql_error());;
$db_connect = mysql_select_db("$db_name")or die("Could not select DB: " . mysql_error());;

$count1 = mysql_query("SELECT * FROM link1") or die(mysql_error());
$unique1 = mysql_num_rows($count1);
$count2 = mysql_query("SELECT * FROM link2") or die(mysql_error());
$unique2 = mysql_num_rows($count2);
$count3 = mysql_query("SELECT * FROM link3") or die(mysql_error());
$unique3 = mysql_num_rows($count3);

if (($unique1 <= $unique2) && ($unique1 <= unique3)) {
    include("link1.php");
    header("location:----Link Removed----");
} else if (($unique2 <= $unique1) && ($unique2 <= unique3)) {
    include("link2.php");
    header("location:----Link Removed----");
} else if (($unique3 <= $unique1) && ($unique3 <= unique2)) {
    include("link3.php");
    header("location:----Link Removed----");
} else {
   echo "An Error Has Occured.";
}
?>
</body>
</html>
[/code]
Link to comment
Share on other sites

Hrm.. I have no idea.. I used the below code as a test and it works fine...

[code]<?php

$a = 0;
$b = 0;
$c = 0;

while ($a < 3) {
   if (($a <= $b) && ($a <= $c)) {
      print "a is lowest - ($a $b $c)\n";
      $a++;
   } else if (($b <= $a) && ($b <= $c)) {
      print "b is lowest - ($a $b $c)\n";
      $b++;
   } else if (($c <= $a) && ($c <= $b)) {
      print "c is lowest - ($a $b $c)\n";
      $c++;
   } else {
      print "ERROR! - ($a $b $c)\n";
      exit;
   }
}

?>
[/code]

As an aside, if you switch to COUNT(*) instead of relying on mysql_num_rows, your code will execute *much* faster as the database grows...
Link to comment
Share on other sites

[!--quoteo(post=352940:date=Mar 8 2006, 02:25 PM:name=ShibSta)--][div class=\'quotetop\']QUOTE(ShibSta @ Mar 8 2006, 02:25 PM) [snapback]352940[/snapback][/div][div class=\'quotemain\'][!--quotec--]
Would you mind using the count(*) in my script and then posting it as I have no idea how to use it. I learn from reading PHP not the manual... (That thing just confuses me)
[/quote]

Sure.. Observe :

[code]
   1.  <?php ob_start() ?>
   2.  <html xmlns="http://www.w3.org/1999/xhtml">
   3.  <head>
   4.  <title>Title</title>
   5.  </head>
   6.  <body>
   7.  <?php
   8.  $host = 'localhost';
   9.  $username = '---';
  10.  $password = '---';
  11.  $db_name = '---';
  12.  $sql_connect = mysql_connect("$host", "$username", "$password") or die("MySQL Connection Failed: " . mysql_error());;
  13.  $db_connect = mysql_select_db("$db_name")or die("Could not select DB: " . mysql_error());;
  14.  
  15.  list($unique1) = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM s") or die(mysql_error()));
  17.  list($unique2) = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM s1") or die(mysql_error()));
  19.  list($unique3) = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM g") or die(mysql_error()));
  21.  
  22.  
  23.  if () {
  24.  include("updatedb1.php");
  25.  header("location:--Link Removed--");
  26.  //echo "test1";
  27.  }
  28.  if () {
  29.  include("updatedb2.php");
  30.  header("location:--Link Removed--");
  31.  //echo "test2";
  32.  }
  33.  if () {
  34.  include("updatedb3.php");
  35.  header("location:--Link Removed--");
  36.  //echo "test3";
  37.  }
  38.  
  39.  ?>
  40.  </body>
  41.  </html>
[/code]
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

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.   Restore formatting

  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.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.