Problema cu Null in Drop Down List - Ajax
Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
-
Eddy90
- Mesaje:2
Problema cu Null in Drop Down List - Ajax
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.
MarPlo
Mesaje:4343
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.
Eddy90
Mesaje:2
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'; }
MarPlo
Mesaje:4343
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.
Subiecte similare
- Problema curs de Engleza
Sesizari Erori si Greseli
Primul mesaj
Buna.
Am descarcat cursul curs_eurocor-engleza_incepatori_1-16.rar si cand vreau sa-l dezarhivez imi da eroarea asta:
An error occures whilw...
Ultimul mesaj
Buna,
Poti sa descarci cursul de engleza, nivel intermediar, de la urmatoarele linkuri:
- Lectiile 1-16...
- O mica problema de animatie CSS
HTML - XHTML - CSS
Primul mesaj
Noroc, MarPlo!
1. Am vizitat pe twitter un site de animatie, in care website-ul actual se numeste CSS-Challenges,com. In respectivul website, sunt...
Ultimul mesaj
1. Multumesc pentru raspuns.
2. Am inteles raspunsul tau: este un mic examen oferit voluntarilor online, pentru a le afla capacitatile de rezolvare...
- Problema instalare Anime.JS
JavaScript - jQuery - Ajax
Primul mesaj
Salutare!
1. 6 decembrie 2020, 23.15 - download Anime.JS
2. Putin mai devreme, am incercat sa downloadez acest concept bazat pe JavaScript.
3....
Ultimul mesaj
Nu am inteles care e concret problema pe care o ai cu scriptul anime.js.