PHP bir sayım sorun var ...
MySQL dinamik bir damla aşağı liste oluşturma. Ben menüyü ilk damlasını seçtiğinizde, nasıl veritabanından 10 ürünleri gibi ... arama sonucu sayısını alabilirim?
İşte benim kod:
ajax .. dosyası:
var xmlHttp
function showCount(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="phpApplication.php";
url=url+"?action=count2";
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("POST",url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("countR").innerHTML=xmlHttp.responseText;
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
PHP Uygulama:
class Application {
public function __construct () {
}
function conn($sql)
{
$host = "localhost";
$username = "root";
$pwd = "";
$dbname = "example";
//echo "commnecing connection to local db<br>"
if (!($conn=mysql_connect($host, $username, $pwd))) {
printf("error connecting to DB by user = $username and pwd=$pwd");
exit;
}
$db3=mysql_select_db($dbname,$conn) or die("Unable to connect to local database");
$result = mysql_query($sql) or die ("Can't connect because ". mysql_error());
return $result;
}//end function
function dropdown($field, $table)
{
//initialize variables
$oHTML = '';
$result = '';
//check to see if the field is passed correctly
if (($field == "")||($table == ""))
{
die("No column or table specified to create drop down from!");
}
$sql = "select distinct($field) from $table";
//call the db function and run the query
$result = $this->conn($sql);
//if no results are found to create a drop down return a textbox
if ((!$result) ||(mysql_num_rows($result)==0))
{
$oHTML .= "<input type='text' name='$field' value='' size='15'>";
}elseif (($result)&&(mysql_num_rows($result)>0)){
//build the select box out of the results
$oHTML .= "<select name='$field' onchange='showCount(this.value)'>\n<option value='all'>All</option>\n";
while ($rows = mysql_fetch_array($result))
{
$oHTML .= "<option value='".$rows[$field]."'>".$rows[$field]."</option>\n";
}
$oHTML .= "</select>\n";
}
//send the value back to the calling code
return $oHTML;
}//end function
function countResult(){
$sql2 = "select * from produkt_finder_table where 1 ";
if ( $q == (!empty($_POST['Bauform_d']))&&($_POST['Bauform_d'] != 'all'))
{
$sql2 .= " and Bauform_d like '". addslashes($_POST['Bauform_d'])."%' ";
}
if ((!empty($_POST['Beschreibung_d']))&&($_POST['Beschreibung_d'] != 'all'))
{
$sql2 .= " and Beschreibung_d like '". addslashes($_POST['Beschreibung_d'])."%' ";
}
if ((!empty($_POST['SelectSchutzart_Cust_Bereich_d']))&&($_POST['SelectSchutzart_Cust_Bereich_d'] != 'all'))
{
$sql2 .= " and SelectSchutzart_Cust_Bereich_d like '". addslashes($_POST['SelectSchutzart_Cust_Bereich_d'])."%' ";
}
if ((!empty($_POST['SelectErfassungswinkel_Cust_Bereich_d']))&&($_POST['SelectErfassungswinkel_Cust_Bereich_d'] != 'all'))
{
$sql2 .= " and SelectErfassungswinkel_Cust_Bereich_d like '". addslashes($_POST['SelectErfassungswinkel_Cust_Bereich_d'])."%' ";
}
if ((!empty($_POST['ArtikelProduktgruppe_d']))&&($_POST['ArtikelProduktgruppe_d'] != 'all'))
{
$sql2 .= " and ArtikelProduktgruppe_d like '". addslashes($_POST['ArtikelProduktgruppe_d'])."%' ";
}
$result2 = $this->conn($sql2);
//run query
if (!$result2){ die("No results due to database error.<br>".mysql_error()); }
if (mysql_num_rows($result2)==0)
{
echo "0";
}else{
echo mysql_num_rows($result2);
}
}
function count1(){
if ((!empty($_POST['Bauform_d']))&&($_POST['Bauform_d'] != 'all')) {
}
$sql2 .= " and Bauform_d like '". addslashes($_POST['Bauform_d'])."%' ";
$sql2 = "select * from produkt_finder_table where 1 ";
$result2 = $this->conn($sql2);
if (!$result2){ die("No results due to database error.<br>".mysql_error()); }
if (mysql_num_rows($result2)==0)
{
echo "0";
}else{
echo mysql_num_rows($result2);
}
//run query
}
function countResultAll(){
$sql = "select * from produkt_finder_table where 1 ";
if ((!empty($_POST['searchfield']))&&($_POST['searchfield'] != 'all'))
{
$sql .= " and ArtikelName like '". addslashes($_POST['searchfield'])."%' ";
}
$result = $this->conn($sql);
//run query
if (!$result){ die("No results due to database error.<br>".mysql_error()); }
if (mysql_num_rows($result)==0)
{
echo "0";
}else{
echo mysql_num_rows($result);
}
}
function search()
{
//base sql
$sql = "select * from produkt_finder_table where 1 ";
//get the values from the form
if ((!empty($_POST['Bauform_d']))&&($_POST['Bauform_d'] != 'all'))
{
$sql .= " and Bauform_d like '". addslashes($_POST['Bauform_d'])."%' ";
}
if ((!empty($_POST['Beschreibung_d']))&&($_POST['Beschreibung_d'] != 'all'))
{
$sql .= " and Beschreibung_d like '". addslashes($_POST['Beschreibung_d'])."%' ";
}
if ((!empty($_POST['SelectSchutzart_Cust_Bereich_d']))&&($_POST['SelectSchutzart_Cust_Bereich_d'] != 'all'))
{
$sql .= " and SelectSchutzart_Cust_Bereich_d like '". addslashes($_POST['SelectSchutzart_Cust_Bereich_d'])."%' ";
}
if ((!empty($_POST['SelectErfassungswinkel_Cust_Bereich_d']))&&($_POST['SelectErfassungswinkel_Cust_Bereich_d'] != 'all'))
{
$sql .= " and SelectErfassungswinkel_Cust_Bereich_d like '". addslashes($_POST['SelectErfassungswinkel_Cust_Bereich_d'])."%' ";
}
if ((!empty($_POST['ArtikelProduktgruppe_d']))&&($_POST['ArtikelProduktgruppe_d'] != 'all'))
{
$sql .= " and ArtikelProduktgruppe_d like '". addslashes($_POST['ArtikelProduktgruppe_d'])."%' ";
}
//run query
$result = $this->conn($sql);
if (!$result){ die("No results due to database error.<br>".mysql_error()); }
if (mysql_num_rows($result)==0)
{
echo "No Results found!";
}else{
echo "<table border='1' class='corner'><th width='332'><a href='product.php'>Back</a></th>";
echo "<th>Product Result</th>";
echo "<td width='40' align='center' style=' font-size:16px'><div id='countR'>";
$this->countResult();
echo "</div></td>";
echo "</table>";
// echo '<div style="float:right; font-size:16px">'.$this->countResultAll().'</div>';
// echo "<div style='float:left; font-size:16px'>Produkt Result</div>";
echo "<table border='1' class='corner'>";
$i = 1;
if((mysql_num_rows($result) % 2) == 0){
$complete = false;
}else{
$complete = true;
}
while ($rows= mysql_fetch_array($result))
{
echo "<td>";
echo "<ul><li class='addResult'><span class='red'>".$rows['Bauform_d']."<br /><span class='black'>".$rows['ArtikelName']."</span></span><img src='{imag}' alt='' /> <a href='#'>More Info</a> </li></ul>";
echo "</td>";
if(($i % 2) == 0){
echo "</tr><tr>";
}
$i++;
}
if($complete == true){
echo "<td> </td>";
}
echo "</tr></table>";
echo "<table border='1' class='corner'><th width='332'><a href='product.php'>Back</a> <div></div></th>";
echo "<th>Product Result</th>";
echo "<td width='40' align='center' style=' font-size:16px'>";
$this->countResult();
echo "</td>";
echo "</table>";
}
}
function show_form()
{
$Bauform = $this->dropdown('Bauform_d','produkt_finder_table');
$Beschreibung = $this->dropdown('ArtikelGruppe_d','produkt_finder_table');
$SelectSchutzart = $this->dropdown('SelectSchutzart_Cust_Bereich_d','produkt_finder_table');
$SelectErfassungswinkel = $this->dropdown('SelectErfassungswinkel_Cust_Bereich_d','produkt_finder_table');
$ArtikelProduktgruppe = $this->dropdown('ArtikelProduktgruppe_d','produkt_finder_table');
echo "<form name='search' action='productResult.php?action=search' method='POST'>
<table width='50%' align='center' valign='center' class='corner'>
<tr>
<td colspan='2' align='center'> Search Form <div id='countR' style='float:right; font-size:16px'>Count</div></td>
</tr>
<tr>
<td align='right'>Montageart:</td><td>$Bauform</td>
</tr>
<tr>
<td align='right'>ProduktGruppe:</td><td>$Beschreibung</td>
</tr>
<tr>
<td align='right'>Speisung:</td><td>$SelectSchutzart</td>
</tr>
<tr>
<td align='right'>Reichweite:</td><td> $SelectErfassungswinkel </td>
</tr>
<tr>
<td align='right'>Erfwinkel:</td><td>$ArtikelProduktgruppe </td>
</tr>
<tr>
<td colspan='2' align='center'><input type='submit' name='submit' value='Go!'></td>
</tr>
</table>
</form>";
}//end function
function searchAll()
{
//base sql
$sql = "select * from produkt_finder_table where 1 ";
//get the values from the form
//NOTE: You should do way more valdation on the values before you attempt to process anything
if ((!empty($_POST['searchfield']))&&($_POST['searchfield'] != 'all'))
{
$sql .= " and ArtikelName like '". addslashes($_POST['searchfield'])."%' ";
}
//run query
$result = $this->conn($sql);
if (!$result){ die("No results due to database error.<br>".mysql_error()); }
if (mysql_num_rows($result)==0)
{
echo "No Results found!";
}else{
echo "<table border='1' class='corner'><th width='332'><a href='product.php'>Back</a></th>";
echo "<th>Product Result</th>";
echo "<td width='40' align='center' style=' font-size:16px'><div id='countR'>";
$this->countResultAll();
echo "</div></td>";
echo "</table>";
// echo '<div style="float:right; font-size:16px">'.$this->countResultAll().'</div>';
// echo "<div style='float:left; font-size:16px'>Produkt Result</div>";
echo "<table border='1' class='corner'>";
$i = 1;
if((mysql_num_rows($result) % 2) == 0){
$complete = false;
}else{
$complete = true;
}
while ($rows= mysql_fetch_array($result))
{
echo "<td>";
echo "<ul><li class='addResult'><span class='red'>".$rows['Bauform_d']."<br /><span class='black'>".$rows['ArtikelName']."</span></span><img src='{imag}' alt='' /> <a href='#'>More Info</a> </li></ul>";
echo "</td>";
if(($i % 2) == 0){
echo "</tr><tr>";
}
$i++;
}
if($complete == true){
echo "<td> </td>";
}
echo "</tr></table>";
echo "<table border='1' class='corner'><th width='332'><a href='product.php'>Back</a> <div></div></th>";
echo "<th>Product Result</th>";
echo "<td width='40' align='center' style=' font-size:16px'>";
$this->countResultAll();
echo "</td>";
echo "</table>";
}
}
}
$action = $_GET['action'];
$proFin = new Application();
switch($action) {
case 'show':
$proFin->show_form();
break;
case 'search':
$proFin->search();
break;
case 'searchAll':
$proFin->searchAll();
break;
case 'count':
$proFin->countResult();
break;
case 'count1':
print 'hallo';
break;
case 'count2':
if (!empty($_POST))
{
var_dump($_POST);
}
break;
case 'count3':
echo $rows[$field];
break;
}