Moin,
bin mir nicht sicher ob es hierher gehört oder doch lieber zu AJAX/Javascript.
Wenn falsch, bitte verschieben.
Ich habe mir, mit Hilfe von fertigem Code, ein dynamisches Dropdown erstellt.
Es kalappt auch alles wie es soll.
Nur ich rufe die Seite auf 2 verschiedene Wege auf.
Einmal wählt der User die Einträge von Hand aus.
Und beim zweiten Weg, leite ich mit RewriteRule direkt auf die Seite, sodass die Einträge direkt gewählt sind und der User nur das Formular abschicken muss.
Damit das so klappt wie oben beschrieben, habe ich einen Codeteil quasi doppelt.
Nun ist halt das Problem, wenn man über RewriteRule auf die Seite zugreift, sich aber mit dem Link vertan hat und im übergordneten Dropdown die Auswahl ändert, erscheint das untergeordnete Dropdown ein zweites mal.
Hat jemand eine Idee wie ich dieses Problem lösen kann?
Meine Idee war ja, quasi ein onchange beim setzen des select auszulösen, damit der AJAX/Javascript Teil greift.
Aber ich wüsste nicht wie das gehen soll.
Oder evtl. auch mit AJAX/Javascript Codeanpassung? Allerdings habe ich davon so keinen Dunst.
Inhalt index.php:
Inhalt add.php:
Inhalt selectboxen.php
Grüße
bin mir nicht sicher ob es hierher gehört oder doch lieber zu AJAX/Javascript.
Wenn falsch, bitte verschieben.
Ich habe mir, mit Hilfe von fertigem Code, ein dynamisches Dropdown erstellt.
Es kalappt auch alles wie es soll.
Nur ich rufe die Seite auf 2 verschiedene Wege auf.
Einmal wählt der User die Einträge von Hand aus.
Und beim zweiten Weg, leite ich mit RewriteRule direkt auf die Seite, sodass die Einträge direkt gewählt sind und der User nur das Formular abschicken muss.
Damit das so klappt wie oben beschrieben, habe ich einen Codeteil quasi doppelt.
Nun ist halt das Problem, wenn man über RewriteRule auf die Seite zugreift, sich aber mit dem Link vertan hat und im übergordneten Dropdown die Auswahl ändert, erscheint das untergeordnete Dropdown ein zweites mal.
Hat jemand eine Idee wie ich dieses Problem lösen kann?
Meine Idee war ja, quasi ein onchange beim setzen des select auszulösen, damit der AJAX/Javascript Teil greift.
Aber ich wüsste nicht wie das gehen soll.
Oder evtl. auch mit AJAX/Javascript Codeanpassung? Allerdings habe ich davon so keinen Dunst.
Inhalt index.php:
PHP:
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#loader').hide();
$('#show_heading').hide();
$('#search_category_id').change(function(){
$('#show_sub_categories').fadeOut(300);
$('#loader').show();
$.post("selectboxen.php", {
parent_id: $('#search_category_id').val(),
}, function(response){
setTimeout("finishAjax('show_sub_categories', '"+escape(response)+"')", 200);
});
return false;
});
});
function finishAjax(id, response){
$('#loader').hide();
$('#show_heading').show();
$('#'+id).html(unescape(response));
$('#'+id).fadeIn();
}
function alert_id()
{
if($('#sub_category_id').val() == '')
alert('Please select a sub category.');
else
alert($('#sub_category_id').val());
return false;
}
</script>
Inhalt add.php:
PHP:
<?php
include("auth.php");
include("dbconnect.php");
$stlln_id = $_GET["stllnid"];
$rm_id = $_GET["rmid"];
$wg_id = $_GET["wgid"];
$proc_key = $_GET["prockey"];
if(isset($_POST["submit"]) AND $_POST["submit"]==" Ja, habe ich erledigt ")
{
// Fehlerarray anlegen
$errors = array();
// Prüfen, ob alle Formularfelder vorhanden sind
if(!isset($_POST["search_category"]) && !isset($_POST["sub_category"]))
{
// Ein Element im Fehlerarray hinzufügen
$errors[] = "Bitte benutze korrekte Formular.";
}
else
{
if($_POST['search_category'] == 0)
{
$errors[] = "Bitte eine Kategorie wählen.";
}
elseif($_POST['sub_category'] == 0)
{
$errors[] = "Bitte eine Putzstelle wählen.";
}
else
{
// Session user_id und Name holen, wenn nicht auslesbar -> zurück zum login
if (isset($_SESSION["user_id"]) && isset($_SESSION["user_name"]) && isset($_SESSION["wg_id"]))
{
$userID=$_SESSION["user_id"];
$userName=$_SESSION["user_name"];
$wgID=$_SESSION["wg_id"];
$wgAdmin = $_SESSION["wg_admin"];
}
else
{
echo "Es ist ein Fehler aufgetreten.";
echo "<br />";
echo "Bitte neu einloggen.";
echo ' <meta http-equiv="refresh" content="2; url=http://xxl-pc.de/cleanerplan/v1/index.php?s=login">';
}
//Prüfen, ob der Ersteller eine WG hat
if ($wgID == 0)
$errors[]= "Du bist in keiner WG oder nicht der Admin.";
}
}
// Prüft, ob Fehler aufgetreten sind
if(count($errors))
{
echo "Der Eintrag konnte nicht vorgenommen werden.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
echo "<br />";
}
else
{
// Tätigkeit in Datenbank eintragen
$sql = "INSERT INTO processed (usr_id, stlln_id, rm_id, wg_id) VALUES ('".mysql_real_escape_string($userID)."', '".mysql_real_escape_string(trim($_POST['sub_category']))."', '".mysql_real_escape_string(trim($_POST['search_category']))."', '".mysql_real_escape_string($wgID)."')";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
mysql_close($link);
echo "Der Eintrag war erfolgreich.\n<br>";
echo "<br />";
echo "<a href=\"index.php?s=add\">Neuen Eintrag vornehmen</a>\n";
exit();
}
}
?>
<form method="post" action="<?php echo "index.php?s=add"; ?>">
<?php
if(isset($stlln_id) && isset($rm_id))
$select_id = "search_category_id1";
else
$select_id = "search_category_id";
echo "<a>Kategorie/Raum wählen:</a><br />";
echo "<select size=\"1\" name=\"search_category\" id=".$select_id.">\n";
echo "<option value=\"0\" > Bitte wählen... </option>\n";
$result = mysql_query("SELECT rm_id, rm_name FROM raeume WHERE wg_id='".mysql_real_escape_string($wgID)."'");
while ($row = mysql_fetch_array($result))
{
$sel = ($row['rm_id'] == $rm_id) ? "selected=\"selected\"" : "";
echo "<option ".$sel." value=\"".$row['rm_id']."\">";
echo str_replace("_", " ", $row['rm_name']);
echo "</option>\n";
}
echo "</select>";
echo "<br />";
echo "<div id=\"show_sub_categories\">";
echo "<img src=\"img/loader.gif\" id=\"loader\" alt=\"\" />";
echo "</div>";
echo "<br />";
echo "<br />";
if(isset($stlln_id) && isset($rm_id))
{
echo "<a>Putzstelle wählen:</a><br />";
echo "<select size=\"1\" name=\"sub_category\" id=\"sub_category_id\">\n";
echo "<option value=\"0\"> Bitte wählen... </option>\n";
$result = mysql_query("SELECT stlln_id, stlln_name FROM stellen WHERE rm_id='".mysql_real_escape_string($rm_id)."' AND wg_id='".mysql_real_escape_string($wgID)."'");
while ($row = mysql_fetch_assoc(@$result))
{
echo $row['stlln_name'];
$sel = ($row['stlln_id'] == $stlln_id) ? "selected=\"selected\"" : "";
echo "<option ".$sel." value=\"".$row['stlln_id']."\">";
echo str_replace("_", " ", $row['stlln_name']);
echo "</option>\n";
}
echo "</select>";
echo "<br />";
echo "<br />";
echo "<input type=\"submit\" name=\"submit\" value=\" Ja, habe ich erledigt \" />";
}
?>
<br />
</form>
Inhalt selectboxen.php
PHP:
<?php
include("dbconnect.php");
session_start();
$wgID=$_SESSION["wg_id"];
if($_REQUEST)
{
$id = $_REQUEST['parent_id'];
$result = mysql_query("SELECT stlln_id, stlln_name FROM stellen WHERE rm_id='".mysql_real_escape_string($id)."' AND wg_id='".mysql_real_escape_string($wgID)."'");
?>
<a>Putzstelle wählen:</a><br />
<select size="1" name="sub_category" id="sub_category_id">
<option value="0"> Bitte wählen... </option>
<?php
while ($rows = mysql_fetch_assoc(@$result))
{
?>
<option value="<?php echo $rows['stlln_id']; echo $sel?> ID=<?php echo $rows['stlln_id'];?>"><?php echo $rows['stlln_name'];?></option>
<?php
}?>
</select>
<br />
<br />
<input type="submit" name="submit" value=" Ja, habe ich erledigt " />
<?php
}
?>
Grüße