Preluare ID in Php in script Multiple Drop Down List

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
Avatar utilizator
Senior70
Mesaje:23

Preluare ID in Php in script Multiple Drop Down List

Sal ! ...scuze ca revin la subiect referitor la scriptul: https://marplo.net/ajax/multiple-sel ... -ajax.html
- dar nu am reusit dupa multe stradanii sa rezolv problema ...
Nu stiu cum pot extrage indecsii elementelor ce-mi apar in fiecare coloana selectata cu codul Multiple Select Drop Down List ...
Am reusit sa preiau elementele din coloane, dar ma intereseaza sa pot prelua si id -ul fiecarui element selectat ...

Cod: Selectaţi tot

if(isset($_POST) && count($_POST) >0){
//preia valorile selectate, dupa numele coloanelor stiute
  $val_col1 = $_POST['domeniul']; 
  $val_col2 = $_POST['sectiunea'];
  $val_col3 = $_POST['optiunea']; 
......
dar am nevoie sa folosesc si id-ul fiecarui element selectat...

Cod: Selectaţi tot

$id_col1 ...
$id_col2...
$id_col3 ...
.......

Cod: Selectaţi tot

$sql1 = "insert into clienti values (null, '$id_col1', '$val_col1', '$id_col2', '$val_col2', '$id_col3','$val_col3', ......)";
	if (mysqli_query($conn, $sql1)or die(mysql_error())){
	echo "Inregistrare facuta";
	} else{		
		echo "ceva nu merge !";
		}
}

MarPlo Mesaje:4343
Salut
In acel script elementul <select> nu are ID adaugat, ci doar atribut "name" cu numele coloanei.

Cod: Selectaţi tot

$re_html = $col. ': <select name="'. $col. '"'. $onchg. '><option>- - -</option>';
Nu stiu la ce id te referi, cum sau de unde este adaugat la elementul <select>.

andras Mesaje:430
Mai demult faceam tot felul de artificii sa pot prelua mai multe date in POST. Spre exemplu (pseudocod):

Cod: Selectaţi tot

<select name="domeniu"><option value ="'xyz'+'_?_'+''3">xyz</option></select>
- deci value era o expresie compusa trimisa prin POST cu xyz valoarea efectiva si 3 care era ID, index sau orice altceva ce vrei sa trimiti prin POST. In fsierul apelat cu ajax spargeam sirul

Cod: Selectaţi tot

$arrayDomeniu = explode("_?_", $_POST['domeniu']);
si obtineam cele 2 valori.
Probabil ca acum as cauta o metoda mai eleganta de rezolvare, dar la vremea respectiva aceste artificii au functionat foarte bine. Poate iti va fi de folos aceasta solutie.

MarPlo Mesaje:4343
Daca te referi la id-ul din tabelul mysql de la randurile care apar la <option> in listele <select>, poti face asa:
In fisierul "select_list.php" fa aceste trei modificari:
1. Inlocuieste randul de cod:

Cod: Selectaţi tot

$sql = "SELECT DISTINCT `$col` FROM `$table`".$where;
- Cu acesta:

Cod: Selectaţi tot

$sql = "SELECT DISTINCT `$col`, id FROM `$table`".$where ." GROUP BY `$col`";
2. Codul:

Cod: Selectaţi tot

$onchg = $next_col!==null ? " onchange=\"ajaxReq('$next_col', this.value);\"" : '';
- Cu acesta:

Cod: Selectaţi tot

$onchg = $next_col!==null ?" onchange=\"ajaxReq('$next_col', this.value.split('^?')[0]);\"" :'';
3. Si randul:

Cod: Selectaţi tot

else $re_html .= '<option value="'. $row[$col]. '">'. $row[$col]. '</option>';
- Cu acesta:

Cod: Selectaţi tot

else $re_html .= '<option value="'. $row[$col]. '^?'. $row['id'] .'">'. $row[$col]. '</option>';
In scriptul unde preiei valorile din <select>, pentru fiecare Select va fi trimisa o valoare de forma: "val_col^?ID". Din aceasta poti separa valorile cu explode():

Cod: Selectaţi tot

$val_col = explode('^?', $_POST['domeniul']);
$val_col1 = $val_col[0];
$id_col1 = $val_col[1];

$val_col = explode('^?', $_POST['sectiunea']);
$val_col2 = $val_col[0];
$id_col2 = $val_col[1];
//...

andras Mesaje:430
MarPlo, cam la asta m-am gindit si eu, doar ca eu nu am timpul si nici rabdarea sa explic atit de detailat. Pe tine te apreciaza toti tocmai pentru rabdarea de a explica fiecaruia pe intelesul lui.
Sarbatori fericite!

Senior70 Mesaje:23
OK, cu toate ca este tardiv,( abia acum am intrat in "probleme " ), va multumesc MarPlo si andras, ca v-ati aplecat asupra problemei mele, dar tre sa spun ca nu merge ... am facut exact modificarile, dar la rulare nu-mi citeste mai mult decat prima coloana (domenii), apoi, sta ...
Oricum, eu am renuntat la asta si am mers pe alte cai.