2009-02-18 13 views
0

Comme vous le voyez, j'ai créé une liste déroulante et je lui ai donné le nom du champ, et j'ai aussi la fonction count. Qu'est-ce que je veux faire est, si certains sélectionnez le menu déroulant .. montre le nombre de résultats trouvés dans le nombre comme 10, 20, .. si la deuxième liste déroulante sélectionnée, il va vérifier les deux déroulant sélectionné et passer le résultat count..like que continuous..if vous voulez voir l'exemple exactement ce que je veux est d'aller ici et choisissez voiture le nombre mettra à jour ..erreur de comptage php

http://en.comparis.ch/Carfinder/marktplatz/Search.aspx

je l'ajax et fonctionne bien, mais je peux N'obtenez pas le code PHP exact à compter en temps réel.

AJAX code ..

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; 
} 

Code PHP

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]."' name='".$rows[$field]."'>".$rows[$field]."</option>\n"; 

    } 
    $oHTML .= "</select>\n"; 

    } 
    //send the value back to the calling code 
    return $oHTML; 
}//end function 

function count1(){ 

     $sql2 = "SELECT SQL_CALC_FOUND_ROWS * from produkt_finder_table where Bauform_d ='".($_POST['Bauform_d'])."' "; 
     $query = $this->conn($sql2); 
     $result = mysql_query($query); 
     $count = mysql_result(mysql_query('SELECT FOUND_ROWS()'), 0, 0); 
     echo $count; 
     //$sql2 = "SELECT COUNT(Bauform_d) from produkt_finder_table where Bauform_d = 'mobil' "; 

    //echo var_dump($result1); 
    while($row = mysql_fetch_array($query)) 
    { 
    // echo $row['COUNT(Bauform_d)']; 
    } 
     //echo mysql_num_rows($query); 
    // if (isset($_POST['Bauform_d'])) 
//{ 
    /* if (mysql_num_rows($result)==0) { 
     echo '0'; 
     } else { 
    echo mysql_num_rows($result); 
    $row = mysql_fetch_array($result); 

    echo $result; 
    echo $row['COUNT(Bauform_d)']; 
    // } 
}*/ 
} 

$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 'count2': 

      $proFin->count1(); 

     break; 

     } 
+0

Veuillez formater votre code. –

+0

Vous comptez en temps réel? (aussi, vous savez que mysql a une fonction COUNT()?) – Svish

+0

Le code semble, d'un coup d'oeil rapide, bien. Comment déterminez-vous que le nombre d'enregistrements est incorrect? Nous ne pouvons pas dire sans accès aux données. –

Répondre

2

Quelles parties vous avez débogué?

Modifiez la fonction count1() pour renvoyer simplement l'heure ou quelque chose en utilisant time().

Ensuite, s'il renvoie la bonne valeur, vous savez que votre JS fonctionne et que votre script PHP appelle la bonne fonction.

Je suppose que le code PHP ne fonctionne pas car la requête SQL recherche $ _POST ['Bauform_d'] qui n'est pas défini lorsque vous appelez la requête xmlHTTP. Exécutez un print_r simple ($ _ POST); pour vous assurer que vous transmettez toutes les données attendues dans la requête. Si elle ne puis changer votre code JS pour passer la valeur - lorsque vous êtes sûr que votre script php est passé toutes les variables correctes commencent alors à rajouter dans votre requête SQL, etc.

0

débogage de débogage

Jacob la réponse est la clé.