Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Member editieren / löschen“

N

No0oB

Guest

Ich weiss nicht genau wie ich das ganze realisieren soll.
Ich hab ein Formular mit Drop down. in welchem ich den member auswähl.
Anschließend sollen seine Daten in einem Formular angezeigt werden.
Wie mach ich das, ohne einzelne php Dateien erstellen zu müssen, also für jeden Member eine .php?
 

Duddle

Posting-Frequenz: 14µHz

Entweder du machst neben die Drop Down-Box einen Submit-Knopf um die Auswahl abzuschicken, oder du benutzt JavaScript und onChange zum automatischen abschicken.

Dann fängst du in der Auswerteseite (die Seite kann sich ja auch selbst aufrufen) deine Auswahl ab und echost in das Editierformular die jetzigen Werte als value.


So würde ich es ungefähr machen.

Duddle
 
N

No0oB

Guest

Mir ist es klar, dass ich einen submit knopf hab, und die daten einlese.
Aber vom code her, weiss ich nicht genau.
 

Duddle

Posting-Frequenz: 14µHz

Hmmm, wenn du wenigstens sagen würdest, wo genau es hängt?

Ich präsentiere gerne unfertigen Code, aber so hier editiere ich jedenfalls meine News (hab unwichtiges mal rauszensiert :? ), datenbankgestützt:


Code:
<?
include_once('funktionen_db.php');
connecttodb();

$editierid=$_POST['editierid'];

$sql="SELECT * FROM `news` WHERE `ID` = '".$editierid."'";
$result=mysql_query($sql) or die(mysql_error());

$reihe = mysql_fetch_array($result);
?>


<html>
<body>

<?
echo "<form method=\"POST\" action=\"".$_SERVER[PHP_SELF]."\">\n";
echo "<input type=\"text\" name=\"ueberschriftupdate\" value=\"".$reihe[Ueberschrift]."\">";
echo "<input type=\"hidden\" name=\"editieridupdate\" value=\"".$editierid."\">";
?>



<textarea cols="40" rows="17" name="newsupdate">
<?php echo $reihe[Inhalt]; ?>
</textarea>


<input type="submit" value="<?php echo $reihe[ID]; ?>">

</body>
</html>

Dann wird bei Submit $ueberschriftupdate, $editieridupdate und $newsupdate von der selben Seite abgefangen und zur Datenbank übertragen.

Ist nicht schwierig, wenn man Formulare und wenig PHP kennt.


Duddle, der interne Seiten nicht valide schreibt, bevor sich einer wundert
 
N

No0oB

Guest

So das Löschen klappt, nur das editieren nicht wirklich. Da brüchte ich etwas Hilfe. Hier ist der Quelltext:
Code:
<?php
	if (isset($_POST['submit']))
		{
		if ((empty($_POST['name']) OR ($_POST['country'] == "empty")))
			{
			echo "<font color=\"red\">Fill in all of the fields!</font>
";
			echo "You are now taken back to the previous site
";
			echo			"Or click <a href=\"index.php?section=add_member\">here</a>, if you do not wish to wait.";
			header("refresh:3;url=index.php?section=edit_member");
			}
		else
			{
			$name = $_POST['name'];
			$country = $_POST['country'];
			$country_name = $_POST['country_name'];
			$status = $_POST['status'];
			include("../config/mysql_connect.php");
			$sql_basic = "SELECT * FROM rage_members";
			$query_basic = mysql_query($sql_basic);
			$get_basic = mysql_fetch_array($query_basic);
			$id = $get_basic['ID'];
			$sql_change = "UPDATE rage_members SET 
										name = '$name',
										country = '$country',
										country_name = '$country_name',
										status = '$status'
								 WHERE ID = '$id'";
										;
			$query_change = mysql_query($sql_change);
			if ($query_change)
				{
				header("location:index.php?section=memberlist");
				}
			}
		}

Dieser Quelltext bezieht sich auf folgendes Formular, welches abgefragt, bevor die Weiterleitung einsetzt:
Code:
<?php
if (isset($_POST['submit']))
	{
	$membertoedit = $_POST['member_to_edit'];
	if (empty($membertoedit))
		{
		echo	"<table>";
		echo	"<tr>";
		echo		"<td class=\"headline\">";
		echo			"No Member specified";
		echo		"</td>";
		echo	"</tr>";
		echo	"<tr>";
		echo		"<td class=\"content\" align=\"center\">";
		echo			"You are now taken back to the previous site
";
		echo			"Or click <a href=\"index.php?section=edit_member\">here</a>, if you do not wish to wait.";
		echo		"</td>";
		echo	"</tr>";
		echo	"</table>";
		header("refresh:3;url=index.php?section=edit_member");
		}
	else if (isset($membertoedit))
		{
		include("../config/mysql_connect.php");
		$sql_all = "SELECT * FROM rage_members";
		$query_all = mysql_query($sql_all);
		
		$sql = "SELECT * FROM rage_members WHERE name = '$membertoedit'";
		$query = mysql_query($sql);
		
		$get = mysql_fetch_array($query);
			if ($membertoedit != $get['name'])
				{
				echo	"<table>";
				echo	"<tr>";
				echo		"<td class=\"headline\">";
				echo			"Member not found";
				echo		"</td>";
				echo	"</tr>";
				echo	"<tr>";
				echo		"<td class=\"content\" align=\"center\">";
				echo			"You are now taken back to the previous site
";
				echo			"Or click <a href=\"index.php?section=edit_member\">here</a>, if you do not wish to wait.";
				header("refresh:3;url=index.php?section=edit_member");
				echo		"</td>";
				echo	"</tr>";
				echo	"</table>";
				}
			else
				{
				echo	"<form action=\"index.php?section=ch_ch_edit_member\" method=\"post\">";
				echo	"<table width=\700\" align=\"center\">";
				echo	"<tr>";
				echo		"<td class=\"headline\" colspan=\"2\">";
				echo			$membertoedit;
				echo		"</td>";
				echo	"</tr>";
				echo	"<tr>";
				echo		"<td class=\"content\" align=\"center\">";
				echo			"<table>";
				echo			"<tr>";
				echo				"<td width=\"200\">";
				echo					"Name";
				echo				"</td>";
				echo				"<td>";
				echo					"<input type=\"text\" name=\"name\" size=\"30\" value=\"".$membertoedit."\">";
				echo				"</td>";
				echo			"</tr>";
				echo			"<tr>";
				echo				"<td width=\"200\">";
				echo					"Country";
				echo				"</td>";
				echo				"<td>";
	?>
						<select size="1" name="country" style="width:200px"> 
							<option value="empty">Please Chose</option> 
							<option value="../images/flags/dk.gif" onClick="javascript:choose()">Denmark</option> 
							<option value="../images/flags/fi.gif" onClick="javascript:choose()">Finland</option> 
							<option value="../images/flags/fr.gif" onClick="javascript:choose()">France</option> 
							<option value="../images/flags/de.gif" onClick="javascript:choose()">Germany</option> 
							<option value="../images/flags/ie.gif" onClick="javascript:choose()">Italy</option> 
							<option value="../images/flags/lv.gif" onClick="javascript:choose()">Latvia</option> 
							<option value="../images/flags/nl.gif" onClick="javascript:choose()">Netherlands</option> 
							<option value="../images/flags/ru.gif" onClick="javascript:choose()">Russia</option> 
							<option value="../images/flags/es.gif" onClick="javascript:choose()">Spain</option>
							<option value="../images/flags/ua.gif" onClick="javascript:choose()">Ukraine</option> 
							<option value="../images/flags/uk.gif" onClick="javascript:choose()">UK</option> 
							<option value="../images/flags/us.gif" onClick="javascript:choose()">USA</option> 
						</select>
						<input name="country_name" type="hidden" value="" />         
					<script language="javascript" type="text/javascript"> 
					function choose() 
						{ 
						if (document.form.country.value == "../images/flags/dk.gif") 
							{ 
						   document.form.country_name.value = "Denmark"; 
							} 
						else if (document.form.country.value == "../images/flags/fi.gif") 
							{ 
						   document.form.country_name.value = "Finland"; 
							} 
						else if(document.form.country.value == "../images/flags/fr.gif")
							{ 
						   document.form.country_name.value = "France"; 
							} 
						else if(document.form.country.value == "../images/flags/de.gif") 
							{ 
						   document.form.country_name.value = "Germany"; 
							} 
						else if(document.form.country.value == "../images/flags/ie.gif")
							{ 
						   document.form.country_name.value = "Italy"; 
							} 
						else if(document.form.country.value == "../images/flags/lv.gif") 
							{ 
						   document.form.country_name.value = "Latvia"; 
							} 
						else if (document.form.country.value == "../images/flags/nl.gif") 
							{ 
						   document.form.country_name.value = "Netherlands"; 
							} 
						else if(document.form.country.value == "../images/flags/ru.gif")
							{ 
						   document.form.country_name.value = "Russia"; 
							} 
						else if(document.form.country.value == "../images/flags/es.gif") 
							{ 
						   document.form.country_name.value = "Spain"; 
							} 
						else if(document.form.country.value == "../images/flags/ua.gif")
							{ 
						   document.form.country_name.value = "Ukraine"; 
							} 
						else if(document.form.country.value == "../images/flags/uk.gif") 
							{ 
						   document.form.country_name.value = "UK"; 
							} 
						else if(document.form.country.value == "../images/flags/us.gif") 
							{ 
						   document.form.country_name.value = "USA"; 
							} 
						} 
					</script>
	<?
				echo				"</td>";
				echo			"</tr>";
				echo			"<tr>";
				echo				"<td width=\"200\">";
				echo					"Status";
				echo				"</td>";
				echo				"<td align=\"center\" colspan=\"2\">";
	?>
									<select size="1" name="status" style="width:200px">
										<option selected value="Trial">Trial</option>
										<option value="Fullmember">Fullmember</option>
										<option value="Leader">Leader</option>
										<option value="Co-Leader">Co-Leader</option>
										<option value="Kicked">Kicked</option>
									</select>
	<?
				echo				"</td>";
				echo				"<td align=\"center\" colspan=\"2\">";
				echo					"<input type=\"submit\" value=\"Submit\" name=\"submit\">";
				echo				"</td>";
				echo			"</tr>";
				echo			"</table>";
				echo		"</td>";
				echo	"</tr>";
				echo	"</table>";
				echo	"</form>";
				}
		}
	}
?>
<html>
	<head>
		<link rel="stylesheet" type="text/css" href="../style.css">
	</head>
<body>
</body>
</html>
 

10c

Unscharfe Maske

Hallo No0oB,

deine Quelltext Passagen sind zwar immer nett anzuschauen, aber was genau funktioniert denn nun beim Editieren nicht? :wink:

Kommst du erst gar nicht in die Bearbeitungsmaske?
Oder aber wird nichts gespeichert?

Versuche mal deine Probleme etwas zu konkretisieren.
Dann kann man dir auch schneller helfen. :wink:


10c :)
 
N

No0oB

Guest

Ja, ok.
Also, ich komm in die Editiermaske, allerdings wird anschließend nichts editiert :D. Stattdessen wird ein neuer User erstellt, mit den Daten, die editiert werden sollten...
 

10c

Unscharfe Maske

Okay.
Ich habe mir den Quelltext jetzt noch einmal genauer angeschaut...

Ein Problem ist, dass du beim Update in der WHERE Bedingung dich auf eine ID beziehst, die definitiv ohne jeden sinnvollen Inhalt ist.


Erklärung:

Du extrahierst die Post Variablen. Das ist zwar unnötig aber soweit okay.
Die einzige verwertbare Referenz zum editierenden User befindet sich zu diesem Zeitpunkt in $_POST['name'].
[php:1:6057e1d64b]
$name = $_POST['name'];
$country = $_POST['country'];
$country_name = $_POST['country_name'];
$status = $_POST['status'];
include("../config/mysql_connect.php");
[/php:1:6057e1d64b]

Dann der erste entscheidende Schnitzer:
[php:1:6057e1d64b]
$sql_basic = "SELECT * FROM rage_members";
$query_basic = mysql_query($sql_basic);
$get_basic = mysql_fetch_array($query_basic);
[/php:1:6057e1d64b]

Um die ID des zu bearbeitenden Members herauszubekommen, startest du eine Abfrage. Da diese aber keine WHERE Bedingung beinhaltet, wirst du logischerweise alle Members auslesen. ;)

[php:1:6057e1d64b]
$id = $get_basic['ID'];
[/php:1:6057e1d64b]
Wenn jetzt in $id etwas steht, dann immer die ID des allerersten Datensatzes.
Eine Berücksichtigung deiner Auswahlkriterien findet nicht statt...


...


Du benutzt den Namen des zu editierenden Users um nach dem Formularabsenden damit die ID des Members herauszubekommen. Diese benutzt du dann beim Update um die WHERE Bedingung zu bestücken.
Mal abgesehen davon, dass nach momentanem Stand der Dinge noch nicht einmal dies funktioniert, ist das doch mächtig umständlich. Oder?



Wäre es nicht viel einfacher, in einem versteckten Feld gleich die ID im Formular einzubinden?

Dann könntest du diese Codepassage
[php:1:6057e1d64b]
$name = $_POST['name'];
$country = $_POST['country'];
$country_name = $_POST['country_name'];
$status = $_POST['status'];
include("../config/mysql_connect.php");
$sql_basic = "SELECT * FROM rage_members";
$query_basic = mysql_query($sql_basic);
$get_basic = mysql_fetch_array($query_basic);
$id = $get_basic['ID'];
$sql_change = "UPDATE rage_members SET
name = '$name',
country = '$country',
country_name = '$country_name',
status = '$status'
WHERE ID = '$id'";
[/php:1:6057e1d64b]
durch diese ersetzen:

[php:1:6057e1d64b]
$query_change = mysql_query(sprintf("UPDATE rage_members SET name = '%s', country = '%s', country_name = '%s', status = '%s' WHERE ID = %d",
$_POST['name'], $_POST['country'], $_POST['country_name'], $_POST['status'], $_POST['userid']));
[/php:1:6057e1d64b]

10c :)
 

knockknockneo

Nicht mehr ganz neu hier

10c schrieb:
Du extrahierst die Post Variablen. Das ist zwar unnötig aber soweit okay.

Kleine Anmerkung:
Das ist nich unnötig, da manche WebServer die Variablen anders noch nicht kennen. Zumbeispiel die lokale Testumgebeung Xampp brauch für jede Postvariable ein Extrahierung.

Ansonsten...Alles richtig und gut erklärt... :D

MfG
knockknockneo
 

10c

Unscharfe Maske

knockknockneo schrieb:
10c schrieb:
Du extrahierst die Post Variablen. Das ist zwar unnötig aber soweit okay.

Kleine Anmerkung:
Das ist nich unnötig, da manche WebServer die Variablen anders noch nicht kennen. Zumbeispiel die lokale Testumgebeung Xampp brauch für jede Postvariable ein Extrahierung.

:?:


Beim Extrahieren "kennt" der Webserver (oder genauer: PHP) die Post Variablen doch auch.
Sonst würde ja schließlich der Prozess des Extrahierens ($name = $_POST['name']; ) an dieser Stelle bereits kläglich scheitern. :twisted:

10c ;)
 
N

No0oB

Guest

Irgendwie verwirrt mich dieses $d ziemlich...
Woher sol mysql wissen welches man für $d nehmen soll... ?
 

10c

Unscharfe Maske

No0oB schrieb:
Irgendwie verwirrt mich dieses $d ziemlich...
Woher sol mysql wissen welches man für $d nehmen soll... ?
Du hast schon wieder $d geschrieben. :mrgreen:
Dabei heißt es doch %d. ;)

Das hat nichts mit mySQL zu tun. Und um ehrlich zu sein ist es mySQL auch ziemlich Schnuppe. :p


Man kann Funktionsaufrufe verschachteln.
Das macht oft Sinn, um ein Argument beispielsweise zu formatieren, bzw. ein solches überhaupt zu erhalten. ;)

Die Funktion sprintf() innerhalb der Funtktion mysql_query() tut nichts weiter als unser SQL Statement und die dazugehörigen POST Variablen zu einem String "zusammenzukleben".
Das heißt, die Funktion mysql_query() "weiß" eigentlich gar nichts von der Funktion sprintf().
Sie erhält nur den Rückgabewert der Funktion sprintf(): Einen hübsch formatierten String. ;)

Dabei wird innerhalb der Funktion sprintf() für jeden Platzhalter (%) ein Argument erwartet.
Diese folgen unmittelbar nach dem String und werden durch Kommas separiert.
Beim anschließenden Ersetzen orientiert sich die Funktion an der Reihenfolge der Argumente und Platzhalter.
Dem ersten Platzhalter wird also Argument 1 zugeordnet, Argument 2 wird Platzhalter 2 zugeordnet, usw...

Die Funktionalität von sprintf() beschränkt sich aber nicht nur auf das stupide Zusammenkleben von Strings.
Vielfältige Formatierungsmöglichkeiten stehen zur Option.
Damit man hier unterscheiden kann, benutzt man unterschiedliche Platzhalter.
%S für einen ganz ordinären String, %d für den Typ Integer und %f für den Typ Float usw...

Alles klar? ;)


Was macht eigentlich dein Script?
Funktioniert es nun?

10c :)
 
N

No0oB

Guest

Also.
Ich hab bis jetzt MySQL Abfragen immer so gestaltet:
Code:
$sql = "SELECT * FROM tabelle";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query))
          {
           // f00
          }
Daher muss ich mich erstmal auf das sprintf umstellen.
Das Script läuft wunderbar, bis eben noch auf das Editieren :)

Ich würde dir ja gern einen Link pasten, jedoch musste ich die Seite gezwungenermaßen runternehmen, da ich den Traffic extrem überziehe.
Ich bestell mir in ein paar Minuten, einen 1blu vServer, mit mehr Traffic als 3 GB :cry:
 
N

No0oB

Guest

So, da bin ich wieder :lol:
Ich hab die grafische Oberfläche mal überarbeitet
Code:
Name          Flagge              Status              [edit]   [delete]
Nun möchte ich, dass für das jeweilige [edit], bzw. [delete], die entsprechen Deite geöffnet wird, in dem man das alles ändern kann.
Wie kann ich das realisieren, wenn ich nicht für jeden Benutzer eine eigene .php schreiben möchte?
:cry:
 
N

No0oB

Guest

So jetzt läufts, allerdings habe ich noch eine Frage:
Wie kann ich das machen, dass ein einem <select> das Feld automatisch markieren, welches gerade in der Datenbank ist.
Sprich: Ich habe ein Select-Feld, in dem man Das Land des Benutzers auswählt.

Code:
<select size="1" name="country"> 
					<option value="not specified">Please Chose</option> 
					<option value="../images/flags/denmark.gif" onClick="javascript:choose()">Denmark</option> 
					<option value="../images/flags/finland.gif" onClick="javascript:choose()">Finland</option> 
					<option value="../images/flags/france.gif" onClick="javascript:choose()">France</option> 
					<option value="../images/flags/germany.gif" onClick="javascript:choose()">Germany</option> 
					<option value="../images/flags/italy.gif" onClick="javascript:choose()">Italy</option> 
					<option value="../images/flags/israel.gif" onClick="javascript:choose()">Israel</option>
					<option value="../images/flags/latvia.gif" onClick="javascript:choose()">Latvia</option> 
					<option value="../images/flags/netherlands.gif" onClick="javascript:choose()">Netherlands</option> 
					<option value="../images/flags/russia.gif" onClick="javascript:choose()">Russia</option> 
					<option value="../images/flags/spain.gif" onClick="javascript:choose()">Spain</option>
					<option value="../images/flags/ukraine.gif" onClick="javascript:choose()">Ukraine</option> 
					<option value="../images/flags/uk.gif" onClick="javascript:choose()">UK</option> 
					<option value="../images/flags/usa.gif" onClick="javascript:choose()">USA</option> 
				 </select>

Wie krieg ich hin, dass beim editieren nicht automatisch "Please Chose" ausgewählt wird, aber das Land, welches schon normalerweise ausgewählt ist?
 

Eskayp

Something

indem man beim entsprechenden Feld den Zusatz "selected" hin schreibt, also so:

Code:
<option value="Wert" selected">Titel</option>
 
N

No0oB

Guest

Na klar, in ner Schleife... Macht viel Sinn.
Habs selbst herausgefunden.
(Mir gings nicht um das "selected" mir gings um das Land)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.155
Beiträge
2.581.856
Mitglieder
67.222
Neuestes Mitglied
Gregor
Oben