Pagina 1 din 1
Problema cu Null in Drop Down List - Ajax
Scris: Mie Feb 29, 2012
de Eddy90
Salut... de cateva zile ma tot zbat sa rezolv o problema si nu ii dau de cap in nici un fel... am luat modelul de pe acest site de la selectia multipla cu php mysql si ajax...
https://marplo.net/ajax/multiple-sel ... -ajax.html
Cod: Selectaţi tot
Problema este in felul urmator... sa zicem ca am in baza de date aceste date
| ID | Marca | Motorizare | Capacitate_cilindrica | Rezultat |
---------------------------------------------------------------------------------------
| 1 | Dacia | benzina | 1.4 litri | <link1> |
| 2 | Dacia | benzina | 1.6 litri | <link2> |
| 3 | Dacia | diesel | /* NULL */ | <link3> |
| 4 | Dacia | diesel | /*null */ | <link4> |
| 5 | BMW | /*null*/ | 2.2 litri | <link5> |
| 6 | BMW | /*null*/ | 2.5 litri | <link6> |
| etc| etc |................................................................. |
cum as putea sa fac sa sar peste selecturile in care nu am nici o inregistrare...de ex: daca selectez DACIA... apoi DIESEL...sa imi afiseze link3 si 4... sau ...daca selectez BMW urmatorul select sa fie la capacitatea cilindrica...adika sa sara peste selecturile in care nu este nici o valoare de selectat... sper ca ati inteles problema pe care o am si va rog din tot sufletul sa ma ajutati pentru ca nu mai stiu ce sa ii mai fac...
...va multumesc mult tuturor.
Problema cu Null in Drop Down List - Ajax
Scris: Mie Feb 29, 2012
de MarPlo
Salut
Incearca sa inlocuiesti in "select_list.php", randurile:
Cod: Selectaţi tot
// defineste sirul cu conditia WHERE, apoi instructiunea SELECT
$where = isset($ar_where) ? ' WHERE '. implode($ar_where, ' AND ') : '';
$sql = "SELECT DISTINCT `$col` FROM `$table`".$where;
Cu acestea:
Cod: Selectaţi tot
// defineste sirul cu conditia WHERE, apoi instructiunea SELECT
$where = isset($ar_where) ? implode($ar_where, ' AND '). ' AND ' : '';
$sql = "SELECT DISTINCT `$col` FROM `$table` WHERE ".$where.' `'.$col.'` IS NOT NULL AND `'.$col.'` <>""';
Dar asta va rezolva doar intr-un fel diferit problema, in sensul ca va exclude randurile cu NULL, dar nu va trece la coloana urmatoare.
Acest script nu poate sa sara peste NULL la urmatoarea coloana, findca nu stie de ea, ci doar de cele anterioare selectate (pastrate in Sesiune) si cea curenta din lista Select.
Fiecare coloana reprezinta datele (optiunile) pt. o anumita lista <select>, nu poate adauga optiunea din coloana cu datele listei 3 in <select>-ul 2.
Problema cu Null in Drop Down List - Ajax
Scris: Mie Feb 29, 2012
de Eddy90
am mai incercat sa modific intre linia 38 si 41.... din select_list.php ...daca as reusi sa validez aici cred ca va merge sa trec mai departe...dar nici aici nu imi iasa...practic...verifica daca e null...si trece mai departe pana la cod
DE AICI INCEPE RANDUL 38
Cod: Selectaţi tot
if (mysqli_connect_errno()) { exit('Connect failed: '. mysqli_connect_error()); } // verificare conexiune
// verifica daca urmatoarea coloana prezinta doar elemente nule, pentru a o exclude din optiuni
$valid=TRUE;
$i=1;
while($valid & isset($wval) & ($key+$i)<$last_key){
$check=FALSE;
$qry="SELECT ".$ar_cols[$key+$i]." FROM ".$table." WHERE ".$wcol."=".$wval;
$cres = $conn->query($qry);
$allf=$cres->fetch_all();
foreach($allf as $val){
if(!is_null($val)){
$check = TRUE;
break;
}
}
if($check){
$valid=FALSE;
$next_col=$ar_cols[$key+$i];
}
else{
$i++;
}
}
if(!isset($wval)) $next_col=$ar_cols[$key+1];
// setare array cu datele conditiei WHERE (coloana=valoare) pt. instructiunea SELECT
for($i=1; $i<=$key; $i++) {
$ar_where[] = '`'.$ar_cols[$i-1].'`='.$_SESSION['ar_cols'][$ar_cols[$i-1]];
}
// defineste sirul cu conditia WHERE, apoi instructiunea SELECT
$where = isset($ar_where) ? ' WHERE '. implode($ar_where, ' AND ') : '';
$sql = "SELECT DISTINCT `$col` FROM `$table`".$where;
$result = $conn->query($sql); // trimite comanda la serverul MySQL
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
// seteaza evenimentul "onchange" care se adauga in <select>
$onchg = $next_col!==null ? " onchange=\"ajaxReq('$next_col', this.value);\"" : '';
// seteaza tag-ul pt lista select, daca nu e ultima coloana
if($col!=$ar_cols[$last_key]) $re_html = $col. ': <select name="'. $col. '"'. $onchg. '><option>- - -</option>';
echo "<br />";
while($row = $result->fetch_assoc()) {
/*$valid=TRUE;
//verifica daca is nule/nenule inregistrarile din $row
$result2=$conn->query("SELECT * FROM ".$table." WHERE ".$col."='".$row[$col]."'");
//echo $conn->error;
$check=TRUE;
$check2=FALSE;
$ar_lim=array_search($col, $ar_cols);
while($row2=$result2->fetch_row()){
$check=TRUE;
for($i=$ar_lim+1; $i<count($row2); $i++){
if($row2[$i]=='' | $row2[$i]==NULL){
$check=FALSE;
break;
}
}
if($check==TRUE) {
$check2=TRUE;
break;
}
}
if($check2==FALSE) {echo "banana"; $valid=FALSE;}
*/
// daca e ultima coloana, returneaza datele din ea, altfel le adauga in tag-uri OPTION
if($col==$ar_cols[$last_key]) $re_html .= '<br/>'. $row[$col];
else $re_html .= '<option value="'. $row[$col]. '">'. $row[$col]. '</option>';
}
if($col!=$ar_cols[$last_key]) $re_html .= '</select> '; // inchide lista Select
}
else { $re_html = '0 rezultate'; }
Problema cu Null in Drop Down List - Ajax
Scris: Joi Mar 01, 2012
de MarPlo
Mai mult decat modificarea prezentata in raspunsul anterior, care exclude inregistrarile cu Null nu stiu cum sa fac.
Scriptul functioneaza bine asa cum e.
Pt. ceea ce vrei, probabil trebuie sa faci tu un script de la zero, cu o abordare strict la ce vrei sa obtii, ca sa nu te incurci in logica acestuia, care e facut pt. cazuri generale, simple.