Problem bei der Übergabe eines Wertes an 2. Form

Hallo Forum!

Beschreibung:

Ich habe ein Formular „kalkulation.php“ von welchem ich ein weiteres Formular „import“ aufrufe und eine ID per $_GET(‚x_id‘) und eine Kalkulationsnummer, welches ich auf gleiche Weise ich vom Formular „kalkulation.php“ übernehme.
Das Formular „import“ liest eine Textdatei mit diversen (10) Werten aus und zeigt diese an. Diese Werte sollen dann in das Formular „kalkulation.php“ übernommen werden. So weit, so gut…

Problem:

Das Formular „kalkulation.php“ holt sich die Werte folgendermassen:

$bCopy = true;
$x_id = @$_GET[„id“]; Hier holt er sich die ID
if (empty($x_id)) {
$bCopy = false;
}

// Führe die Aktion aus

$sAction = @$_POST[„a_edit“]; //Daten importieren
if (($sAction == „“) || (is_null($sAction))) {
if ($bCopy) {
$sAction = „I“; // Zeige nur die üblichen Werte an
} else {
$sAction = „U“; //importiere die neuen Werte
}
} else {

Wert1 = $_POST[‚wertX‘];
. 2 = …
. 3 = …
etc. …

}
$conn = meine_connection(HOST, USER, PASS, DB, PORT);
switch ($sAction)
{
case „I“: // Schnapp die nen Datensatz
if (!LoadData($conn)) { // Lade key-basierten Datensatz
$_SESSION[„ewmsg“] = „Keine Datensätze gefunden!“;
schliesse_meine_connection($conn);
ob_end_clean();
header(„Location: kalkulationedit.php“);
exit();
}
break;
case „U“: // Update
if (EditData($conn)) { // Update Datensatz
$_SESSION[„ewmsg“] = „Die kalkulatorischen Daten
wurden erfolgreich geändert!“;
schliesse_meine_connection($conn);
ob_end_clean();
header(„Location: kalkulationedit.php“);
exit();
}
break;
}
?>

Dann kommt mein Formular


Anschliessend die Funktionen zum importieren bzw. zum Laden der Daten:

<?php function LoadData($conn)
{ global $x\_id; global $x\_auftragsnummer; $sSql = "SELECT \* FROM `kalkulation`"; if ($sWhere \<\> "") { $sWhere .= " AND "; } In die folgende Zeile soll die "ID" hin, aber sie kommt nie an. $sTmp = (get\_magic\_quotes\_gpc()) ? stripslashes($x\_id) : $x\_id; $sWhere .= "(`id` = " . addslashes($sTmp) . ")"; $sSql .= " WHERE " . $sWhere; $rs = meinequery($sSql,$conn) or die("Konnte SQL nicht laden: " . fehler() . ' SQL: ' . $sSql); if (php\_num\_rows($rs) == 0) { $bLoadData = false; }else{ $bLoadData = true; $row = php\_fetch\_array($rs); Hier kommen nun meine Felddaten per Globals: $GLOBALS["x\_id"] = $row["id"]; $GLOBALS["x\_sachbearbeiter"] = $row["sachbearbeiter"]; $GLOBALS["x\_bearbeitungszeit"] = $row["bearbeitungszeit"]; . . . . } free\_result($rs); return $bLoadData; } ?\> Mein Problem: Aus irgendeinem Grunde wird die blöde id von dem Formular "import" nicht übernommen. Warum??? FEHLERMELDUNG: Konnte SQL nicht laden: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') at line 1 SQLs: SELECT \* FROM `kalkulation` WHERE (`id`=) In einem ähnlichen Zusammenhang in einem anderen Script funktioniert die Übergabe. Ist etwas kompliziert, ich weiss, aber vielleicht gibt es ja jemanden unter euch, der sich damit auskennt. Ich bin schon am verzweifeln. Vielen Dank!

Hallo

Ich habs mal überflogen und keinen Fehler gefunden. Das einfachste in einem solchen Fall, ist es, an geeigneten Stellen echo-Befehle einzubauen und zu schauen, ab welcher Stelle die Ausgabe nicht mehr den Erwartungen entspricht.

$bCopy = true;
$x_id = @$_GET[„id“]; Hier holt er sich die ID

echo ’ 1:’.$x_id;

if (empty($x_id)) {
$bCopy = false;
}

// Führe die Aktion aus

$sAction = @$_POST[„a_edit“]; //Daten importieren
if (($sAction == „“) || (is_null($sAction))) {
if ($bCopy) {
$sAction = „I“; // Zeige nur die üblichen Werte an
} else {
$sAction = „U“; //importiere die neuen Werte
}
} else {

Wert1 = $_POST[‚wertX‘];
. 2 = …
. 3 = …
etc. …

}
$conn = meine_connection(HOST, USER, PASS, DB, PORT);
switch ($sAction)
{
case „I“: // Schnapp die nen Datensatz
if (!LoadData($conn)) { // Lade key-basierten
Datensatz
$_SESSION[„ewmsg“] = „Keine Datensätze gefunden!“;
schliesse_meine_connection($conn);
ob_end_clean();
header(„Location: kalkulationedit.php“);
exit();
}
break;
case „U“: // Update
if (EditData($conn)) { // Update Datensatz
$_SESSION[„ewmsg“] = „Die kalkulatorischen
Daten
wurden erfolgreich
geändert!“;
schliesse_meine_connection($conn);
ob_end_clean();
header(„Location: kalkulationedit.php“);
exit();
}
break;
}
?>

Dann kommt mein Formular


Anschliessend die Funktionen zum importieren bzw. zum Laden
der Daten:

<?php :function LoadData($conn)
{ global $x\_id; global $x\_auftragsnummer;

echo ’ 2:’.$x_id;

$sSql = "SELECT * FROM kalkulation";

if ($sWhere <> „“) { $sWhere .= " AND "; }

In die folgende Zeile soll die „ID“ hin, aber sie kommt nie
an.

$sTmp = (get_magic_quotes_gpc()) ? stripslashes($x_id) :
$x_id;

echo ’ 3:’.get_magic_quotes_gpc();
echo ’ 4:’.$sTmp;

$sWhere .= "(id = " . addslashes($sTmp) . „)“;

echo ’ 5:’.$sWhere;

$sSql .= " WHERE " . $sWhere;

echo ’ 6:’.$sSql;

$rs = meinequery($sSql,$conn) or die("Konnte SQL nicht laden:
" . fehler() . ’
SQL: ’ . $sSql);
if (php_num_rows($rs) == 0) {
$bLoadData = false;
}else{
$bLoadData = true;
$row = php_fetch_array($rs);

Hier kommen nun meine Felddaten per Globals:

$GLOBALS[„x_id“] = $row[„id“];
$GLOBALS[„x_sachbearbeiter“] = $row[„sachbearbeiter“];
$GLOBALS[„x_bearbeitungszeit“] = $row[„bearbeitungszeit“];
.
.
.
.
}
free_result($rs);
return $bLoadData;
}
?>

Hallo Johannes,

vielen Dank für deine schnelle Hilfe. Grundsätzlich ist deine Idee sehr gut, jedoch erscheint die Fehlermeldung im Formular „kalkulation.php“ sobald ich versuche über das zweite Formular „import.php“ die Werte zu übergeben. Das heißt, dass ich die Ausgaben leider nicht sehen würde.

Irgendwie fängt das Formular „kalkulation.php“ den Wert „x_id“ per $_GET[‚x_id‘] nicht ab und braucht den Wert aber, um die query auszuführen. Denn nur über $_GET[‚x_id‘] erhält die Variable $x_id; den Wert übergeben und wird dann auch von der Query aus der Variablen $sTmp ausgelesen.

Ich werd mal versuchen deine Idee zu verwirklichen um mein Problem zu beheben. Falls dir noch was einfallen sollte, wäre es klasse, wenn du an mich denkst.

Besten Dank!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

vielen Dank für deine schnelle Hilfe. Grundsätzlich ist deine
Idee sehr gut, jedoch erscheint die Fehlermeldung im Formular
„kalkulation.php“ sobald ich versuche über das zweite Formular
„import.php“ die Werte zu übergeben. Das heißt, dass ich die
Ausgaben leider nicht sehen würde.

Wenn das Skript grundsätzlich ausführbar ist (also keine ; fehlen oder ähnliches), dann wird es auch ausgeführt. Ein Fehler bedeutet nicht automatisch, dass das Skript nicht ausgeführt wird.

Sorry, ich hatte mich nicht richtig ausgedrückt. Selbstverständlich wird das Skript richtig ausgeführt, jedoch nicht bis zum Ende, lediglich bis zur Fehlerausgabe der SQL-Funktion.

Ich war gestern ein wenig genervt, da mein Notebook den Geist aufgegeben hat. Daher war ich etwas neben der Kappe. Entschuldige bitte. Ich werde die „echo’s“ mal einbauen und mal schaun, bis wohin die „x_id“ kommt. :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]