art-d-sign
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 29.03.2002, 11:43   #46
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten


Alt 29.03.2002, 11:50   #47
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Arrow

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
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 29.03.2002, 11:57   #48
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:00   #49
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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 [DatenbankWHERE 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.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:01   #50
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
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?
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:04   #51
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:05   #52
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
leuchtet ein
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:25   #53
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Talking

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
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:34   #54
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:40   #55
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
Cool

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?
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:44   #56
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:49   #57
TP-Moderator
 
Benutzerbild von Levis
 
Registriert seit: Jul 2001
Ort: Regensburg / Landshut
Levis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKELevis ist ein richtiges Arbeitstier - DANKE
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
HalloWo stelle ich die HTML-Marke in css ein, die bestimmtwie ich aussehe?
</
body
</
html
__________________
"Programmieren ist eine Kunst"

» Fahrtenbuch genial! ist endlich da! Steuern sparen so einfach wie noch nie!
» QuickShot 3.0 ist endlich da!
» Schöner einkaufen


Red Gold Green - good things come to those who wait...
Levis ist offline   Mit Zitat antworten
Alt 29.03.2002, 12:53   #58
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
re
mach auch wieder mit

bis jezt hab ich sogar alles verstanden

aber schreiben tu ichs noch schnell, damit ich dann auch weitermachn kann...
Toxical ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:06   #59
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:15   #60
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
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??
Toxical ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Workshops und Tutorials
[Workshop] MySQL-Befehle mit PHP [Anfänger] [Workshop] MySQL-Befehle mit PHP
« [Tutorial] Tokenizer | PHP und MySQL in 5 Minuten »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu