phpbuddy.eu
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 29.03.2002, 13:21   #61
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
Das geht auch, ist vorrangig eine Frage des Geschmacks. Allerdings kommt es auf die Art an, wie das Formulat per HTTP abgeschickt wird, also POST (Standard) oder GET, da kann es zu Problemen kommen, wenn die Variablen nicht übergeben werden. Mit Hidden Fields bist Du auf der sicheren Seite.
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Linktipp

Alt 29.03.2002, 13:23   #62
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
hm okok danke also ich lass es oben im action tag wenn ich method="POST" datzangebe sollte es ja eigentlich keine probleme machn
Toxical ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:39   #63
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
hm ok schmbi also post standart gutgut
hm den teil muss ich glaub ich erst mal verdaun

mysql_affected_rows(), ist mir neu, aber gut anzahl der reihen... ansonsten eigentlich keine unklarheiten wenn mans so sieht, nur alleine wär ich auf sowas nie gekommen...

edit
höö wo is deinn jezt dein langer post hin q schmobi??
4dit
Toxical ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:49   #64
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein

@Toxical
Ich habe das Posting noch kurz umformuliert, hier ist es wieder.


Step 4
Datenbank durchsuchbar machen

Um unsere unglaubliche Fülle von Adressen nun durchsuchbar zu mcahen, bauen wir eine kleine Suchfunktion ein. Wir fangen erstm mal klein an, und lassen nur nach Vor- oder Nachname suchen. Dazu benötigen wir ein entsprechendes Formular, in dem neben unserer Variable "$action" auch übergeben wird, in welcher Spalte nach was gesucht werden soll:

Code:
<form action="<?php $PHP_SELF ?>">
<table border="0" cellspacing="5">
<tr>
	<td colspan="2">Nach Adressen suchen</td>
</tr>
<tr>
	<td>Suchwort:</td><td><input type="text" name="suchwort"></td>
</tr>
<tr>
	<td colspan="2">
	Suche nach 
	<input type="radio" name="spalte" value="nachname" checked> Nachname oder
	<input type="radio" name="spalte" value="vorname"> Vorname?
	</td>
</tr>
<tr>
	<td colspan="2">
	<input type="hidden" name="action" value="suchen">
	<input type="submit" value="Finden">
	</td>
</tr>
</table>
</form>
Im Script wird dann wieder geprüft, welche Aktion (-> $action) ausgeführt werden soll. In disem Falle die Suche:

Code:
if($action == "suchen"){
	$abfrage = "SELECT * FROM adressen WHERE $spalte='$suchwort'";
	$ergebnis = mysql_query($abfrage, $verbindung);
	$anzahl = mysql_affected_rows();
	print("
		<tr>
			<td colspan=\"7\">$anzahl Adresse(n) gefunden:</td>
		</tr>
	");
	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>
		");
	}
	print("
		<tr>
			<td colspan=\"7\"><hr></td>
		</tr>
	");
	
}
Die Abfrage arbeitet wieder mit dem WHERE-Statement, nur, dass diesmla kein fester SQÖ-Ausdruck verwendet wird, sondern eine Abfrage aus den übergebenen Variablen zusammengebaut wird:

PHP-Code:
$abfrage "SELECT * FROM adressen WHERE $spalte='$suchwort'" // Bitte hierzu noch mal einen Blick auf das Formular werfen 
Die Script-Zweig sieht dann so aus:

PHP-Code:
f($action == "suchen"){
    
$abfrage "SELECT * FROM adressen WHERE $spalte='$suchwort'";
    
$ergebnis mysql_query($abfrage$verbindung);
    
$anzahl mysql_affected_rows();
    print(
"
        <tr>
            <td colspan=\"7\">$anzahl Adresse(n) gefunden:</td>
        </tr>
    "
);
    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>
        "
);
    }
    print(
"
        <tr>
            <td colspan=\"7\"><hr></td>
        </tr>
    "
);
    

Neu ist die Funktion mysql_affected_rows(), sie liefert die Anzahl der von der Abfrage zurückgelieferten Spalten. Diesen Wert schreiben wir in die Variable "$anhahl" und können somit komfortabel ausgeben, wieviele Treffer gefunden wurden. Falls kein Treffer geliefert wird, erfolgt keine Ausgabe, da die Funktion FALSE zurückliefert, man kann dieses jedoch mit einer einfachen Schleife umbauen, damit zumindest eine Meldung erscheint (könnt Ihr ja mal testen).

Hier nun unser aktuelles Script:

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>");
}

if(
$action == "suchen"){
    
$abfrage "SELECT * FROM adressen WHERE $spalte='$suchwort'";
    
$ergebnis mysql_query($abfrage$verbindung);
    
$anzahl mysql_affected_rows();
    print(
"
        <tr>
            <td colspan=\"7\">$anzahl Adresse(n) gefunden:</td>
        </tr>
    "
);
    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>
        "
);
    }
    print(
"
        <tr>
            <td colspan=\"7\"><hr></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">
</tr>
<tr>
    <td colspan="2">
    <input type="hidden" name="action" value="neu">
    <input type="submit" value="Speichern">
    </td>
</tr>
</table>
</form>

<form action="<?php $PHP_SELF ?>">
<table border="0" cellspacing="5">
<tr>
    <td colspan="2">Nach Adressen suchen</td>
</tr>
<tr>
    <td>Suchwort:</td><td><input type="text" name="suchwort"></td>
</tr>
<tr>
    <td colspan="2">
    Suche nach 
    <input type="radio" name="spalte" value="nachname" checked> Nachname oder
    <input type="radio" name="spalte" value="vorname"> Vorname?
    </td>
</tr>
<tr>
    <td colspan="2">
    <input type="hidden" name="action" value="suchen">
    <input type="submit" value="Finden">
    </td>
</tr>
</table>
</form>

</body>
</html>
Die Ausgabe der gesamten Datensätze erfolgt aus Gründen der Nachvollziehbarkeit immer noch parallel.
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:50   #65
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
Lightbulb

so?


Wäre es nicht besser, wenn man es so machen würde:
PHP-Code:
if($action == "suchen"){
    
$abfrage "SELECT * FROM adressen WHERE $spalte='$suchwort'";
    
$ergebnis mysql_query($abfrage$verbindung);
    
$anzahl mysql_affected_rows(); 
    print(
"
    <tr>
        <td colspan=\"7\">$anzahl Adresse(n) gefunden:</td>
    </tr>
    "
);
    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>
        "
);
    }
    print(
"
    <tr>
        <td colspan=\"7\"><hr></td>
    </tr>
    "
);    

Dann stehen bei mehreren Suchergebnissen nicht immer "x Adresse(n) gefunden:" und nach jedem Ergebnis kein Strich.
__________________
"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, 13:51   #66
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
Look oben, genau deswegen habe ich mein Posting editiert, war ein kleiner Denkfehler.
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:53   #67
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
supi funzt
und verstehn tu ichs auch alles noch

an dieser staelle noch mals ein herzliches danke
an unsern SchmobManLehrMeister
Toxical ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:57   #68
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
Smile

Zitat:
Original geschrieben von schmobi
Look oben, genau deswegen habe ich mein Posting editiert, war ein kleiner Denkfehler.
achso
__________________
"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, 14:03   #69
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
Lightbulb

einen Vorschlag


Also ich muss jetzt auch Toxical nochmal Recht geben. Du erklärst das besser als meine Lehrer am Gymy

Mich würde noch folgendes interessieren:
Ein User muss sich einloggen (in Datenbank steht sein Name und Passwort). Dann kann er Datensätze in die Datenbank schreiben/löschen/editieren, die NUR er einsehen kann. Dann soll es auch noch "offizielle" Datensätze geben, die jeder einsehen kann.
Für später wär das interessant, wenn wir die Grundkenntnisse haben...
__________________
"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, 14:07   #70
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
hm jo, denke mal als nächstes kommt sowie so das editieren

ich mein jezt hammer adden löschen suchen , jezt sollte hoffentlich edit kommen*gg*
und privat tables is ja eiegtnlcu ncih viel schwerer halt nur alles mehr und komplexer das man halt entwder 2 tables braucht oder eine wo halt noch das feld drin is was anzeigt obs privat ist oder nicht
Toxical ist offline   Mit Zitat antworten
Alt 29.03.2002, 14:07   #71
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
Danke, das baut auf.

Ich werde jetzt erstmal vor die Tür gehen (dieses Wetter!) und dann können wir so etwas gerne mal durchgehen.

Im nächsten Step werden wir dann also mit Zugriffsrechten arbeiten.

Die SQL-Funktionen und Regeln werde ich versuchen, mit in den Fortschritt des Projektes einzubauen, und nicht einzeln erklären. Falls doch mal Unklarheiten auftreten -> Fragen.
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 14:13   #72
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
josupi
werd auch mal rausgehn kleine fahrradtour unternehemn, naa klein bis heut abend bin ich bestimmt unterwegs

aber dann gehtz wieder rund
Toxical ist offline   Mit Zitat antworten
Alt 29.03.2002, 14:16   #73
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

genau


So machen wirs
__________________
"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, 18:49   #74
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
So, ich werde jetzt mal alles für den nächsten Step vorbereiten.

Als erstes machen wir eine Einführung in Sessionmanagement und lassen die Adress-"Verwaltung" links liegen. Da ich ab jetzt gerne mit etwas optimierterem PHP-Code fortfahren möchte, nochmal die Frage, ob bislang alles soweit verstanden wurde.

Und noch eine Frage zum Thema Programmierung: Muss ich erklären, was Klassen und Objekte sind, oder weiss da jeder soweit bescheid?
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 29.03.2002, 19:12   #75
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Zitat:
ob bislang alles soweit verstanden wurde.
jep
Zitat:
Und noch eine Frage zum Thema Programmierung: Muss ich erklären, was Klassen und Objekte sind, oder weiss da jeder soweit bescheid?
erklären schadet nie
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Workshops und Tutorials
[Workshop] MySQL-Befehle mit PHP [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