Seite 1 von 3

Übergabe von Variablen funktioniert nicht

Verfasst: 10.08.2005 20:40
von Martin Truckenbrodt
Hallo,
aus mir unerklärlichen Gründen funktioniert bei folgendem Skript die Übergabe der Variablen edit, id und topical nicht:

Code: Alles auswählen

/***** Inhaltsbereich ******/ 


echo "<h3><a href=\"phpmn.php?edit=\"\"\">". $page_title ."</a></h3>\n";

print $edit;
print $id;
print $topical;

if ($edit=="yes")
	{
		print "<table align='center' class='forumline'>\n";
		print "<th>Eintrag ändern für:</th>\n<tr>";
		print $id;
		print $topical;
		$sql3="SELECT newsletter_id, newsletter_title, newsletter_description FROM $newsletter_table WHERE newsletter_id='$id'";
		$result3 = mysql_query($sql3);
		$edit = mysql_fetch_row($result3);
		for ($i=1;$i<3;$i++)
			{ print "<td class='row1'>". $edit[$i] ."</td>"; }
		$newsid=$edit[0];
		print "<td class='row2' align='center'><b>&nbsp;&nbsp;". $status[$newsid] ."&nbsp;&nbsp;</b></td>\n";
		print "</tr>\n</table>\n<br><hr><br>";
	}


//Sammeln aller existierender Newsletter
$sql = "SELECT newsletter_id, newsletter_title, newsletter_description FROM $newsletter_table";
$result= mysql_query($sql);

//Sammeln aller Newsletter, in die sich der USer eingetragen hat
$sql2 = "SELECT * FROM $member_table WHERE members_email='$useremail'";
$result2 = mysql_query($sql2);

print "<table align='center' class='forumline'>\n";
print "<th>name</th><th>description</th><th>status</th><th>change</th>\n";

// Vorfüllen des Übergabe Arrays
while ($subscribe = mysql_fetch_row($result2))
	{ $newsid = $subscribe[3];
		$status[$newsid]=$subscribe[4]; };

// Statusanzeige
while ($newsletter= mysql_fetch_row($result))

	{
		$newsid=$newsletter[0];
		// Auffüllen des Übergabe Arrays für vernünftige Statusanzeige, falls kein Abo vorhanden
		if ($status[$newsid] == "")
			{ $status[$newsid]= 'not subscribed'; }

	print "<tr>\n";
	for ($j=1;$j<mysql_num_rows($result);$j++)
		{ print "<td class='row1'>". $newsletter[$j] ."</td>"; }
	$newsid=$newsletter[0];
	print "<td class='row2' align='center'><b>&nbsp;&nbsp;". $status[$newsid] ."&nbsp;&nbsp;</b></td><td class='row3'><a href=\"phpmn.php?edit=yes&id=". $newsid ."&topical=". $status[$newsid] ."\"><img src=\"templates/subSilver/images/lang_german/icon_edit.gif\" alt=\"Bearbeiten oder löschen\" title=\"Bearbeiten oder löschen\" border=\"0\" /></a></td>\n</tr>\n";
	};

print "</table>\n";
Die ersten drei Printbefehle sind zum Test hinzugefügt.

Klickt man auf einen der drei Edit Buttons soll zusätzlich die Tabelle in der ersten if Anweisung angezeigt werden.

Baustelle: http://paludarium.pipidae.de/cgi/phpBB2/phpmn.php

Danke und Gruß Martin

Verfasst: 10.08.2005 21:43
von Pyramide
Wo weist du den Variablen denn ihren Wert zu?

Verfasst: 10.08.2005 21:47
von Martin Truckenbrodt
Hallo pyramide,
beim vorletzten print Befehl:

Code: Alles auswählen

   print "<td class='row2' align='center'><b>&nbsp;&nbsp;". $status[$newsid] ."&nbsp;&nbsp;</b></td><td class='row3'><a href=\"phpmn.php?edit=yes&id=". $newsid ."&topical=". $status[$newsid] ."\"><img src=\"templates/subSilver/images/lang_german/icon_edit.gif\" alt=\"Bearbeiten oder löschen\" title=\"Bearbeiten oder löschen\" border=\"0\" /></a></td>\n</tr>\n"; 
Die Datei soll also mit den Variablen neu geladen werden.

BEi http://paludarium.pipidae.de/cgi/phpBB2 ... p?edit=yes sollte die Tabelle schon mal mit leerer erster Zeile erscheinen. Selbst das funzt leider nicht.

Gruß Martin

Verfasst: 10.08.2005 22:03
von Pyramide
Martin Truckenbrodt hat geschrieben:beim vorletzten print Befehl:

Code: Alles auswählen

(...) <a href="phpmn.php?edit=yes&id=". $newsid ."&topical=". $status[$newsid] .""> (...)
Dort gibst du nur einen Link aus und mehr nicht. Und wenn du den anklickst, wird eine neue Seite geladen, bei der erstmal wieder alle Variablen nicht gesetzt sind.

Verfasst: 10.08.2005 22:29
von Martin Truckenbrodt
Hallo,
wie mache ich das richtig?
Muß ich mit einem Formular arbeiten?

Gruß Martin

Verfasst: 10.08.2005 22:34
von fanrpg
hast du überhaupt PHP gelernt? o.ô

Code: Alles auswählen

if($_GET['edit'] == "yes")
{
// Das wird ausgeführt wenn edit=yes aufgerufen wird
}
Als einfaches Beispiel :roll: :wink:

Verfasst: 10.08.2005 22:40
von Martin Truckenbrodt
fanrpg hat geschrieben:hast du überhaupt PHP gelernt? o.ô
...
Hallo,
bin gerade beim PHP lernen! :D

Learning by doing!

Werde es gleich testen!

Habe gerade festgestellt, dass die zwei andere Skripte, bei denen ich die Methode schon länger verwende auch nicht einwandfrei funktionieren. :-? :o

Gruß Martin

Verfasst: 10.08.2005 22:50
von fanrpg
Aber du dachtest nicht wenn man edit=yes aufruft das der automatisch das zum edittieren bereit stellt?

Das muss man dann manuell machen, den edit Vorgang.

Ach ja noch was habe ich grade vergessen :oops:

wenn du mehrere seiten=machen willst mit gleichem Namen vor = dann machst du das am besten so :wink: (bzw. geht auch wenn man nicht das selbe vor = hat aber so ist das übersichtlicher)

Code: Alles auswählen

if($_GET['edit'] == "yes") 
{ 
// Das wird ausgeführt wenn edit=yes aufgerufen wird 
}
elseif ($_GET['edit'] == "no")
{
//Inhalt wenn edit=no aufgerufen wird
}
else
{
echo "Seite exestiert nicht!"; // oder die("Seite exestiert nicht");
}
Und du musst daran denken dem anderem Script eine leere If Anweisung zu geben also so:

Code: Alles auswählen

if($_GET['edit'] == "")
{
// Das Hauptscript
}
So erstmal genug "Unterrricht" in PHP abgehalten :D

Verfasst: 10.08.2005 23:05
von Martin Truckenbrodt
Hallo,
ein Kumpel hatte mir vor ein paar Jahren mal was für meine damalige Seite geschrieben. Ich habe dann die Seite komplett umgebaut und dabei ist wohl das $_GET verschollen gegangen.

Ich habe jetzt also heute noch genug zu tun, ein paar Sachen zu "korrigieren".

Peinlich, Peinlich!

Vielen Dank für Deine Hilfe!

Gruß Martin

Verfasst: 12.08.2005 12:10
von Martin Truckenbrodt
Hallo,
aktueller Stand:

Code: Alles auswählen

/***** Inhaltsbereich ******/ 

echo "<h3><a href=\"phpmn.php?edit=\"\"\">". $page_title ."</a></h3>\n";

if($edit == "yes")
	{
		print "<table align='center' class='forumline'>\n";
		print "<th colspan='2'>Eintrag &auml;ndern f&uuml;r:</th>\n<tr>";
		$sql3="SELECT newsletter_id, newsletter_title, newsletter_description FROM $newsletter_table WHERE newsletter_id='$id'";
		$result3 = mysql_query($sql3);
		$edit = mysql_fetch_row($result3);
		for ($i=1;$i<3;$i++)
			{ print "<td class='row1'>". $edit[$i] ."</td>"; }
		print "</tr>";
		print "<tr><td class='row1' align='center'>Aktueller Status:</td><td class='row2' align='center'><b>". $topical ."</b></td>\n</tr>\n";
		print "<form method=\"get\" action=\"phpmn.php?edit=do&id=". $newsid ."&topical=". $topical ."&do=". $do ."\"><tr>\n";
		print "<td class='row3' colspan='2' align='center'><b>HTML:</b>&nbsp;<input type=\"radio\" name=\"do\" value=\"html\">&nbsp; - &nbsp;<b>Plain/Text:</b>&nbsp;<input type=\"radio\" name=\"do\" value=\"plain\">&nbsp; - &nbsp;<b>Unsubscribe:</b>&nbsp;<input type=\"radio\" name=\"do\" value=\"unsubscribe\"></td>";
		print "<tr></tr>";
		print "<td class='row3' colspan='2' align='center'><input type=\"submit\" accesskey=\"s\" tabindex=\"6\" name=\"post\" class=\"mainoption\" value=\"Absenden\" />&nbsp;&nbsp;<input type=\"reset\" accesskey=\"r\" tabindex=\"6\" class=\"mainoption\" value=\"Reset\" /></td>";
		print "</tr>\n</form>";
		print "</table>\n<br><hr><br>";
	}

elseif(($edit == "do") and (($do == "html") or ($do == "plain")) and ($topical != "not subscribed"))
	{
		$sql4 = "UPDATE $members_table SET members_name='$username', members_email='$useremail', members_newsid='$id', members_mailpref='$do', members_ip='$userip', memerb_timestamp='$userts', members_status='1' WHERE members_email='$useremail' AND members_newsid='$id'";
		mysql_query($sql4) or die ;
		$edit = "";
		print "<p align='center'>Der Eintrag wurde erfolgreich aktualisiert.</p>";
	}

elseif(($edit == "do") and (($do == "html") or ($do == "plain")) and ($topical == "not subscribed"))
	{
		$sql6 = "INSERT INTO $members_table (members_name,members_email,members_newsid,members_mailpref,members_ip,members_timestamp,members_status) VALUES ('$username','$useremail','$id','$do','$userip','$userts',1)";
		print $sql6;
		mysql_query($sql6) or die ;
		$edit = "";
		print "<p align='center'>Der Eintrag wurde erfolgreich erstellt.</p>";
	}

elseif(($edit == "do") and ($do == "unsubscribe"))
	{
		$sql5 = "DELETE FROM $members_table WHERE members_email='$useremail' AND members_newsid='$id'";
		mysql_query($sql5) or die;
		$edit = "";
		print "<p align='center'>Der Eintrag wurde erfolgreich gel&ouml;scht</p>";
	}
Die elseif Anweisungen scheinen nicht zu funktionieren. HAb eich die Verknüpfung in der richtigen Syntax angegeben?
(Weiter oben steht jetzt

Code: Alles auswählen

$edit = $_GET['edit'];
.)

Gruß Martin

Gruß Martin