 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
29.03.2002, 11:43
|
#46
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Wenn alles soweit verständlich ist und vorerst keine Fragen aufgetauchst sind, kann's weitergehen. 
__________________
Give up yourself into the moment — The time is now.
|
|
|
29.03.2002, 11:50
|
#47
|
|
TP-Veteran
Registriert seit: Oct 2001
Ort: Oberau
|
holla netter workshop
oha - netter workshop
hab ich gleich eine frage dazu
angenommen ich habe kein hidden feld im formular, was passiert dann wenn ich als action php_self hab' ???
gruß und morgen aus tirol holunda
|
|
|
29.03.2002, 11:57
|
#48
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Gar nichts, die Seite wird nur neu aufgerufen. Es ist auch nicht zwingend, diese Informationen in Hidden Fileds unterzubringen. Du könntest genausogut abfragen, ob jemand auf einen bestimmten Button geklickt hat:
Code:
<input type="button" name="drueck_mich">
PHP-Code:
if(isset($drueck_mich)){
// Zeugs
}
__________________
Give up yourself into the moment — The time is now.
|
|
|
29.03.2002, 12:00
|
#49
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Step 3
Löschen von Datensätzen
So, damit wir den ganzen Mist, den wir in die Datenbank eingegeben haben auch wieder löschen können, basteln wir uns jetzt eine einfache Funktion hierfür. Hier kommt wieder der Primärschlüssel ins Spiel, damit auch wirklich nur der Datensatz ins Nirvana befördert wird, der weg soll. Denn wenn wie beispielsweise den Nachnamen als Primary Key gewählt hätten, gäbe es bei Meier und Meier schon Probleme, glücklicherweise waren wir aber ja so schlau, uns der auto_increment-Prozedur zu bedienen.
Innerhalb der Ausgabeschleife fügenen wir nun an jeden Datensatz einen Link, an den wir wieder unsere Steuerungs Variable $action anhängen, diesmal mit dem Wert loeschen. Ausserdem hängen wir noch die jeweilige ID (unseren Primärschlüssel) an:
PHP-Code:
while ($zeile = mysql_fetch_array($ergebnis)){
print("$zeile[nachname],$zeile[vorname],... <a href=\"$PHP_SELF?action=loeschen&id=$zeile[id]\">Löschen?</a><br>");
// Die Variablen werden einfach per "?" von der URL getrennt, weitere Variablen mit "&"
}
Im Kopf des Scripts notieen wir nun die entsprechende Löschfunktion:
PHP-Code:
if($action == "loeschen"){
$abfrage = "DELETE FROM adressen WHERE id='$id'";
mysql_query($abfrage, $verbindung);
print("Datensatz $id gelöscht!!<br>");
}
Diese unterscheidet sich lediglich in der SQL-Abfrage und natürlich der Meldung von der Funktion zum speichern. Hier noch mal der SQL-Teil im Schema:
PHP-Code:
DELETE FROM [Datenbank] WHERE bedingung;
In unserem Beispiel wollen wir ja nur eine speziellen Datensatz löschen, es lassen sich aber auch mehrere auf einmal entfernen. Dazu muss die SQL-Anweisung nur entsprechend umgebaut werden. Hier mal ein Beispiel:
PHP-Code:
DELETE FROM adressen WHERE plz='53227';
Unser Script ist nun auf dieses Ausmass angewachsen:
PHP-Code:
<html>
<head>
<title>Workshop</title>
</head>
<body>
<p>
<?
$verbindung = mysql_connect("localhost","root",""); // Diese Daten koennen natuerlich auch aus Variablen gelesen werden
mysql_select_db("test");
if($action == "neu"){
$abfrage = "INSERT INTO adressen (vorname,nachname,strasse,plz,ort,telefon) VALUES ('$vorname', '$nachname','$strasse','$plz','$ort','$telefon')";
mysql_query($abfrage, $verbindung);
print("Neuen Datensatz gespeichert!<br>");
}
if($action == "loeschen"){
$abfrage = "DELETE FROM adressen WHERE id='$id'";
mysql_query($abfrage, $verbindung);
print("Datensatz $id gelöscht!!<br>");
}
$abfrage = "SELECT * FROM adressen";
$ergebnis = mysql_query($abfrage, $verbindung);
while ($zeile = mysql_fetch_array($ergebnis)){
print("$zeile[nachname],$zeile[vorname],$zeile[strasse],$zeile[plz] $zeile[ort],$zeile[telefon] <a href=\"$PHP_SELF?action=loeschen&id=$zeile[id]\">Löschen?</a><br>");
}
mysql_close($verbindung);
?>
</p>
<p>
<b>Neue Adresse eintragen</b>
<form action="<?php $PHP_SELF ?>">
Vorname: <input type="text" name="vorname"><br>
Nachname: <input type="text" name="nachname"><br>
Strasse: <input type="text" name="strasse"><br>
PLZ: <input type="text" name="plz"><br>
Ort: <input type="text" name="ort"><br>
Telefon: <input type="text" name="telefon"><br>
<input type="hidden" name="action" value="neu">
<input type="submit" value="Speichern">
</form>
</p>
</body>
</html>
@holunda
Wie Du siehst, kann unsere Variable "$action" auf die verschiedensten Arten übergeben werden.
__________________
Give up yourself into the moment — The time is now.
|
|
|
29.03.2002, 12:01
|
#50
|
|
TP-Veteran
Registriert seit: Oct 2001
Ort: Oberau
|
alles klar chef
aber eine if abfrage muss rein oder? sonst versucht er ja gleich beim aufruf des forms die sachen einzutragen bzw überprüfen? oder?
|
|
|
29.03.2002, 12:04
|
#51
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
So sieht's aus. Das würde allerdings beim ersten Aufruf nichts machen, da er keine Daten (= übergebenen Variablen) hätte, die eingetragen werden könnten.
__________________
Give up yourself into the moment — The time is now.
|
|
|
29.03.2002, 12:05
|
#52
|
|
TP-Veteran
Registriert seit: Oct 2001
Ort: Oberau
|
leuchtet ein
|
|
|
29.03.2002, 12:25
|
#53
|
|
TP-Moderator
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
|
voll und ganz wieder da
So, jetzt hab ich schnell was genährt  und bin jetzt endlich bereit zu arbeiten  .
Hab bis jetzt alles mehr oder weniger verstanden 
|
|
|
29.03.2002, 12:34
|
#54
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
So, die Grundfunktionen sind jetzt eingebaut, und wir können uns den SQL-Feinheiten widmen.
Zuvor aber wird unsere kleine Adressverwaltung der Übersichtlichkeit wegen optisch etwas aufgemotzt.
Der Code wird durch das einfügen der HTML-Tabellen natürlich etwas komplexer, aber man kann hier sehr schön sehen, wie das Zusammenspiel der beiden Welten (HTML und PHP) funktioniert:
PHP-Code:
<html>
<head>
<title>Workshop</title>
</head>
<body>
<table border="0" cellspacing="5">
<?
$verbindung = mysql_connect("localhost","root",""); // Diese Daten koennen natuerlich auch aus Variablen gelesen werden
mysql_select_db("test");
if($action == "neu"){
$abfrage = "INSERT INTO adressen (vorname,nachname,strasse,plz,ort,telefon) VALUES ('$vorname', '$nachname','$strasse','$plz','$ort','$telefon')";
mysql_query($abfrage, $verbindung);
print("<tr><td colspan=\"7\">Neuen Datensatz gespeichert!</td></tr>");
}
if($action == "loeschen"){
$abfrage = "DELETE FROM adressen WHERE id='$id'";
mysql_query($abfrage, $verbindung);
print("<tr><td colspan=\"7\">Datensatz $id gelöscht!!</td></tr>");
}
$abfrage = "SELECT * FROM adressen";
$ergebnis = mysql_query($abfrage, $verbindung);
while ($zeile = mysql_fetch_array($ergebnis)){
print("
<tr bgcolor=\"#CCCCCC\">
<td>$zeile[nachname]</td>
<td>$zeile[vorname]</td>
<td>$zeile[strasse]</td>
<td>$zeile[plz] $zeile[ort]</td>
<td>$zeile[telefon]</td>
<td><a href=\"$PHP_SELF?action=loeschen&id=$zeile[id]\">Löschen?</a></td>
</tr>
");
}
mysql_close($verbindung);
?>
</table>
<form action="<?php $PHP_SELF ?>">
<table border="0" cellspacing="5">
<tr>
<td colspan="2">Neue Adresse eintragen</td>
</tr>
<tr>
<td>Vorname:</td><td><input type="text" name="vorname"></td>
</tr>
<tr>
<td>Nachname:</td><td><input type="text" name="nachname"></td>
</tr>
<tr>
<td>Strasse:</td><td><input type="text" name="strasse"></td>
</tr>
<tr>
<td>PLZ:</td><td><input type="text" name="plz"></td>
</tr>
<tr>
<td>Ort:</td><td><input type="text" name="ort"></td>
</tr>
<tr>
<td>Telefon:</td><td><input type="text" name="telefon"><br>
<tr>
<td colspan="2">
<input type="hidden" name="action" value="neu">
<input type="submit" value="Speichern">
</td>
</tr>
</table>
</form>
</body>
</html>
Ich lasse das jetzt mal kurz so stehen, falls Unklarheiten auftauchen sollten. Am der Funktionalität selber hat sich nichts geändert, es wurde lediglich etwas mehr HTML eingebettet!
__________________
Give up yourself into the moment — The time is now.
|
|
|
29.03.2002, 12:40
|
#55
|
|
TP-Moderator
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
|
schön
Ja, schaut schon viel schöner aus.
Eine kleine Frage:
Wird ein Datenbankfeld (z.B. "Strasse") automatisch erstellt, wenn man in dieses Daten schreibt und es noch nicht vorhanden ist?
|
|
|
29.03.2002, 12:44
|
#56
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Du kannst mit INSERT nur in Felder schreiben, die es in der DB schon gibt. Natürlich lässt sich mit ALTER_TABLE das Dump der Tabelle ändern, aber dann wird das ja ein riesen Chaos. Wenn Du in einer Tabelle, welche die Spalten a,b und c hat, dieses INSERT ausführst, wird d einfach ignoriert:
INSERT INTO beispiel (a,b,c,d) VALUES ('wert1','wert2','wert3','wert4');
__________________
Give up yourself into the moment — The time is now.
|
|
|
29.03.2002, 12:49
|
#57
|
|
TP-Moderator
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
|
Zitat:
Original geschrieben von schmobi
Du kannst mit INSERT nur in Felder schreiben, die es in der DB schon gibt. Natürlich lässt sich mit ALTER_TABLE das Dump der Tabelle ändern, aber dann wird das ja ein riesen Chaos. Wenn Du in einer Tabelle, welche die Spalten a,b und c hat, dieses INSERT ausführst, wird d einfach ignoriert:
INSERT INTO beispiel (a,b,c,d) VALUES ('wert1','wert2','wert3','wert4');
|
hm. Ich dachte nämlich, dass ich vorher noch keins "strasse" angelegt hatte - und jetzt ist sie da
Hab mich vielleicht vertan...
Noch eine Frage nicht direkt zum Thema:
Gibt es in css eine HTML-Marke, die diejenigen Texte anspricht, die in nix verpackt sind?
Zum Beispiel:
PHP-Code:
<html>
<head>
<title>Workshop</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
Hallo. Wo stelle ich die HTML-Marke in css ein, die bestimmt, wie ich aussehe?
</body>
</html>
|
|
|
29.03.2002, 12:53
|
#58
|
|
Registered User
Registriert seit: Dec 2001
Ort: Berlin
|
re
mach auch wieder mit
bis jezt hab ich sogar alles verstanden
aber schreiben tu ichs noch schnell, damit ich dann auch weitermachn kann... 
|
|
|
29.03.2002, 13:06
|
#59
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Zitat:
Original geschrieben von Levis
hm. Ich dachte nämlich, dass ich vorher noch keins "strasse" angelegt hatte - und jetzt ist sie da
Hab mich vielleicht vertan...
[/php]
|
Nein, das war mein Fehler. In der DB haben wir das Feld "strasse" angelegt, ich hatte nur vergessen, selbiges mit auszugeben. Aber in den letzten Scripts isses mit drin.
CSS:
Mit body {...} geht das, der Internet Explorer kennt auch noch * {...}.
__________________
Give up yourself into the moment — The time is now.
|
|
|
29.03.2002, 13:15
|
#60
|
|
Registered User
Registriert seit: Dec 2001
Ort: Berlin
|
hm mal ne frage zu dem
<input type="hidden" name="action" value="neu">
kann man stattdessen auch in dem form tag
action="$PHP_SELF?action=neu"
angeebn?
weil so hab ich das immer gemacht, is da irgendwas nachteiliges dran??
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
| | |