Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 9
Seite [1]
josch


Try to beat me




Beiträge: 188
# Thema - 26.10.2008 um 20:31 Uhr
Hallo zusammen,

bin im Javascript/AJAX nicht die Leuchte und hoffe daher auf duRiel und sein AJAX wissen


Habe mir Anhand der mods/messages/create.php das ganze mal angeschaut, das ganze in nen Dropdown umzuwandeln war auch nicht besonders schwer.

Mein Problem ist folgendes:

dropdown_1 enthält values, je nach Values wird eine ID ausgegeben, wie übergebe ich diese aber an dropdown_2 und von dropdown_2 auf dropdown_3 ?

hier mal der bisherige Quellcode

suchmaske
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
1. / 2. / ... 

<?php
$cs_lang 
cs_translate('cars');
$data = array();
$data['head']['message'] = cs_getmsg();

$cs_manf cs_sql_select(__FILE__,'categories','categories_id, categories_name',"categories_mod = 'links'",'categories_name DESC',0,0);
$manf_loop count($cs_manf);

for(
$run=0$run<$manf_loop$run++) {
$data['manf'][$run]['name'] = cs_secure($cs_manf[$run]['categories_name']);
$data['manf'][$run]['id'] = cs_secure($cs_manf[$run]['categories_id']);
  
$more  'onClick="cs_ajax_getcontent(\'' $cs_main['php_self']['dirname'] . 'mods/cars/getmanufacturers.php';
  
$more .= '?name=\' + document.getElementById(\'manufacturer\').value,\'typ\')"';
$data['manf'][$run]['more'] = $more;
}

    

echo 
cs_subtemplate(__FILE__,$data,'cars','list');
?>


das dazugehörige tpl

<select name="manufacturer" id="manufacturer">
<option></option>
{loop:manf}
<option value="{manf:name}" {manf:more}>{manf:name}</option>
{stop:manf}
</select>
<span id="output"></span>

<select name="typ" id="typ">
<option>{lang:any}</option>
</select>


und die getmanufacturers.php
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
1. / 2. / ... 

<?php
// ClanSphere 2008 - www.clansphere.net
// $Id: $  

@error_reporting(E_ALL);

$cs_logs = array('errors' => '''sql' => '''queries' => 0'warnings' => 0'dir' => 'logs');

chdir('../../');
require_once(
'system/core/functions.php');

if(
file_exists('setup.php')) {
    require_once(
'setup.php');
    require_once(
'system/database/' $cs_db['type'] . '.php');
    
$cs_db['con'] = cs_sql_connect($cs_db);
    
$cs_main cs_sql_option(__FILE__,'clansphere');
}
else
{
    die(
'<a href="install.php">Installation required</a> or missing setup.php');
}

chdir('mods/cars/');

$_GET['name'] = !empty($_GET['name']) ? cs_sql_escape($_GET['name']) : '';

$current $_GET['name'];
$old substr($_GET['name'],0,strlen($_GET['name']) - strlen($current));

if(!empty(
$current)) {
  
$where "categories_name like'" cs_sql_escape($current) . "%'";
  
$result cs_sql_select(__FILE__,'categories','categories_name, categories_id',$where,0,0,10);  
  if(!empty(
$result)) {
    
$out '';
    foreach(
$result AS $value) {
    
$out .= $value['categories_id'];
    }
    echo 
$out;
  } 
}

?>



Wenn ich einen Wert aus dropdown_1 auswähle, wird dropdown_2 "minimiert", also ohne den vorhandenen <option> ausgegeben. Ich gehe daher davon aus, das zumindest nicht alles falsch ist.

Wo lese ich aber nun die ID aus, das ich eine weitere Abfrage machen kann?
Bzw. wo kann ich die ID abgreifen? Ich würde dann eine gettyp.php erstellen mit ähnlichem Inhalt der get_x file.s


Würd mich freuen @ duRiel
Gruß


------------------
Der Vorteil der Klugheit besteht darin, daß man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.
Inaktiv
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 1 - 26.10.2008 um 23:00 Uhr
hi

nein, alles ist nicht falsch

die ausgabe von getmanufacturers.php wird in der tat in das select feld geschrieben.
aber was ist die ausgabe von getfacturers.php?
das sind aneinandergekettete ids!

in der datei sollten option felder entstehen, damit das einfügen innerhalb des select feldes auch sinn macht.


das weiterreichen der auswahl machst du dann wie vorher auch. du kannst gleich von anfang an auch bei dem 2. dropdown einstellen dass der nen weiteren ajax request zur folge hat. würde aber bei beiden einstellen dass der request erst bei onchange erfolgt. wenn man 2 mal das selbe wählt erfolgt bei dir ein unnötiger request.


viel erfolg,

duRiel


Inaktiv
|
josch
Thread-Ersteller


Try to beat me




Beiträge: 188
# Antwort: 2 - 26.10.2008 um 23:15 Uhr
26.10.2008 um 23:00 Uhr - duRiel:

aber was ist die ausgabe von getfacturers.php?


Wo hab ich das geschrieben ?

habe eine getmanufacturers und eine getmodell.php

bei der getmodell.php habe ich in der foreach als $out
<option value="$value['cars_id']">$value['cars_name']< /option>

Allerdings übernimmt er dort keine Daten, hättest du dafür einen Bespielcode?


------------------
Der Vorteil der Klugheit besteht darin, daß man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.

Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 3 - 26.10.2008 um 23:17 Uhr
du lädst doch die ausgabe von getmanufacturers.php in das select mit id "typ".
und die ausgabe von getmanufacturers.php sind nur ids:

 
1.
2.
3.
4.
5.
1. / 2. / ... 
<?php $out '';
    foreach(
$result AS $value) {
    
$out .= $value['categories_id'];
    }
    echo 
$out?>


wie hast du denn diese getmodell.php eingebunden?


Inaktiv
|
josch
Thread-Ersteller


Try to beat me




Beiträge: 188
# Antwort: 4 - 26.10.2008 um 23:20 Uhr
Ach, du meinst direkt in der manufacturers die options einbinden...
noch garnicht, das ist ja mein Problem

ich probier mal eben deine variante aus.

habe die getmanufacurers.php jetzt umgeschrieben... so funktioniert es auch nicht :(
wenn ich $result auskommentiere und $cat als ausgabe nehme, dann gibt er genau den "Hersteller" aus, den ich ausgewählt habe (bzw. die ID)... aber er zeigt mir nicht die Fahrzeuge an :(

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
1. / 2. / ... 

<?php
// ClanSphere 2008 - www.clansphere.net
// $Id: $  

@error_reporting(E_ALL);

$cs_logs = array('errors' => '''sql' => '''queries' => 0'warnings' => 0'dir' => 'logs');

chdir('../../');
require_once(
'system/core/functions.php');

if(
file_exists('setup.php')) {
    require_once(
'setup.php');
    require_once(
'system/database/' $cs_db['type'] . '.php');
    
$cs_db['con'] = cs_sql_connect($cs_db);
    
$cs_main cs_sql_option(__FILE__,'clansphere');
}
else
{
    die(
'<a href="install.php">Installation required</a> or missing setup.php');
}

chdir('mods/cars/');

$_GET['name'] = !empty($_GET['name']) ? cs_sql_escape($_GET['name']) : '';

$current $_GET['name'];
$old substr($_GET['name'],0,strlen($_GET['name']) - strlen($current));

if(!empty(
$current)) {
  
$where "categories_name like'" cs_sql_escape($current) . "%'";
  
$cat cs_sql_select(__FILE__,'categories','categories_name, categories_id',$where,0,0,10);  
  
$result cs_sql_select(__FILE__,'cars','cars_name',"categories_id = '".$cat['categories_id']."'",0,0,0);
  if(!empty(
$result)) {
    
$out '';
    foreach(
$result AS $value) {
    
$out .= '<option value="'.$value['cars_name'].'">'.$value['cars_name'].'</option>';
    }
    echo 
$out;
  } 
}

?>


------------------
Der Vorteil der Klugheit besteht darin, daß man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.

Zuletzt editiert von josch am 26.10.2008 um 23:29 Uhr (1x Editiert)
Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 5 - 26.10.2008 um 23:36 Uhr
eine fehlerquelle und ein speed-drücker bleiben dir erspart, wenn du gleich die id der kategorie übergibst statt den namen zu übergeben und dann die kategorie wieder auszulesen um an die id zu kommen.

deshalb mach bei der suchmaske bzw dessen tpl direkt die id als value und dann mach in der get... direkt die anfrage auf deine autos.


Inaktiv
|
josch
Thread-Ersteller


Try to beat me




Beiträge: 188
# Antwort: 6 - 26.10.2008 um 23:41 Uhr
Super, das klappt schonmal... und in der getmanufactureres übergebe ich dann direkt die neue id an an die getmodell ?

Das probier ich gleich mal aus


------------------
Der Vorteil der Klugheit besteht darin, daß man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.

Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 7 - 26.10.2008 um 23:43 Uhr
jo, aber in der getmanufacturers.php sollten die optionenvalues wieder die ids sein.


Inaktiv
|
josch
Thread-Ersteller


Try to beat me




Beiträge: 188
# Antwort: 8 - 27.10.2008 um 00:00 Uhr
Er spricht wieder das nächste Dropdown an, wunderbar... muss nun aber die db ändern, das spielt hier aber nicht rein...

danke dir nochmals duRiel... ich meld mich, wenn wieder was nicht klappt


------------------
Der Vorteil der Klugheit besteht darin, daß man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.

Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 9 - 27.10.2008 um 00:03 Uhr
alles klar, dann kann ich jetzt ja beruhigt schlafen gehen


Inaktiv
|
Antworten: 9
Seite [1]


Sie müssen sich registrieren, um zu antworten.