Übergabe von Variablen funktioniert nicht

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Übergabe von Variablen funktioniert nicht

Beitrag 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
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Wo weist du den Variablen denn ihren Wert zu?
KB:knigge
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag 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
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
KB:knigge
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
wie mache ich das richtig?
Muß ich mit einem Formular arbeiten?

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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:
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag 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
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag 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
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag 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
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Antworten

Zurück zu „Coding & Technik“