Seite 1 von 2

Formularproblem

Verfasst: 30.09.2003 16:43
von frederic
Huhu,

ich bastel gerade an einer Mod und bin gerade irgendwie am verzweifeln... ich habe ein Formular gemacht was keine Variable übergibt ( :-? :-? :-?)... hier ein Code-Ausschnitt:

Code: Alles auswählen

echo "<form action=\"news.php?do=addforum\" method=\"post\">\n";
echo "<select name=\"forenid\">\n";
while($row=$db->sql_fetchrow($result))
{
echo "<option value=\"$row[forum_id]\">$row[forum_name]</option>\n";
}
echo "</select>\n<br />\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Forum hinzufügen\" />\n";
echo "</form>\n";
hier der Code den das Skript ausgibt:

Code: Alles auswählen

<form action="news.php?do=addforum" method="post">
<select name="forenid">
<option value="1">Test Forum 1</option>
<option value="2">Testi</option>
</select>
<br />
<input type="submit" name="submit" value="Forum hinzufügen" />
</form>
bitte um Hilfe... danke :D

Verfasst: 30.09.2003 17:21
von PhilippK
Interessant wäre hier der Code, der das ganze wieder auswertet :-)

Gruß, Philipp

Verfasst: 30.09.2003 17:24
von frederic
na gut....... ich gebe mal den (noch nicht) fertigen code hier her.... intersannt dürfte für euch der if($do == "add") und if($do == "addforum") bereich sein. hab mit codemonkey und mungo auch schon versucht das mit den $HTTP Variablen zu machen, Variablennamen Änderung uvm. geht alles nicht.

Code: Alles auswählen

<?php
/* 
###                                Newsmod by Frederic Schneider                            ###
### Copyright 2003 by Frederic Schneider (sge minus adler at web dot de | sge-adler@web.de) ###
*/

define('IN_PHPBB', 1);

$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);

// Forum hinzufügen
if($do == "add")
{
echo "<h1>\n<b>Forum hinzufügen</b>\n</h1>\n";
echo "<p>\n";
echo "Hier kannst du für dein Newssystem, neue Foren hinzufügen.\n<br />\n";
echo "</p>\n";
$sql = "SELECT forum_id,forum_name FROM ".$table_prefix."forums";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't obtain news data", "", __LINE__, __FILE__, $sql);
}
else
{
echo "<div align=\"center\">";
echo "<form action=\"news.php?do=addforum\" method=\"post\">\n";
echo "<select name=\"forenid\">\n";
while($row=$db->sql_fetchrow($result))
{
echo "<option value=\"$row[forum_id]\">$row[forum_name]</option>\n";
}
echo "</select>\n<br />\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Forum hinzufügen\" />\n";
echo "</form>\n";
echo "</div>\n";
}
}

// Forum editieren
if($do == "edit")
{
echo "<h1>\n<b>Forum editieren</b>\n</h1>\n";
echo "<p>\n";
echo "Hier kannst du für dein Newssystem, Foren bearbeiten.\n<br />\n";
echo "</p>\n";
$sql = "SELECT forenid FROM ".$table_prefix."news";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't obtain news data", "", __LINE__, __FILE__, $sql);
}
else
{
echo "<table cellspacing=\"1\" cellpadding=\"4\" border=\"0\" align=\"center\" class=\"forumline\">\n";
echo "<tr>\n";
echo "<th class=\"thCornerL\">Forumname</th>\n";
echo "<th class=\"thTop\">Aktion</th>\n";
echo "</tr>\n";
while($row=$db->sql_fetchrow($result))
{
$forenid = $row[forenid];
$sql2 = "SELECT forum_name FROM ".$table_prefix."forums WHERE forum_id=\"$forenid\"";
if(!$result2 = $db->sql_query($sql2))
{
message_die(GENERAL_ERROR, "Couldn't obtain news data", "", __LINE__, __FILE__, $sql);
}
else
{
while($row2=$db->sql_fetchrow($result2))
{
echo "<tr>\n";
echo "<td class=\"row1\" align=\"center\">$row2[forum_name]</td>\n";
echo "<td class=\"row1\" align=\"center\"><a href=\"news.php?do=delete&forenid=$row[forenid]\">Löschen</a></td>\n";
echo "</tr>\n";
}
}
}
echo "</table>\n";
}
}

// Forum hinzufügen (SELECT Vorgang)
if($do == "addforum")
{
echo "$forenid\n<br/>\n";
echo "<h1>\n<b>Forum hinzufügen</b>\n</h1>\n";
$sql = "SELECT forenid FROM ".$table_prefix."news WHERE forenid=\"$forenid\"";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't obtain news data", "", __LINE__, __FILE__, $sql);
}
else
{
if($db->sql_numrows($result) != "0")
{
echo "<p>\n";
echo "Dieser Eintrag existiert schon in der Datenbank!";
echo "</p>\n";
}
else
{
echo "<p>\n";
echo "funzt!";
echo "</p>\n";
}
}
}

// Forum löschen
if($do == "delete")
{
echo "<h1>\n<b>Forum löschen</b>\n</h1>\n";
$sql = "DELETE FROM ".$table_prefix."news WHERE forenid=\"$forenid\"";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't obtain news data", "", __LINE__, __FILE__, $sql);
}
else
{
echo "<p>\n";
echo "Das Forum wurde erfolgreich gelöscht!\n";
echo "</p>\n";
}
}

echo "<br />\n<br />\n";
echo "<div align=\"center\"><span class=\"copyright\">News-Mod by <a href=\"mailto:sge-adler@web.de\">Frederic Schneider</a></span></div>";

?>

Verfasst: 30.09.2003 17:29
von PhilippK
Also nachdem die meisten PHP-Installationen keine globalen Variablen mehr nutzen, solltest du die übergebenen Variablen aus der entsprechend von PHP definierten Arrays holen.

Siehe:
http://de2.php.net/manual/de/configurat ... er-globals
http://de2.php.net/manual/de/language.v ... perglobals

Gruß, Philipp

Verfasst: 30.09.2003 17:41
von frederic
ich zitiere mich selber
hab mit codemonkey und mungo auch schon versucht das mit den $HTTP Variablen zu machen, Variablennamen Änderung uvm. geht alles nicht.
EDIT:
ich kenne diese seiten, ich bin selber ein befürworter der Superglobals (sind leider er ist ab PHP 4.1 deshalb hab ich sie hier nicht angewendet; $_POST['bla'] etc.)

Verfasst: 30.09.2003 23:32
von PhilippK
Setz doch mal bitte ganz oben in die erste Zeile:

Code: Alles auswählen

echo 'DEBUG: ' . $HTTP_POST_VARS['forenid'];
Vielleicht können wir den Fehler so finden...

Gruß, Philipp

Verfasst: 01.10.2003 13:43
von makue
- $do wird nicht in vorher inkludeten Files verändert?
- Wird denn eine andere Variable übertragen oder grundsätzlich keine?
- funktioniert denn $HTTP_POST_VARS['do'], auch wenn Du es nicht benutzen willst?

Verfasst: 01.10.2003 13:59
von frederic
hi...
hab auf Pyramides Vorschlag auf phpinfo.php weitergeleitet (action="phpinfo.php) und dort wurde alles korrekt angezeigt.
$do wird nicht verändert.
es wird grundzätzlich keine übertragen
$HTTP und $_ funktionieren überhaupt nicht.

Verfasst: 01.10.2003 14:27
von makue
Ist ja erstaunlich. Ich hatte mal bei einem ähnliches Problem, dass eine Variable weiter untern im Code nicht mehr gültig war. Schreibe doch mal ein global $do; nach den "require...". Ansonsten würde ich ganz oben in der Datei anfangen $do testweise auszugeben. Vielleicht auch ein phpinfo(); an dieser Stelle. Notfalls folgenden Code erst einmal auskommentieren. Irgendwo muss die Variable ja auf der Strecke bleiben.

Verfasst: 01.10.2003 19:18
von frederic
an $do liegt es nicht, er leitet auf do=addforum weiter nur die variablen werden nicht mit übergeben. wie gesagt auf phpinfo(); hab ma weitergeleitet und da zeigt er die variablen RICHTIG an.