PHP Wie und Wo habt ihr PHP gelernt ?

Kommt drauf an, was du damit bezwecken willst.

Für ein einfaches Kontkatformular mit Absendername, Text und E-Mailadresse nicht.

Wenn man bei dem Formular aber bspw. etwas aus einer Liste auswählen muss (meinetwegen bietest du dem Besucher verschiedene Betreffs an aus denen er wählen kann), dann könnte man diese Liste mit einer Schleife erstellen. Ist bei so kleinen Dingen aber eigentlich overpowered.


Ich weiß auch gar nicht, was du dir da jetzt so einen Stress machst :) Wenn du zu jeder Schleife mal ein Beispiel gemacht hast , dann weißt du wie das läuft.
 
Also ich habs auf der arbeit gelernt während der ausbildung bzw zum ende hin und programmiere nun interne webseiten die organisatorisches erleichtern (schulungsplanungen etc.). Am anfang haben mir da die seite Schattenbaum und Tutorials.de oft weitergeholfen. Aber es is meiner meinung echt das beste mit jmd reden der einem das erklärt warum das so ist usw.
 
Ja aber mit wem ?

Wie gesagt, dieses Fernstudium und Kurse sind einfach zu teuer. Und ich persönlich kenne leider niemanden, der sich mit PHP auskennt. ( Schön wäre es)

Diese Tutorials sind für mich einfach total schwer verstehbar.

Wie kann ich mir am besten Codes merken? Also z.B. wie man ein "While-Skript" schreibt.
Wie könnte man sowas am besten auswendig lernen?
 
Was willst du da groß auswendig lernen? Ist ja meist nur eine Zeile

while(Bedingung) {
}

if(Bediengung) {}
else {}

usw.

Der Inhalt der Schleifen usw. richtet sich ja nachdem was du programmieren willst. Und alles andere schlägt man wie gesagt bei Bedarf nach.
 
Könnt ich vielleicht einige Beispiele haben, was man mit dieser "while-Schleife" alles machen kann?
 
Du gehst das ganze falsch an.

Wenn du keine while-Schleife brauchst, dann brauchst du keine. Wieso musst du jetzt wissen, was man damit realisieren kann? Du solltest dich einfach mit PHP beschäftigen und z.B. mit einem einfachen Formular beginnen. Wie übergibst du Werte aus Eingabefeldern usw..

Irgendwann willst du dann etwas anderes machen und findest heraus, genau dafür kannst du diese Schleife brauchen. Wenn es soweit ist, wirst du es merken ;)

Ein kleines Beispiel hatte ich ja auch schon beschrieben: Wie du Daten aus einer Datenbank ausliest und in einer Tabelle ausgibst:
Du würdest dann quasi sagen, gib solange Daten aus der Datenbank aus, bis du am Ende angekommen bist. Und in jedem Durchlauf der Schleife würdest du einfach den HTML-Code für deine Tabellenstruktur mit angeben, so dass bei jedem Durchgang eine neue Spalte/Zeile begonnen wird.
PHP:
while( .. Daten in Datenbank vorhanden ..)
{
  gib Daten aus
}
So kannst du mit relativ wenig Code kilometerlange Tabellen erzeugen.


Ich habe z.B. ein Formular erstellt, um USB-Sticks zu verwalten (die hier im Forum getestet werden). Alle Daten sind in einer Datenbank gespeichert. Damit ich bei einem Stick etwas ändern kann (weil etwas falsch gespeichert wurde), hole ich in einer while-Schleife alle Daten aus der Datenbank, so dass ich den Stick dann aus der Liste auswählen kann.

daten_aus_datenbank.jpg

Für die ganze Liste brauchst du mit der while-Schleife lediglich 5-10 Zeilen Code.
 
Zuletzt bearbeitet:
Eigentlich hast du Recht. Ich werde heute Abend mal mit einem einfachen Kontaktformular anfangen.

Das was du mir da zitiert hast was du schon in einem vorherigen Beitrag geschrieben hast, was ich beispielsweise mit einer while-Schleife machen kann - ganz schnell: Ich verstehs nicht.

Ich werde euch dann meinen hoffentlichen Fortschritt mitteilen.
 
Zuletzt bearbeitet:
Na dann versuche ich mich auch mal an der Erklärung einer while Schleife ;)

In php sieht sie ungefähr so aus (kannst dieses Script abschreiben und laufen lassen):

PHP:
<?php

$a=1;
while ( $a < 6)
  {
     echo "Die Zahl lautet: ".$a;
     echo "<br />"
     $a++
  }
echo "Ende!"
?>

Erklärung:
Die Tags für <?php und ?> kennste ja sicher. Markieren Anfang und Ende des PHP teils.

Dann wird in der 3. Zeile die Variable a = 1 gesetzt.
In der 4. Zeile kommt die while Anweisung. In Klammern steht welche Bedingung erfüllt sein muss damit die while Schleife weiterläuft. In diesem Fall also muss der Wert der Variable a kleiner sein als 6. So lange also a kleiner ist wird alles das was in der while Schleife steht - also zwischen der Klammer { in Zeile 5 und der Klammer } in Zeile 9 - immer aufs neue wiederholt.
In diesem Fall sind es zwei Ausgaben und eine Anweisung:
Zeile 6: Es wird der Satz "Die Zahl lautet " + der Inhalt der Variablen a ausgegeben.
Zeile 7: Ein html-Zeilenumbruch
Zeile 8: Der Wert der Variablen a wird um 1 erhöht (man könnte auch schrieben a=a+1;)
In Zeile 9 kommt dann, wie bereits gesagt das Ende der Schleife.

Der Inhalt wird so lange wiederholt bis die Variable a den Wert 6 oder höher erreicht hat. Danach wird die Schleife abgebrochen und die Ausgabe "Ende" aus Zeile 10 angezeigt.

Das sieht dann ungefähr so aus:
Code:
Die Zahl lautet: 1
Die Zahl lautet: 2
Die Zahl lautet: 3
Die Zahl lautet: 4
Die Zahl lautet: 5
Ende

Ich hoffe es ist halbwegs verständlich.
 
Hi,

ja vielen Dank !

Schau dir das mal an was ich gemacht habe.

Ist es so einigermaßen richtig ?

http://lolpi14.lo.funpic.de/while1.html


So sollte das eigentlich einigermaßen laufen.

Nur...was ist der Sinn bei sowas ?
 
Zuletzt bearbeitet:
Sieht doch schonmal gut aus.
Der Sinn hinter der Sache ist, dass du wie gewünscht die Funktionsweise einer While Schleife kennst und (hoffentlich) verstehst :D

... und später dann damit den Transfer schaffst an einem Punkt zu erkennen, aha, hier kann nun eine While Schleife mein Problem lösen.

Wie aber bereits gesagt wurde, für einfache Formulare gibt es in der Regel keinen while Bedarf. ;)

Erst wenn du die bereits genannten Tabellen, dynamische befüllte DropDowns und was weiß ich alles erstellen willst, dann kommt eine Schleife zum Einsatz.
 
Zuletzt bearbeitet:
Was sind denn "dynasmich befüllte DropDowns" ? Könntest du mir vielleicht ein Link schicken, wo man sowas sieht ?

Noch eine Frage.

Ich habe mal zum testen das hier gemacht:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php

$passwort = $_POST["passwort"];
$tage = "Montag";


$passwort = "geheim";

if($passwort == "geheim")
{
echo "Das ist die Liste: <p>$tage</p>";
}


?>
</body>
</html>


Die Datei ist die while2.html Datei die auch unter http://lolpi14.lo.funpic.de/while2.html abrufbar ist. Wenn man da jetzt das Passwort geheim eingibt, kann man den Text "Montag" sehen.

Das Problem ist aber, dass das Passwort schon in dem Passwort Eingabefeld drin steht. Wie kann ich das entfernen?
 
Der Screenshot von mr. snoot zeigt z.B. ein dynamisch befülltes DropDown. D.h. die ganzen Daten die dort zur Auswahl stehen sind nicht fest im HTML Quellcode hinterlegt sondern werden mit PHP aus einer Datenbank geholt. Dabei werden mit einer Schleife so lange neue <Option> Elemente hinzugefügt, bis keine neuen Daten mehr vorhanden sind.

In deinem geposteten Script ist ein Fehler, du liest zwar das Feld aus aber überschreibst die Variable. Somit ist es absolut egal was man eingibt, es kommt immer Montag. $passwort = "geheim"; muss raus

Das "Passwort" steht vermutlich schon in dem Feld, weil dein Browser Passwörter automatisch speichert!?
 
PHP:
$passwort = "geheim";

if($passwort == "geheim")
...

Diese Abfrage ist immer richtig, da du ja selbst $passwort = "geheim" setzt. Du musst für die mittels Post übergebene Variable ($passwort = $_POST['passwort']) einen anderen Namen nehmen als $passwort.
 
Ja, vermutlich.

Danke für deine Hilfe.

Das mit dem Drop Menü ...das heißt, ich kann sowas auch anlegen. Wenn jemand in dem Menü beispielsweise "Montag" anklickt, kommt beispielsweise News von Montag. Wenn man im Menü Dienstag klickt, kommen News von Dienstag...ist das so einigermaßen richtig gedacht ?


@MrSnoot

Versteh ich nicht ganz ...



Schaut mal.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php

$passwort = $_POST["passwort"];
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$alter = $_POST["alter"];
$tage = "Montag";

if($passwort == "geheim")
{
echo "Das ist die Liste: <p>$tage</p>";
}
else
{
echo "Das ist das falsche Passwort!";
}

if($vorname AND $nachname AND $alter == "")
{
echo "<p>Vorname, Nachname oder Alter nicht angegeben!</p>";
}
else {
echo "<p>Hallo $vorname $nachname</p>";
}


?>
</body>
</html>

Wenn ich jetzt bei Vorname / Nachname / Alter nichts angebe, kommt da der Text "Hallo" obwohl ja eigentlich hätte kommen müssen, Vorname / Nachname ....nicht angegeben.
 
Zuletzt bearbeitet:
Das Dropdownmenü ist im Grunde nichts anderes als ein Formularfeld, nur das du halt keinen Wert selbst eintippst, sondern ihn aus der Liste wählst.

Bei deinem Script gibst du halt eine Zahl ein und bekommst eine bestimmte Antwort. Beim Menü wählst du einen Wochentag und bekommst die News des Tages.


Zu deinem ersten Passwortscript (Post #31):

  • zunächst gibst du der Variablen $passwort den Wert der mittels $_POST übergeben wurde
  • in der übernächsten Zeile gibst du der Variablen aber einen neuen Wert: $passwort = "geheim";
  • und danach fragst du if($passwort == "geheim") { .. }. Da du aber $passwort gerade davor auf "geheim" gesetzt hast hast du als if-Bedingung ja im Grunde if("geheim" == "geheim") { .. } und das stimmt immer

Dein mit $_POST übergebenes Passwort musst du also in einer anderen Variablen speichern, die du dann mit $passwort (hast du = "geheim" gesetzt) vergleichst.

Also bspw.:
PHP:
<?php

$eingabe = $_POST["passwort"]; #das hat der Benutzer eingegeben

$passwort = "geheim";          #das ist das richtige von dir festgelegte Passwort

if($passwort == $eingabe)      #Vergleich von Benutzereingabe und deinem vorgegebenen Passwort
{
  echo "Das ist die Liste: <p>$tage</p>";
}

?>
 
Zuletzt bearbeitet:
Wenn du "Vorname, Nachname oder Alter nicht angegeben" haben willst, musst du OR statt AND benutzen, denn bei AND müssen alle bedingungen erfüllt sein, bei OR nur eine!

Zudem solltest du es so verwenden:

if( ($Vorname == "") OR ($Nachname == "") .... )
...
 
Mr. Snoot schrieb:
Das Dropdownmenü ist im Grunde nichts anderes als ein Formularfeld, nur das du halt keinen Wert selbst eintippst, sondern ihn aus der Liste wählst.

Bei deinem Script gibst du halt eine Zahl ein und bekommst eine bestimmte Antwort. Beim Menü wählst du einen Wochentag und bekommst die News des Tages.


Zu deinem ersten Passwortscript (Post #31):

  • zunächst gibst du der Variablen $passwort den Wert der mittels $_POST übergeben wurde
  • in der übernächsten Zeile gibst du der Variablen aber einen neuen Wert: $passwort = "geheim";
  • und danach fragst du if($passwort == "geheim") { .. }. Da du aber $passwort gerade davor auf "geheim" gesetzt hast hast du als if-Bedingung ja im Grunde if("geheim" == "geheim") { .. } und das stimmt immer

Dein mit $_POST übergebenes Passwort musst du also in einer anderen Variablen speichern, die du dann mit $passwort (hast du = "geheim" gesetzt) vergleichst.

Also bspw.:
PHP:
<?php

$eingabe = $_POST["passwort"]; #das hat der Benutzer eingegeben

$passwort = "geheim";          #das ist das richtige von dir festgelegte Passwort

if($passwort == $eingabe)      #Vergleich von Benutzereingabe und deinem vorgegebenen Passwort
{
  echo "Das ist die Liste: <p>$tage</p>";
}

?>

Ahh jetzt hab ichs verstanden. Danke für die ausfürhliche Information hast mir echt geholfen !

Rain schrieb:
Wenn du "Vorname, Nachname oder Alter nicht angegeben" haben willst, musst du OR statt AND benutzen, denn bei AND müssen alle bedingungen erfüllt sein, bei OR nur eine!

Zudem solltest du es so verwenden:

if( ($Vorname == "") OR ($Nachname == "") .... )
...


Ok danke. Hab aber grad den Befehl empty($variable) kennengelernt. Der Befehl macht die Arbeit auch ganz gut.


Neue Frage:


Und zwar hab ichs geschafft mein eigenes kleines Formular zu scripten. Das funktioniert auch ganz gut.
Jetzt nur eine Frage.

Wenn die Eingabefelder "Username" und "Nachricht" nicht angegeben werden, kommt ja das was ich im "echo" geschrieben habe.
Das Problem ist aber, dass auch wenn jemand auf Absenden klickt, bekomm ich eine leere E-Mail.

Wo genau muss ich die Zeile mit der mail() Funktion hinpacken? Irgendwo bei else? Wo genau?


PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php

$username = $_POST["username"];
$nachricht = $_POST["nachricht"];


if(empty($username) && empty($nachricht))
 {
 echo "Bitte geben Sie ihren Usernamen und Ihre Nachricht ein!!";
 }
 else
 {
 echo "Ihre Daten wurden versendet!!";
 }


mail("******","Nachricht von $_POST[username]","Die Nachricht von $_POST[username] lautet: $_POST[nachricht]");

?>

</body>
</html>
 
Zuletzt bearbeitet:
na in den else-teil ... die mail()-funktion hat so noch nix mit irgend ner bedingung zu tun, sondern wird immer ausgeführt, mit oder ohne eingegebenen daten. wohin genau bei else... is dir frei gestellt ob vor oder nach dem echo ;)
 
Und lösch mal besser deine E-Mailadresse hier aus dem Forum raus, sonst kriegst du morgen Angebote für Viagra ;)
 
Zurück
Oben