[PHP] Der "Bedde15 lernt PHP" Thread

Bedde15

Well-known member
ID: 347427
L
29 April 2006
304
16
Hallo zusammen,

schon sehr lange interessiert mich das Thema PHP und ich bin nun seit 14 Tagen dabei PHP zu erlernen. Habe mir eine Seminar DVD gekauft und in dieser habe ich nun den GRUNDLAGENKURS abgeschlossen und davon 95 % verstanden.

Das Problem bei mir ist immer was ich wann am Besten verwende und in welcher Reihenfolge. Z.b. Switch case oder doch if elsif?

Lauter so sachen schwirren mir nun durch den Kopf. Sitze seit 1 Std. nun am PC und versuche aus den Grundlagen was zu bauen. Mal schaun was mir gelingt, hoffe ich kann mich bei Fragen hier melden *g*

GLG
 
switch ist eine Art Abkürzung für if. Prinzipiell kannst du immer if verwenden.
switch bietet sich allerdings an, wenn du eine (a) bestimmte Variable mehrmals (b) auf Gleichheit mit Konstanten (c) testen willst.

Bsp:
PHP:
if($foo == 1)
  do_this();
elseif($foo == 2)
  do_that();
else
  do_it_otherway();
(a) Es wird immer $foo gecheckt
(b) viele Fälle (im Bsp. 3 Stück)
(c) Es wird nur mit Konstanten verglichen

Mit switch sieht es so aus:
PHP:
switch($foo)
{
  case 1:
    do_this();
    break;

  case 2:
    do_that();
    break;

  default:
    do_it_otherway();
    break;
}
Ein Vorteil von switch (und auch eine Fehlerquelle für Anfänger) ist das sog. "fall-through" (z.dt. Durchfallen):
Wenn du nämlich am Ende eines Falls keine break-Anweisung setzt, "fällt" die Ausführung in den darunterliegen Fall durch und führt diesen auch noch mit aus. Das kann manchmal erwünscht sein und verhindert, dass du Code mehrfach in mehrere Fälle schreiben musst.

Auch hier ein Beispiel (Anwendung normal eher in C++, aber zur Demonstration auch geeignet):
PHP:
switch($command)
{
  case FILE_OPEN:  // Datei öffnen
    do_file_open();
    break;

  case FILE_SAVE_AS: // Datei speichern unter
    $current_filename = NULL;
    // fall through
  case FILE_SAVE: // Datei speichern
    do_file_save($current_filename);
    break;
}
Die Funktion do_file_save() wird bei beiden Befehlen aufgerufen. Nur wenn du "Speichern unter" wählst, wird vorher der Dateiname entfernt, damit du einen neuen auswählen kannst.
 
Okay, werd mir deinen Beitrag noch ein paar mal durchlesen.
Finde PHP ist eine interessante Sprache, aber als Anfänger der nur leichte HTML Kenntnisse hat am Anfang schwer, wird mir aber immer bisschen klarer die Sprache.

Nur wie gesagt Probleme habe ich hin und wieder schon besonders mit dem if und switch (das mir Dank "theHacker" klarer wurde) und in welcher Reihenfolge ich was hinschreibe, aber ich denke das bekomme ich nach und nach hin ;)

Mir kann hier ja gerne einer ne Aufgabe zum Programmieren geben (Übung) und ich versuche mich dran (BEDENKE ICH BIN NOCH BLUTIGER ANFÄNGER)
 
Finde PHP ist eine interessante Sprache, aber als Anfänger der nur leichte HTML Kenntnisse hat am Anfang schwer, wird mir aber immer bisschen klarer die Sprache.
PHP heißt nicht, dass man unbedingt mit HTML zusammenarbeiten muss.
Ich z.B. habe mir PHP auf meinem Kubuntu installiert, um bestimmte Sachen zu erledigen.
[...] und in welcher Reihenfolge ich was hinschreibe,[...]
Die Reihenfolge is ganz einfach: In der Reihenfolge, in der er was erledigen soll, schreibst du's auch hin.
Mir kann hier ja gerne einer ne Aufgabe zum Programmieren geben (Übung) und ich versuche mich dran (BEDENKE ICH BIN NOCH BLUTIGER ANFÄNGER)
Dann solltest du erstmal sagen, was du schon alles kannst. Du scheinst mir noch am Syntaxlernen zu sein ? D.h. such dir was, wo du zeigen muss, ob du mit Schleifen umgehen kannst.

Aufgabe 1: Erzeuge ein Schachbrett der Form:
Code:
[FONT=Courier New]-----------------------------------------
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
-----------------------------------------
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
-----------------------------------------
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
-----------------------------------------
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
-----------------------------------------
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
-----------------------------------------
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
-----------------------------------------
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
|    |XXXX|    |XXXX|    |XXXX|    |XXXX|
-----------------------------------------
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
|XXXX|    |XXXX|    |XXXX|    |XXXX|    |
-----------------------------------------[/FONT]
Du darfst maximal 6 Zeichen in einer echo-Anweisung ausgeben (sonst wärs ja langweilig). Rest erledigst du mit Schleifen.
Tips: Schach hat 8x8 Felder. die untere rechte Ecke ist immer weiß.

Für die anderen Aufgaben brauchst du Arrays. Voraussetzung also, du kannst schon mit Arrays umgehen.

Aufgabe 2: Schreibe eine Funktion, die ein zwei-dimensionales (erste Dimension: Zeilen, zweite Dimension: Spalten) Array formatiert als Matrix ausgibt.
Beispiel:
PHP:
$a = array(array(1, 2), array(3, 4));
print_matrix($a);
soll
Code:
[FONT=Courier New]---------
| 1 | 2 |
---------
| 3 | 4 |
---------[/FONT]
ausgeben. Is also die Erweiterung von Aufgabe 1.
Nochmal erweitern.

Aufgabe 3: Schreibe eine Funktion, die 2 n×n-Matrizen multipliziert.
PHP:
function matrix_mult($a, $b)
{
  // dein Code
}

$x = array(array(1, 2), array(3, 4));
$y = array(array(9, 8), array(7, 6));
print_matrix(matrix_mult($x, $y));
soll
Code:
[FONT=Courier New]-----------
| 23 | 20 |
-----------
| 55 | 48 |
-----------[/FONT]
ausgeben (wenn ich mich ned verrechnet hab :mrgreen:). Für die Ausgabe nutzt du die Funktion aus Aufgabe 2.

Probier mal, wie weit du kommst. Wahrscheinlich brauchst du strlen().
Du musst es ja nicht sofort lösen können, aber man probieren. Wichtig is, dass du postest, was du hast und woran es hapert.
 
Okay danke für die Aufgaben, sowas habe ich gesucht.
Ja bin noch am Syntax erlernen ;)

Ich fang heut Nachmittag mal an, und sobald ich es fertig habe stell ich es hier rein ;)

Eine Frage ;) was heißt "Kubuntu"
 
Aso okay, danke!
Also ich sitze grad an dem Schachbrett und grübel mir den Kopf heiß, is ne Herausforderung, aber das bekomme ich schon hin ;)

for($i==0;$i<8;$i++)
echo "------";
echo"</br>";

$felder_zeile= "| ";
$felder_zeile_2="|XXXXX";
$zeile=$felder_zeile . $felder_zeile_2;

Also ich weiß variablennamen sind NOCH ned so mein Ding wie ich sie am Betsen nenne, aber Problem eins, wenn ich die beiden STRINGVARIABLEN zusammenführen will, dann fehlen mir die Leerzeichen nach dem "|"
 
Zuletzt bearbeitet:
Zeile 1: Quark ;)
Du willst $i den Wert 0 zuweisen, also benutze den Zuweisungsoperator =.
== ist der Gleichheitsoperator.

Zeile 3: Lass das komische HTML weg. Du willst PHP lernen, also kümmer dich erstmal darum. Starte dein Script von der Konsole aus oder wenn dus im Browser starten willst, füg folgende Zeile ganz oben in dein Script ein:
PHP:
header("content-type: text/plain");
Damit schaltest du den Browser in den Textmodus um und dann kannst du ganz normal \n als Zeilenumbruch benutzen.

Variablennamen.... sollten eigentlich das aussagen, was sie tun/wofür sie da sind. Wenn du nur irgendwas zählen willst, besonders als Zählvariablen in Schleifen hat sich $i, $j, $k, $l ... eingebürgert.

Wenn du ein Leerzeichen brauchst, gib es einfach mit aus. Entweder in die Vars mit rein, wenn es rein gehört, oder eben zusätzlich.
Keiner verbietet dir sowas da
PHP:
echo $var1 . " " . $var2 . "und nochirgendwas\n";
edit:
Achso, da sind noch mehr Leerzeichen. Jetzt hab ichs kapiert.
Das Problem löst sich, wenn du in den Textmodus gehst bzw. von der Konsole aus arbeitest.
 
PHP:
echo $felder_zeile."      " .$felder_zeile_2;
Ausgabe im Browser: | |XXXXX
Hab ich da was falsch gemacht? Will ja die Leerzeichen

Danke mal für die echt guten Tipps, gibt doch noch Menschen die anderen helfen, gut zu wissen ;)
 
Browser in den Textmodus schalten ! In HTML gibt es nicht mehr als ein Leerzeichen hintereinander.

Und beim Posten von Code bitte nicht die Quote-Tags, sondern PHP- oder CODE-Tags benutzen. Deswegen hab ich deinen Beitrag vorhin nämlich nicht verstanden, weil das Forum zwischen den Quote-Tags natürlich auch alle Leerzeichen rausgeworfen hat.
 
Ohje was jetzt los, also sorry wenn ich nerv aber wenn ihn schalten will kommt das hier:

Warning: Cannot modify header information - headers already sent by (output started at D:\php_projekt\xampp\htdocs\php_projekt\TEST\schach.php:2) in D:\php_projekt\xampp\htdocs\php_projekt\TEST\schach.php on line 4
 
Also ich habs ganz oben eingefügt, aber die Fehlermeldung bleibt ;)

PHP:
<?php
header("content-type: text/plain");

for($i=0;$i<8;$i++)
    echo "------" ;
 
Das kann nicht sein, da der Header ja jetzt in Zeile 2 gesendet wird und die is sicherlich vor der Zeile 4 ;)
 
Zu Eclipse kann ich nix sagen. Ich mag das ned und hab entsprechend auch keine Erfahrungen damit.

Ich kann nur sagen: Mach dir das Leben ned unnötig schwer und lass den ganzen Quark mit Webserver und Browser erstmal weg. Starte dein PHP ganz normal von der Konsole aus.
 
Warning: Cannot modify header information - headers already sent by (output started at D:\php_projekt\xampp\htdocs\php_projekt\TEST\schach.php:2) in D:\php_projekt\xampp\htdocs\php_projekt\TEST\schach.php on line 2

So kommt sie!
 
Hast du über <?php noch etwas stehen oder Leerzeilen? Die müssen weg wenn du ein Header senden willst. (über die/den Header "unterhalten" sich der Browser und der Server, der Server kann aber nach einer Ausgabe keine weiteren Header senden... zb den Header den du jetzt senden willst sagt dem Browser das jetzt Text kommt und kein HTML)

Falls du den Fehler jetzt nicht los wirst kannst du auch erstmal echo '<pre>'; machen. Oder Firefox nehmen ;) Da kann man auch gleich in der Quellcode ansicht reloaden... ist manchmal ganz praktisch.