Forum Moderators: coopster
The query works fine, but I added a new table, and would like to display the data from the new table UNDER the original results.
I will post the php code below, but here are a few things that may help. There are 2 search fields, 1 for callsign, and the other for zip codes. I am only concerned with the callsign query. Also, this code is formated to query all 3 of the original 3 tables and return the most updated data.
The original 3 tables are named am, en, and hd. When a search query for callsign is being done, it gets all the data from the 3 tables, am, en, and hd. Then it displays the results. I would like the results from my newly added table, named hamwave_logs, to be displayed just under the original results. All 3 tables plus my new table have a field named callsign. Here is the code:
<table>
<tr>
<td>
<?php
$callsearch = substr(strtoupper(trim($_POST["call"])),0,6);
$zip = substr(trim($_POST["zip"]),0,9);
$rowlimit = 0;
#
if ( ($callsearch == '') and ($zip == '') ) {
$callsearch = substr(strtoupper(trim($_GET["call"])),0,6);
$zip = substr(trim($_GET["zip"]),0,9);
$rowlimit = ereg_replace('[^0-9]','',substr(trim($_GET["rowlimit"]),0,4));
$calllike = ereg_replace('[^A-Z0-9]','',substr(strtoupper(trim($_GET["calllike"])),0,6));
}
#
$callsearch = ereg_replace('[^A-Z0-9]','',$callsearch);
$zip = ereg_replace('[^0-9]','',$zip);
#
if ($rowlimit == 0) {
$rowlimit = 1000;
}
#
if ($calllike!= '') {
$query = "select en.callsign, full_name, address1, city, state, zip, class, former_call from en, am, hd where en.fccid=am.fccid and en.fccid=hd.fccid and hd.status=\"A\" and en.callsign like \"$calllike%\"";
} else {
if ($callsearch!= '') {
$query = "select en.callsign, full_name, address1, city, state, zip, class, former_call from en, am, hd where en.fccid=am.fccid and en.fccid=hd.fccid and hd.status=\"A\" and en.callsign=\"$callsearch\"";
} else {
if ($zip!= '' ) {
$query = "select en.callsign, full_name, address1, city, state, zip, class, former_call from en, am, hd where en.fccid=am.fccid and en.fccid=hd.fccid and hd.status=\"A\" and en.zip like \"$zip%\" order by en.callsign limit $rowlimit";
}
}
}
#
if ( $query!= '' ) {
$link = mysql_connect("localhost", "myusername", "mypassword") or die ("Could not connect to database. Sorry, dude. 72");
mysql_select_db("call_log") or die("Could not select database");
$result = mysql_query($query) or die("Query failed");
if ( mysql_num_rows($result) == 1) {
$row = mysql_fetch_row ($result);
$row[6] = translate_class($row[6]);
print "<b>$row[0]</b><br>$row[1]<br>$row[2]<br>$row[3],$row[4] $row[5]<br> <br>Class: $row[6]";
if ( $row[7]!= '' ) {
print"<br>Former Callsign: $row[7]";
}
} else {
if ( mysql_num_rows($result) > 1 ) {
$rowcount = mysql_num_rows($result);
print "Records found: $rowcount ";
if ( $rowcount == $rowlimit) {
print "(maximum record limit)";
}
print "<table>";
for ($rowcounter = 1; $rowcounter <= $rowcount; $rowcounter++) {
$row = mysql_fetch_row ($result);
$row[6] = translate_class($row[6]);
print "<tr>";
#print "<b>$row[0]</b>,$row[1],$row[2],$row[3],$row[4] $row[5], $row[6]<br>";
print "<td><b><font size=2>$row[0]</b></td><td><font size=2>$row[1]</td><td><font size=2>$row[2]</td><td><font size=2>$row[3]</td><td><font size=2>$row[4]</td><td><font size=2>$row[5]</td><td><font size=2>$row[6]</td>";
print "</tr>";
}
print "</table>";
} else {
print "<br>No records found...";
}
}
#
mysql_free_result($result);
mysql_close($link);
} else {
print "<br>Please enter some criteria...";
}
#
?>
</P></FONT></FONT>
<p></font></td>
</tr>
</table>
Thank you!
[edited by: eelixduppy at 12:15 am (utc) on May 10, 2007]
[edit reason] removed specifics and some code [/edit]
1. apart from ereging values you put into db, I would also use mysql_real_escape_string:
$zip = mysql_real_escape_string($zip);
...etc for $callsearch, $calllike and $rowlimit
2. you know there is a function elseif? It will make your code a bit clearer.
3. Back to your main query:
Before </table> I would query the second table, then retrieve the data from it, and at last close the </table>
I wouldn't put the query into the main. To do that you would need to use UNION, which would slower your query. My method is a bit faster.
Hope this helps you
michal