Please support our MySQL advertiser: Programming Forums
Views: 4849 | Replies: 6
![]() |
•
•
Join Date: Apr 2007
Posts: 4
Reputation:
Rep Power: 0
Solved Threads: 0
Hi , I've been working on comparison query with PHP and MySql 5.0 yet not getting anywhere with it.
I'm trying to perform a search ( query )
I have several tables within the same database that contain same fields yet hold different data
eg
Table 1
id |Product | Price | Private
Table 2
id| Product | Price | Private
etc...
What I'm trying to do is have the ability to search the tables and display it as follows
Products (tables 1 & 2 ) | Price( Table 1 ) | Price (Table 2 )
I've been playing with UNION
Output in php as follows
So far I cannot seem to get the products nor pricing in line , any ideas ?
I'm trying to perform a search ( query )
I have several tables within the same database that contain same fields yet hold different data
eg
Table 1
id |Product | Price | Private
Table 2
id| Product | Price | Private
etc...
What I'm trying to do is have the ability to search the tables and display it as follows
Products (tables 1 & 2 ) | Price( Table 1 ) | Price (Table 2 )
I've been playing with UNION
$query = "Select `product`, `private` as p, 'table1' as n from `table1` where `name` REGEXP '".$trimmed."' UNION ALL Select `product`, `private` as p, 'table2' as n from `table2` where `name` REGEXP '".$trimmed."' ORDER by `product`";
Output in php as follows
while($row = mysql_fetch_array($result))
{
echo "<tr>";
//echo "<td>" . $row['Product'] . "</td>";
// echo "<td>" . $row['Product'] . "</td>";
// echo "<td>" . $row['private'] . "</td>";
// echo "<td>" . $row['id'] . "</td>";
// echo "<td>" . $row['table1.price'] . "</td>";
// echo "<td>" . $row['table2.price'] . "</td>";
// echo "</tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['n'] . "</td>";
echo "<td>" . $row['p'] . "</td>";
echo "</tr>";
}So far I cannot seem to get the products nor pricing in line , any ideas ?
•
•
Join Date: Nov 2006
Location: South Wales
Posts: 159
Reputation:
Rep Power: 3
Solved Threads: 11
•
•
Join Date: Apr 2007
Posts: 4
Reputation:
Rep Power: 0
Solved Threads: 0
Yes, product names will be very similar , prices different.
have multiple vendors , so I want the ability to perform a seach against the tables and have the Products shows via union all with the prices in different colums
Products | Price tbl1 | Price tbl2| price tble3 |
Trying to wrap my head around it still.
•
•
Join Date: Mar 2004
Posts: 733
Reputation:
Rep Power: 6
Solved Threads: 32
similar and the same are two different things. If you know for sure they will be the same then you can link the two tables together.
Give this a try. It will, however assume that the same product does in fact lie within both tables. If the product isn't in both tables, then I don't think it will return that item at all. If that's the case, then you'll need some sort of outer join.
Give this a try. It will, however assume that the same product does in fact lie within both tables. If the product isn't in both tables, then I don't think it will return that item at all. If that's the case, then you'll need some sort of outer join.
php Syntax (Toggle Plain Text)
$query = "SELECT table1.product,table1.price,table2.price FROM table1, table2 WHERE table1.product = table2.product"; $result = mysql_db_query($database,$query); while ($row = mysql_fetch_array($result)) { echo $row[0]." - $".$row[1].", $".$row[2]."<br>"; }
•
•
Join Date: Apr 2007
Posts: 9
Reputation:
Rep Power: 0
Solved Threads: 0
Try this for a solution.
save the following as a php page or html doesn't matter.
search.php or search.html
Save the following as search1.php
Hope this helps.
Arty
save the following as a php page or html doesn't matter.
search.php or search.html
html Syntax (Toggle Plain Text)
<form name='search' action='search1.php' method='post'> <CENTER> <TABLE> <TR> <TD>Search for Product:</TD> <TD><input type="text" name="product" size="25"></TD> </TR> </TABLE> <CENTER> <input type='submit' name="submit" value="Search For Product"'> </form>
Save the following as search1.php
php Syntax (Toggle Plain Text)
<? // your connection to the server require("includes/dbconnect.php"); ?> <? //post sent from search form. if(isset($_POST['submit'])) { $product = addslashes(@$_POST['product']); } // Begin your table outside of the array echo "<table width='100%' border='0' cellpadding='4' cellspacing='0'> <tr> <td width='10%' bgcolor='#BBDDFF'><b>ID #</b></td> <td width='20%' bgcolor='#BBDDFF'><b>Product</b></td> <td width='30%' bgcolor='#BBDDFF'><b>Tbl #1 Price</b></td> <td width='20%' bgcolor='#BBDDFF'><b>Tbl #2 Price</b></td> <td width='20%' bgcolor='#BBDDFF'><b>Private</b></td> </tr>"; // Define your colors for the alternating rows $color1 = "#ffffff"; $color2 = "#ccffff"; $row_count = 0; // Perform an statndard SQL query: $page = $_GET['page']; $limit = 150; $query_count = "SELECT * FROM n inner join p on n.product = p.product WHERE n.product LIKE '%$product%' order by n.product asc"; $result_count = mysql_query($query_count); $totalrows = mysql_num_rows($result_count); if(empty($page)){ $page = 1; } $limitvalue = $page * $limit - ($limit); $sql_events = mysql_query("SELECT * FROM n inner join p on n.product = p.product WHERE n.product LIKE '%$product%' order by n.product asc LIMIT $limitvalue, $limit") or die (mysql_error()); // We are going to use the "$row" method for this query. This is just my preference. while ($row = mysql_fetch_array($sql_events)) { $Id = stripslashes($row[0]); $product = stripslashes($row[1]); $price = stripslashes($row[2]); $price1 = stripslashes($row[3]); $private = stripslashes($row[4]); /* Now we do this small line which is basically going to tell PHP to alternate the colors between the two colors we defined above. */ $row_color = ($row_count % 2) ? $color1 : $color2; // Echo your table row and table data that you want to be looped over and over here. echo "<tr> <td bgcolor='$row_color'>$Id</td> <td bgcolor='$row_color'>$product</td> <td bgcolor='$row_color'>$$price</td> <td bgcolor='$row_color'>$$price1</td> <td bgcolor='$row_color'>$private</td> </tr>"; // Add 1 to the row count $row_count++; } // Close out your table. echo "</TABLE>"; echo "<center><hr color=#c0c0c0>"; if($page != 1) { $pageprev = $page-1; echo("<a href=\"$PHP_SELF?page=$pageprev\">PREV</a> "); } else { echo("PREV "); } $numofpages = $totalrows / $limit; for($i = 1; $i <= $numofpages; $i++) { if($i == $page) { echo($i." "); } else { echo("<a href=\"$PHP_SELF?page=$i\">$i</a> "); } } if(($totalrows % $limit) != 0) { if($i == $page) { echo($i." "); } else { echo("<a href=\"$PHP_SELF?page=$i\">$i</a> "); } } if(($totalrows - ($limit * $page)) >=0) { $pagenext = $page+1; echo(" <a href=\"$PHP_SELF?page=$pagenext\">NEXT</a>"); } else { echo(" NEXT "); } echo "</center>"; ?>
Hope this helps.
Arty
Last edited by arty56 : Apr 21st, 2007 at 10:01 am.
•
•
Join Date: Apr 2007
Posts: 4
Reputation:
Rep Power: 0
Solved Threads: 0
Thanks Arty56 ,
When I execute the code I get this return in the browser
PREV "); } else { echo("PREV "); } $numofpages = $totalrows / $limit; for($i = 1; $i <= $numofpages; $i++) { if($i == $page) { echo($i." "); } else { echo("$i "); } } if(($totalrows - ($limit * $page)) >=0) { $pagenext = $page+1; echo(" <A href="http://127.0.0.1/%22$PHP_SELF?page=$pagenext\"">NEXT"); } else { echo(" NEXT "); } echo "
"; ?>
I've double checked everything...any ideas
When I execute the code I get this return in the browser
PREV "); } else { echo("PREV "); } $numofpages = $totalrows / $limit; for($i = 1; $i <= $numofpages; $i++) { if($i == $page) { echo($i." "); } else { echo("$i "); } } if(($totalrows - ($limit * $page)) >=0) { $pagenext = $page+1; echo(" <A href="http://127.0.0.1/%22$PHP_SELF?page=$pagenext\"">NEXT"); } else { echo(" NEXT "); } echo "
"; ?>
I've double checked everything...any ideas
•
•
Join Date: Apr 2007
Posts: 9
Reputation:
Rep Power: 0
Solved Threads: 0
•
•
•
•
Thanks Arty56 ,
When I execute the code I get this return in the browser
PREV "); } else { echo("PREV "); } $numofpages = $totalrows / $limit; for($i = 1; $i <= $numofpages; $i++) { if($i == $page) { echo($i." "); } else { echo("$i "); } } if(($totalrows - ($limit * $page)) >=0) { $pagenext = $page+1; echo(" <A href="http://127.0.0.1/%22$PHP_SELF?page=$pagenext\"">NEXT"); } else { echo(" NEXT "); } echo "
"; ?>
I've double checked everything...any ideas
I have checked the script and the only change I made was to remove line 4 ?> and line 5 <?php
I also see you have added a http://127.0.0.1/%22 infront of $PHP_SELF.
testing on your own computer should not require an IP address.
and diffinately not required on your hosting server.
$PHP_SELF is telling php to use the same php page, so that maybe throwing an error.
I use $PHP_SELF instead of typing in search1.php.
As far as why the php code is showing check to see if you have removed or added an extra ?> in the code just before that error.
or you have a <?php missing.
Because it is reading the code as text and not php.
If you use the code as given without adding the IP address it will work.
I use it on all my sites.
Example 1:
The example shows that the second segment of code is missing the opening php tag. Php should throw up an error instead of echoing the second segment of code.
<?php
echo " some php code";
?>
echo "some more php code";
?>
Example 2:
The example shows that the second segment of code is missing the opening and closing php tag. So it will be parsed as text and not php
<?php
echo " some php code";
?>
echo "some more php code";
--Arty
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)





Linear Mode