PHP .. der 1012te Anlauf es zu lernen ..
#1 PHP .. der 1012te Anlauf es zu lernen ..
Prolog
1982 habe ich meinen ersten Computer gekriegt.
Einen Sinclair ZX Spectrum. Ich vergöttere ihn auch heute noch.
48kb Ram, 256x192 Pixel bei 8 Farben Auflösung und trotzdem hat z.B. mit ELITE sogar ein Spiel mit 3D Vektor Grafik und 2048 Planeten inkl. Beschreibung und Preistabelle für ca. 20 Waren reingepasst. Toll!
Jedenfalls lernte ich am ZX Spectrum "BASIC" - die Programmiersprache.
Nun wird ja Basic von vielen als "Spaghetti-Code" bezeichnet.
Ich verstehe das nicht. Es war ein sehr aufgeräumtes und optisch schönes Bild, wenn man sich ein Programm-Listing angesehen hat.
Und auch ein
FOR N=1 TO 100: PRINT N: NEXT N
ist an Lesbarkeit und Klarheit/Transparenz doch wohl jedem
for ($n=1;$n<=100;$n++) echo $n;
1000x überlegen .. oder?
Ich mein .. ich schreib ja auch z.B:
"Sehr geehrte Damen und Herren, ich freue mich ..."
und nicht:
"seHR Geehr|-e \Damen und #erren, iCh ßreue /\/\|CH.." ...
(oki, hinkt etwas, der Vergleich .. aber in der Übertreibung liegt ja angeblich die Verständlichkeit ^^)
Schon meine Versuche "C" und "C++" zu lernen, brach ich nach anfänglich hoher Motivation ab, weil mir die Notation Brechreiz verursacht hat. Vor allem dieses blöde ";" am Ende einer Zeile. Für wie blöd halten die mich? Ein Computer merkt doch am <CR><LF> das eine Zeile zu Ende ist!
Warum werd ich schikaniert, erst noch extra ein ";" setzen zu müssen?
Nunja. Bei PHP ist´s ja mit dem Semikolon genauso.
Erst lernt man, das es JEDE Zeile abschliessen muss.
Wenn man dann nach etlichen Stunden des Bugfixings diese Lektion endlich drin hat, lernt man die AUSNAHMEN von dieser Regel .. (*$§&% Grumpf $%/&§%&)
Hauptteil
Heute habe ich mich wieder hingesetzt und was lernen wollen.
Nachdem ich mich nun bis auf Seite 77 des Buches "PHP & MYSQL", Verlag Markt und Technik, von Gisbert Damaschke vorgearbeitet habe, und ein wenig mit COOKIEs experimentieren wollte, kam ich zu folgendem Ergebnis:
(Achtung! Bin da noch am Ausprobieren!)
[php]<?
$n = $_COOKIE['NEU'];
if ($n="") echo "Sie sind NEU!";
if ($n="") $n = 1;
$n = $n + 1;
setcookie('NEU',$n);
$n = $n -1;
echo "Sie haben uns bereits $n x besucht<br><br>";
?>[/php]
Dieser Code wird, zumindest syntaktisch, fehlerfrei abgearbeitet.
Das die Funktion noch nicht wirklich da ist, ist ne andere Sache.
Ich teste ja noch...
Aber was ich nicht vertehe, ist das ich bei DIESEM Code
eine Fehlermeldung kriege!
[php]<?
$n = $_COOKIE['NEU'];
if ($n="") echo "Sie sind NEU!";
if ($n="") $n = 1;
echo "Sie haben uns bereits $n x besucht<br><br>";
$n = $n + 1;
setcookie('NEU',$n);
?>[/php]
Nämlich:
"Warning: Cannot modify header information - headers already sent by (output started at /home/www/web5/html/lern/cookie.php:5) in /home/www/web5/html/lern/cookie.php on line 7"
Sorry, aber was hat das mit HEADER Infos zu tun?
Ich hab doch nur die Variablenzuweisung HINTER statt VOR die "echo" Anweisung verschoben!?!?!?!?
Und da soll man NICHT wahnsinnig werden???
DISCLAIMER:
Bitte keine Flames, das man mit IF und ELSE und {} arbeiten könnte .. das hatte ich anfangs drin, und rausgeschmissen, um das als Fehlerquellen auszuschliessen.
Ich bin echt manchmal kurz davor, mein unschuldiges Notebook zu verprügeln!
Es mag ja sein, das ich alt werde, oder ein ewig Gestriger bin.
Aber irgendwie geht mir PHP tierisch auf den Sack!
Ich finde ein
LET N=N+1
einfach schöner als ein
$N++;
und ein
PRINT "Du besuchst uns nun das ";n;"te Mal"
viel übersichtlicher (vor allem: "Ei, wo ist denn die Variable? Und heisst die nun "n" oder "nte"?") als ein
echo "Du besuchst und nun das $nte Mal";
<i>(Fällt hier noch nicht so auf, aber sucht mal in langen PHP-Listings die Variablen in Echo-Anweisungen ... Viel Spass!)</i>
Mittlerweile bin ich derart frustriert, das ich Deutschlands DROGENKONSUM in Zusammenhang mit PHP bringe....
Wie soll so´nen Bullshit jemand ertragen der "nüchtern" ist?
Das geht doch gar nicht!
(Nein, ich will jetzt NICHT jeden PHP-Programmierer als Junkie abstempeln!!!)
ABER: Ich würde gerne wissen, ob ich da mit MEINER MEINUNG alleine da stehe, oder ob Andere das ähnlich empfinden...
Jedenfalls danke an alle fürs "zuhören" .. hat mal gut getan sich auszukotzen. Meinen Frustlevel kann man in gewisser Hinsicht auch an der Uhrzeit dieses Postings hier ablesen ... -GRUMPF-
ODER: Kann mir mal wer auf die Sprünge helfen und mir sagen: Hey, Mario (Blade), Du hast DA, DA und DA einfach DIE, DIE und DIE Denkfehler und wenn du daas SO, SO und SO machst, ist überall wieder Sonnenschein..
...
...
Ich bin zwar im Moment emotional MEILENWEIT davon entfernt zu versetehen WIESO PHP sich so breit durchsetzen konnte, das es nun überall (Stichwort LAMP) als Web-Server Standard gilt .. aber
ich seh doch auch 100fach im Web, DAS es funktioniert
und will so langsam mal meine 1001 Ideen die ich noch so fürs Web habe auch umsetzen können.
Zwar bin ich der Meinung, das man nicht immer ALLES alleine machen/können muss. Im Gegenteil. Ich tue mich eigentlich gern mit Leuten zusammen, so dass sich Kompetenzen ergänzen. Aber wenn man dann oft genug an Larifaris geraten ist, die mit dem Mundwerk alles können, aber in der Praxis nix ... oder an Leute die ja alles toll finden und überall mitmachen wollen, aber dann doch nie Zeit haben ...
Dann kommt der Moment, da man sich denkt:
ENDE
OK! ICH MUSS ES EBEN LERNEN, UM ES SELBST MACHEN ZU KÖNNEN[/b]
.. Und das ist der Grund, warum ich heute da wieder so lange vorgesehen hab.
Offene Fragen
Bin ich also nun zu alt oder zu blöd für PHP?
Bin ich zu eingefahren?
Gibts andere die meine Meinung teilen?
Oder findet Ihr PHP total geil und versteht ÜBERHAUPT nicht, was ich zu meckern hab?
Nehm ich die falschen Drogen? (Kein Alkohol, Kein Kaffee, Keine Zigaretten, Aber Lasagne, Fondor und RED BULL)
Bin jedenfalls kurz davor mein UHU aufzuschrauben und dran zu schnuppern .. vielleicht hilfts ja ...
-und ernsthaft-
Bin kurz davor wieder alles hinzuschmeissen und Schimpfbriefe an den PHP Erfinder zu schreiben .. aber irgendwie glaub ich, das mich persönlich das auch nicht weiterbringt ....
1982 habe ich meinen ersten Computer gekriegt.
Einen Sinclair ZX Spectrum. Ich vergöttere ihn auch heute noch.
48kb Ram, 256x192 Pixel bei 8 Farben Auflösung und trotzdem hat z.B. mit ELITE sogar ein Spiel mit 3D Vektor Grafik und 2048 Planeten inkl. Beschreibung und Preistabelle für ca. 20 Waren reingepasst. Toll!
Jedenfalls lernte ich am ZX Spectrum "BASIC" - die Programmiersprache.
Nun wird ja Basic von vielen als "Spaghetti-Code" bezeichnet.
Ich verstehe das nicht. Es war ein sehr aufgeräumtes und optisch schönes Bild, wenn man sich ein Programm-Listing angesehen hat.
Und auch ein
FOR N=1 TO 100: PRINT N: NEXT N
ist an Lesbarkeit und Klarheit/Transparenz doch wohl jedem
for ($n=1;$n<=100;$n++) echo $n;
1000x überlegen .. oder?
Ich mein .. ich schreib ja auch z.B:
"Sehr geehrte Damen und Herren, ich freue mich ..."
und nicht:
"seHR Geehr|-e \Damen und #erren, iCh ßreue /\/\|CH.." ...
(oki, hinkt etwas, der Vergleich .. aber in der Übertreibung liegt ja angeblich die Verständlichkeit ^^)
Schon meine Versuche "C" und "C++" zu lernen, brach ich nach anfänglich hoher Motivation ab, weil mir die Notation Brechreiz verursacht hat. Vor allem dieses blöde ";" am Ende einer Zeile. Für wie blöd halten die mich? Ein Computer merkt doch am <CR><LF> das eine Zeile zu Ende ist!
Warum werd ich schikaniert, erst noch extra ein ";" setzen zu müssen?
Nunja. Bei PHP ist´s ja mit dem Semikolon genauso.
Erst lernt man, das es JEDE Zeile abschliessen muss.
Wenn man dann nach etlichen Stunden des Bugfixings diese Lektion endlich drin hat, lernt man die AUSNAHMEN von dieser Regel .. (*$§&% Grumpf $%/&§%&)
Hauptteil
Heute habe ich mich wieder hingesetzt und was lernen wollen.
Nachdem ich mich nun bis auf Seite 77 des Buches "PHP & MYSQL", Verlag Markt und Technik, von Gisbert Damaschke vorgearbeitet habe, und ein wenig mit COOKIEs experimentieren wollte, kam ich zu folgendem Ergebnis:
(Achtung! Bin da noch am Ausprobieren!)
[php]<?
$n = $_COOKIE['NEU'];
if ($n="") echo "Sie sind NEU!";
if ($n="") $n = 1;
$n = $n + 1;
setcookie('NEU',$n);
$n = $n -1;
echo "Sie haben uns bereits $n x besucht<br><br>";
?>[/php]
Dieser Code wird, zumindest syntaktisch, fehlerfrei abgearbeitet.
Das die Funktion noch nicht wirklich da ist, ist ne andere Sache.
Ich teste ja noch...
Aber was ich nicht vertehe, ist das ich bei DIESEM Code
eine Fehlermeldung kriege!
[php]<?
$n = $_COOKIE['NEU'];
if ($n="") echo "Sie sind NEU!";
if ($n="") $n = 1;
echo "Sie haben uns bereits $n x besucht<br><br>";
$n = $n + 1;
setcookie('NEU',$n);
?>[/php]
Nämlich:
"Warning: Cannot modify header information - headers already sent by (output started at /home/www/web5/html/lern/cookie.php:5) in /home/www/web5/html/lern/cookie.php on line 7"
Sorry, aber was hat das mit HEADER Infos zu tun?
Ich hab doch nur die Variablenzuweisung HINTER statt VOR die "echo" Anweisung verschoben!?!?!?!?
Und da soll man NICHT wahnsinnig werden???
DISCLAIMER:
Bitte keine Flames, das man mit IF und ELSE und {} arbeiten könnte .. das hatte ich anfangs drin, und rausgeschmissen, um das als Fehlerquellen auszuschliessen.
Ich bin echt manchmal kurz davor, mein unschuldiges Notebook zu verprügeln!
Es mag ja sein, das ich alt werde, oder ein ewig Gestriger bin.
Aber irgendwie geht mir PHP tierisch auf den Sack!
Ich finde ein
LET N=N+1
einfach schöner als ein
$N++;
und ein
PRINT "Du besuchst uns nun das ";n;"te Mal"
viel übersichtlicher (vor allem: "Ei, wo ist denn die Variable? Und heisst die nun "n" oder "nte"?") als ein
echo "Du besuchst und nun das $nte Mal";
<i>(Fällt hier noch nicht so auf, aber sucht mal in langen PHP-Listings die Variablen in Echo-Anweisungen ... Viel Spass!)</i>
Mittlerweile bin ich derart frustriert, das ich Deutschlands DROGENKONSUM in Zusammenhang mit PHP bringe....
Wie soll so´nen Bullshit jemand ertragen der "nüchtern" ist?
Das geht doch gar nicht!
(Nein, ich will jetzt NICHT jeden PHP-Programmierer als Junkie abstempeln!!!)
ABER: Ich würde gerne wissen, ob ich da mit MEINER MEINUNG alleine da stehe, oder ob Andere das ähnlich empfinden...
Jedenfalls danke an alle fürs "zuhören" .. hat mal gut getan sich auszukotzen. Meinen Frustlevel kann man in gewisser Hinsicht auch an der Uhrzeit dieses Postings hier ablesen ... -GRUMPF-
ODER: Kann mir mal wer auf die Sprünge helfen und mir sagen: Hey, Mario (Blade), Du hast DA, DA und DA einfach DIE, DIE und DIE Denkfehler und wenn du daas SO, SO und SO machst, ist überall wieder Sonnenschein..
...
...
Ich bin zwar im Moment emotional MEILENWEIT davon entfernt zu versetehen WIESO PHP sich so breit durchsetzen konnte, das es nun überall (Stichwort LAMP) als Web-Server Standard gilt .. aber
ich seh doch auch 100fach im Web, DAS es funktioniert
und will so langsam mal meine 1001 Ideen die ich noch so fürs Web habe auch umsetzen können.
Zwar bin ich der Meinung, das man nicht immer ALLES alleine machen/können muss. Im Gegenteil. Ich tue mich eigentlich gern mit Leuten zusammen, so dass sich Kompetenzen ergänzen. Aber wenn man dann oft genug an Larifaris geraten ist, die mit dem Mundwerk alles können, aber in der Praxis nix ... oder an Leute die ja alles toll finden und überall mitmachen wollen, aber dann doch nie Zeit haben ...
Dann kommt der Moment, da man sich denkt:
ENDE
OK! ICH MUSS ES EBEN LERNEN, UM ES SELBST MACHEN ZU KÖNNEN[/b]
.. Und das ist der Grund, warum ich heute da wieder so lange vorgesehen hab.
Offene Fragen
Bin ich also nun zu alt oder zu blöd für PHP?
Bin ich zu eingefahren?
Gibts andere die meine Meinung teilen?
Oder findet Ihr PHP total geil und versteht ÜBERHAUPT nicht, was ich zu meckern hab?
Nehm ich die falschen Drogen? (Kein Alkohol, Kein Kaffee, Keine Zigaretten, Aber Lasagne, Fondor und RED BULL)
Bin jedenfalls kurz davor mein UHU aufzuschrauben und dran zu schnuppern .. vielleicht hilfts ja ...
-und ernsthaft-
Bin kurz davor wieder alles hinzuschmeissen und Schimpfbriefe an den PHP Erfinder zu schreiben .. aber irgendwie glaub ich, das mich persönlich das auch nicht weiterbringt ....
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
#2
Bei mir bekomme ich zwar diese Meldung nicht 
Aber einen Tipp haette ich auf alle Faelle:
Wenn du dir den Quelltext im Browser von deiner generierten Seite ansieht, steht da nichts von <html> etc. Normal macht man bei einer HTML Seite immer ordentliche Tags rein:
<html>
<body>
bla bla
</body>
</html>
Deine Fehlermeldung hat irgendetwas damit zu tun.
Aber einen Tipp haette ich auf alle Faelle:
Wenn du dir den Quelltext im Browser von deiner generierten Seite ansieht, steht da nichts von <html> etc. Normal macht man bei einer HTML Seite immer ordentliche Tags rein:
<html>
<body>
bla bla
</body>
</html>
Deine Fehlermeldung hat irgendetwas damit zu tun.
- tracer
- Operator

- Beiträge: 63851
- Registriert: 18.08.2004 18:50:03
- Wohnort: Kollmar
- Has thanked: 5 times
- Been thanked: 4 times
- Kontaktdaten:
#3
Naja, Syntax von Programmiersprachen ist geschmacksache, ich mag php (und alle mit C-style Syntax sehr gerne, BASIC finde ich fast so grausam wie ADA).
Das mit den Headern hat mit den Basics von http zu tun
Entweder den header (also auch cookies) VOR der ersten Zeile von generiertem Output, oder mit output buffering arbeiten
Das mit den Headern hat mit den Basics von http zu tun
Entweder den header (also auch cookies) VOR der ersten Zeile von generiertem Output, oder mit output buffering arbeiten
#4
Hi !
Ich denk mal dass es an dem SetCookie liegt, ist zwar schon länger her, als ich mich mit PHP befasst habe, aber SetCookie muss gesetzt werden, bevor irgendeine Ausgabe (hier mit echo) stattfindet.
Viele Grüße,
Marc
Ich denk mal dass es an dem SetCookie liegt, ist zwar schon länger her, als ich mich mit PHP befasst habe, aber SetCookie muss gesetzt werden, bevor irgendeine Ausgabe (hier mit echo) stattfindet.
Viele Grüße,
Marc
#5
Tracer und Sprudelnd haben Recht.
Die initialisierung mit den Cookies muss ganz am Anfang vom script stehen, bevor anderer code kommt. (um es mal grob aus zu drücken)
Wenn du nach der Funktion für die cookies in google suchst, müsste das eigentlich bei einer guten Seite auch dabei stehen
Ich hatte selbst das Problem, dass ich diesen Fehler angezeigt bekommen hatte, aber nach durchlesen von der Funktionsbeschreibung war er ratz fatz weg
Ich hab jetzt schon mit mehreren Programmiersprachen gearbeitet (Java, C(++), Basic, Delphi, PHP,...) und ich muss sagen, dass einem die andren Sprachen teilweise schon komisch vorkommen, wenn man als aller erstes eine etwas unähnlichere Programmiersprache gemacht hatte (ich hab mit Delphi angefangen, in der Schule)
Die Umstellung dann auf PHP ging aber recht gut, und danach hatte ich auch keine Probleme mit dem Syntax der andren Sprachen.
dein Beispiel mit der For-Schleife ist gut.
In Delphi kenne ich es zb for i=1 to 19 do begin (begin is wie bei PHP die geschweifte klammer auf { )
Aber da die For Schleife überall mit For anfängt *g*, brauch man ja nur kurz den Syntax angucken und schon hat man das.
Die initialisierung mit den Cookies muss ganz am Anfang vom script stehen, bevor anderer code kommt. (um es mal grob aus zu drücken)
Wenn du nach der Funktion für die cookies in google suchst, müsste das eigentlich bei einer guten Seite auch dabei stehen
Ich hatte selbst das Problem, dass ich diesen Fehler angezeigt bekommen hatte, aber nach durchlesen von der Funktionsbeschreibung war er ratz fatz weg
Ich hab jetzt schon mit mehreren Programmiersprachen gearbeitet (Java, C(++), Basic, Delphi, PHP,...) und ich muss sagen, dass einem die andren Sprachen teilweise schon komisch vorkommen, wenn man als aller erstes eine etwas unähnlichere Programmiersprache gemacht hatte (ich hab mit Delphi angefangen, in der Schule)
Die Umstellung dann auf PHP ging aber recht gut, und danach hatte ich auch keine Probleme mit dem Syntax der andren Sprachen.
dein Beispiel mit der For-Schleife ist gut.
In Delphi kenne ich es zb for i=1 to 19 do begin (begin is wie bei PHP die geschweifte klammer auf { )
Aber da die For Schleife überall mit For anfängt *g*, brauch man ja nur kurz den Syntax angucken und schon hat man das.
MfG Dominik
#6
Ah .. oki .. stimmt .. <html> etc ... hatte ich tatsächlich erstmal weggelassen....
Ich werds gleich mal "mit" ausprobieren.
Aber das man (set)Cookies nicht einfach "wild" im Programmcode verteilen kann, versteh ich nicht. Zumindest schränkt mich das dann auch wieder total ein.
Denn wie im Beispiel sieht man ja das ich "$n" +1 setze und dann extra für die AUSGABE per Echo den Werte "$n" erst wieder minus 1 nehme, damit die Ausgabe stimmt.
Mag sein das mir noch die Programmiererfahrung fehlt (bzw. ist ganz sicher so).
Aber DAS ist es was mich nervt.-> Wenn der Computer mir ständig sagt: Ne, hier darfst du aber nicht abbiegen. Und hier nur Tempo 30.
Basic (und Z80-Assembler) fand ich so geil, weil die Sau (der Compi) einfach gemacht hat, was man ihm gesagt hat.
Jedenfalls schonmal dickes THX fürs "ausheulen lassen" und die bestimmt sinnvollen Tips!
Probier ich gleich aus .. hab nur dank PHP bis eben durchgepennt und muss nun schnell noch mit meiner Frau wohinfahren ..
EDIT:
Aber .. so´n Quatsch! Nen Cookie ist doch auch "nur" ne Variablen-Zuweisung .. Das man also nicht im fortlaufenden Code immer mal wieder wo es sich ergibt nen Cookie rausschmeissen kann find ich doof. Das grenzt fast schon an Schikane.
Ich werds gleich mal "mit" ausprobieren.
Aber das man (set)Cookies nicht einfach "wild" im Programmcode verteilen kann, versteh ich nicht. Zumindest schränkt mich das dann auch wieder total ein.
Denn wie im Beispiel sieht man ja das ich "$n" +1 setze und dann extra für die AUSGABE per Echo den Werte "$n" erst wieder minus 1 nehme, damit die Ausgabe stimmt.
Mag sein das mir noch die Programmiererfahrung fehlt (bzw. ist ganz sicher so).
Aber DAS ist es was mich nervt.-> Wenn der Computer mir ständig sagt: Ne, hier darfst du aber nicht abbiegen. Und hier nur Tempo 30.
Basic (und Z80-Assembler) fand ich so geil, weil die Sau (der Compi) einfach gemacht hat, was man ihm gesagt hat.
Jedenfalls schonmal dickes THX fürs "ausheulen lassen" und die bestimmt sinnvollen Tips!
Probier ich gleich aus .. hab nur dank PHP bis eben durchgepennt und muss nun schnell noch mit meiner Frau wohinfahren ..
EDIT:
Aber .. so´n Quatsch! Nen Cookie ist doch auch "nur" ne Variablen-Zuweisung .. Das man also nicht im fortlaufenden Code immer mal wieder wo es sich ergibt nen Cookie rausschmeissen kann find ich doof. Das grenzt fast schon an Schikane.
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
#7
Wenn eine Html Datei vom Server zum Browser übertragen wird besteht diese aus HTTP-Header und der HTML-Datei. Der Header wird IMMER zuerst übertragen und dann die HTML-Datei. Ein Cookie ist Teil des Headers und MUSS somit am Anfang übertragen werdenBlade hat geschrieben: Aber .. so´n Quatsch! Nen Cookie ist doch auch "nur" ne Variablen-Zuweisung .. Das man also nicht im fortlaufenden Code immer mal wieder wo es sich ergibt nen Cookie rausschmeissen kann find ich doof. Das grenzt fast schon an Schikane.
HTTP = Ist das Übertragungsprotokoll mit Header wo drin auch das Cookie steckt.
HTML = Sind die Nutzdaten
-
Aeroworker
#8
Moin Mario, Du hast mein VOLLSTES Verständnis.....
Ich habe damals, begonnen mit dem C64, Basicprogramme geschrieben die ganz genau das gemacht haben was ICH wollte, Teilweise mit 5 oder 6fach verschachtelten Schleifen (For-Next, Do-While, etc). (Schon gut Jungs, Schei* Stil. HAT ABER IMMER FUNKTIONIERT). Weil ich habe geschrieben was ich mir dachte, und wenn dann mal wieder eine Variable nötig war habe ich eben in damals üblicher Form "XYZ = 13-W" eine neu Variable XYZ definiert, dort wo ich sie gerade bracuhte bzw sie mir gerade einfiel.
Als ich dann bemerkte das Basic doch etwas sehr viel langsamer wurde als andere Sprachen wollte ich dann auch mal C und C++ probieren, mir den ganzen Ramsch gekauft, und angefangen uralte Basic Listings umzusetzen versucht.
Nach dem 135mal zum Listingsanfang springen um wieder eine neue Variable zu definieren die in C++ ja alle ganz am Anfang definiert werden sollte habe ich dann aufgegeben. Zumal ich fand Basic konnte man noch lesen und während des lesen verstehen was der jeweilige Befehl macht.
Heute muss man ja für jede Programmiersprache erstmal einen Vokabel und Grammatikkurs in der jeweilige Sprache machen um überhaupt rauszukriegen was manche Befehle überhaupt machen.
Gruß,
Holger
Ich habe damals, begonnen mit dem C64, Basicprogramme geschrieben die ganz genau das gemacht haben was ICH wollte, Teilweise mit 5 oder 6fach verschachtelten Schleifen (For-Next, Do-While, etc). (Schon gut Jungs, Schei* Stil. HAT ABER IMMER FUNKTIONIERT). Weil ich habe geschrieben was ich mir dachte, und wenn dann mal wieder eine Variable nötig war habe ich eben in damals üblicher Form "XYZ = 13-W" eine neu Variable XYZ definiert, dort wo ich sie gerade bracuhte bzw sie mir gerade einfiel.
Als ich dann bemerkte das Basic doch etwas sehr viel langsamer wurde als andere Sprachen wollte ich dann auch mal C und C++ probieren, mir den ganzen Ramsch gekauft, und angefangen uralte Basic Listings umzusetzen versucht.
Nach dem 135mal zum Listingsanfang springen um wieder eine neue Variable zu definieren die in C++ ja alle ganz am Anfang definiert werden sollte habe ich dann aufgegeben. Zumal ich fand Basic konnte man noch lesen und während des lesen verstehen was der jeweilige Befehl macht.
Heute muss man ja für jede Programmiersprache erstmal einen Vokabel und Grammatikkurs in der jeweilige Sprache machen um überhaupt rauszukriegen was manche Befehle überhaupt machen.
Gruß,
Holger
#9
Hi,
also zu der Einführung .... *lol* .... aber das geht glaub fast jedem so mit neuen Programmiersprachen - besonders wenn die ganz anders als die gewohnten ist. .... so flucht erstmal jeder C/C++ Programmierer über Java ... und genauso umgekehrt.
Aber eventuell ist ja Perl was für dich - da muß man sich nicht unbedingt an eine Syntax halten, weil Perl mehrere versteht - allerdings ein ";" muß auch sein.
If(dieses=jenes || das=solches || irgendwas=irgendwer || haben=sollen || 0=1 )
... naja, wenn also das If über die Bildschirmseite hinaus geht, ist es in mehreren Zeilen besser zu lesen:
If( dieses=jenes ||
das=solches ||
irgendwas=irgendwer ||
haben=sollen ||
0=1 )
Manchmal kannst du dir im Browser eine HTML Seite anschauen, manchmal lädts du dir was runter - es kommt ein Download-Fenster und manchmal wird einfach dynamisch eine Grafik generiert - bestes Beispiel oben der Spelle-Counter.
Damit der Browser weiß, ob er da jetzt HTML-Daten oder z.B. Daten für eine Grafik bekommt, mußt du ihm das vorher sagen - also eben im Header, der immer zu Anfang geschickt wird. Einmal sagst du im text/html und einmal image/jpeg oder so. Dann weiß der Browser was er mit den Daten anfangen soll und gut. Und das geht auch nur einmal pro Übertragung. Somit kannst du nicht erst text/html senden und im gleichen Output dann nen neuen Header mit image/jpeg. (der würde nicht beachtet werden bzw. eventuell zu einer Fehlermeldung führen)
Und so ist es auch mit Cookies - die gehören nunmal in den Header, weil es so festgelegt ist bzw. der Browser diese sonst nicht versteht. Cookies sind ja nicht nur eine Variable, sondern etwas, was auch übertragen werden soll und somit muß das an der Stelle übertragen werden, wo es laut Protokoll festgelegt ist.
z.B. Grafik-Dateien etc. sind ja auch nach einem bestimmten Schema aufgebaut - erstes bis x'tes Bit stehen diese Informationen, x'tes bis y'tes Bild genau die anderen etc. ... und wenn du dich da auch nicht an die Reihenfolge halten würdest, würdest du nur Müll zu sehen bekommen.
oder HTML Dateien.
Oben gehört ein Head hin und in dem Head steht das Title-Tag ... wenn du jetzt das Title-Tag irgendwo in den Body-Tag schreiben würdest, würde der Titel auch nicht angezeigt werden. (ok, hab ich auch noch nie ausprobiert
)
... genauso ist das mit den Cookies
MFG,
speedy
also zu der Einführung .... *lol* .... aber das geht glaub fast jedem so mit neuen Programmiersprachen - besonders wenn die ganz anders als die gewohnten ist. .... so flucht erstmal jeder C/C++ Programmierer über Java ... und genauso umgekehrt.
Aber eventuell ist ja Perl was für dich - da muß man sich nicht unbedingt an eine Syntax halten, weil Perl mehrere versteht - allerdings ein ";" muß auch sein.
Tja, ein Ende der Zeile muß nicht unbedingt Befehls-Ende sein - z.B. ist ein langes If in mehreren Zeilen einfach übersichtlicher.Erst lernt man, das es JEDE Zeile abschliessen muss.
Wenn man dann nach etlichen Stunden des Bugfixings diese Lektion endlich drin hat, lernt man die AUSNAHMEN von dieser Regel .. (*$§&% Grumpf $%/&§%&)
If(dieses=jenes || das=solches || irgendwas=irgendwer || haben=sollen || 0=1 )
... naja, wenn also das If über die Bildschirmseite hinaus geht, ist es in mehreren Zeilen besser zu lesen:
If( dieses=jenes ||
das=solches ||
irgendwas=irgendwer ||
haben=sollen ||
0=1 )
Das mit den Headern kann man vielleicht auch noch ein wenig ausweiten.besteht diese aus HTTP-Header
Manchmal kannst du dir im Browser eine HTML Seite anschauen, manchmal lädts du dir was runter - es kommt ein Download-Fenster und manchmal wird einfach dynamisch eine Grafik generiert - bestes Beispiel oben der Spelle-Counter.
Damit der Browser weiß, ob er da jetzt HTML-Daten oder z.B. Daten für eine Grafik bekommt, mußt du ihm das vorher sagen - also eben im Header, der immer zu Anfang geschickt wird. Einmal sagst du im text/html und einmal image/jpeg oder so. Dann weiß der Browser was er mit den Daten anfangen soll und gut. Und das geht auch nur einmal pro Übertragung. Somit kannst du nicht erst text/html senden und im gleichen Output dann nen neuen Header mit image/jpeg. (der würde nicht beachtet werden bzw. eventuell zu einer Fehlermeldung führen)
Und so ist es auch mit Cookies - die gehören nunmal in den Header, weil es so festgelegt ist bzw. der Browser diese sonst nicht versteht. Cookies sind ja nicht nur eine Variable, sondern etwas, was auch übertragen werden soll und somit muß das an der Stelle übertragen werden, wo es laut Protokoll festgelegt ist.
z.B. Grafik-Dateien etc. sind ja auch nach einem bestimmten Schema aufgebaut - erstes bis x'tes Bit stehen diese Informationen, x'tes bis y'tes Bild genau die anderen etc. ... und wenn du dich da auch nicht an die Reihenfolge halten würdest, würdest du nur Müll zu sehen bekommen.
oder HTML Dateien.
Oben gehört ein Head hin und in dem Head steht das Title-Tag ... wenn du jetzt das Title-Tag irgendwo in den Body-Tag schreiben würdest, würde der Titel auch nicht angezeigt werden. (ok, hab ich auch noch nie ausprobiert
... genauso ist das mit den Cookies
MFG,
speedy
#10
@Kaiko
<kleinlaut>achso...</kleinlaut>
.. aber andererseits .. PHP schickt die Seite ja sowieso komplett "interpretiert" per HTML an den Browser.
Will sagen:
User klickt,
PHP wird aufgerufen Seite (Script) aufzurufen.
PHP-Interpreter ackert die Seite durch und schickt doch
erst, wenn er komplett fertig ist, alles rüber ... oder?
Will sagen: Ob PHP den Cookie-Code in den Header setzt, während PHP grade Zeile 10 abarbeitet, oder ob er es bei Zeile 5551234 in den Header setzt .. ist (mir) doch eigentlich wurscht...
Oki .. egal eigentlich ... ändert ja eh nix.
Aber schonmal gut das ich die Info habe.
Denn das man setcookie nicht NACH einer echo Anweisung setzen darf, hab ich bisher weder in meinen 5 Büchern, noch im Web erfahren.
<kleinlaut>achso...</kleinlaut>
.. aber andererseits .. PHP schickt die Seite ja sowieso komplett "interpretiert" per HTML an den Browser.
Will sagen:
User klickt,
PHP wird aufgerufen Seite (Script) aufzurufen.
PHP-Interpreter ackert die Seite durch und schickt doch
erst, wenn er komplett fertig ist, alles rüber ... oder?
Will sagen: Ob PHP den Cookie-Code in den Header setzt, während PHP grade Zeile 10 abarbeitet, oder ob er es bei Zeile 5551234 in den Header setzt .. ist (mir) doch eigentlich wurscht...
Oki .. egal eigentlich ... ändert ja eh nix.
Aber schonmal gut das ich die Info habe.
Denn das man setcookie nicht NACH einer echo Anweisung setzen darf, hab ich bisher weder in meinen 5 Büchern, noch im Web erfahren.
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
#11
*g* ... erhöht aber die Lesbarkeit, wenn man weiß, wo man die Definition der Variablen findet und nicht erst lange irgendwo im Code danach suchen mußt. Du könntest die natürlich auch irgendwo mitten im Code definieren - davor ist sie dann aber natürlich nicht gültig.Nach dem 135mal zum Listingsanfang springen um wieder eine neue Variable zu definieren die in C++ ja alle ganz am Anfang definiert werden sollte habe ich dann aufgegeben.
Ich glaub dir würde Perl auch gefallen - da muß man überhaupt nichts definieren.
Heute muss man ja für jede Programmiersprache erstmal einen Vokabel und Grammatikkurs in der jeweilige Sprache machen um überhaupt rauszukriegen was manche Befehle überhaupt machen.
Naja - bei Basic mußtest du dir auch erstmal die Doku durchlesen um zu wissen, was die Befehle machen. .... aber wenn du erstmal eine Sprache drauf hast, dann tust du dich mit den anderen leichter, weil die meisten modernen Programmiersprachen ähnlich sind. Ich habe mit Borland Pascal angefangen und der Hilfe dazu. ... dann im Studium konnte ich mein Wissen darüber verwenden, um zu kapieren wie C++ funktioniert - hab mir dafür dann immer erstmal parallelen gezogen - das in Pascal ist das in C++ etc. ... und jetzt überlege ich dann bei neuen Sprachen immer nur, ob ich in einer anderen Programmiersprache einen Befehl kenne und schaue, ob der in der neuen ähnlich heißt - aber ich weiß auf jedenfall, daß es mit Sicherheit in der neuen auch irgendwie geht.
MFG,
speedy
#12
@Aeroworker
*freu* Brüder im Geiste ^^
Ja, verschachtelte For-Next/Do Loops fand ich auch immer Klasse.
In Mathe hatte ich immer nen Riesen Vorteil, wenn ich meinen kleinen Sharp Taschen-PC 1252xyz oder so dabei haben durfte .. weil der auch Basic konnte ^^
Das mit den Variablen an den Anfang setzen ist sogar noch der Punkt der mich am wenigsten stört. Klar. Andersrum gefällts mir auch besser.
@Speedy
Den Trend, eine "neue" (Programmier)Sprache zu lernen, indem ich zuerst mit meiner "Muttersprache" vergleiche, hab ich ja auch.
Nur von Pascal nach C etc ist der Weg "kürzer" als von Basic. Glaub ich jedenfalls.
@all
So ..
Jetzt hab ich´s getestet.
Also am fehlenden <html> Rahmen hats nicht gelegen.
Sondern tatsächlich an der Position von setcookie.
Aber mein nächstes Waterloo ist nicht weit entfernt gewesen.
Hab jetzt mal cookie2.php angefangen, weil cookie.php grade unerklärlich "spinnt".
cookie2.php spinnt genauso.
http://www.yona.de/lern/cookie2.php
wer mal gucken will.
[php]<html>
<body>
<?
$number = $_COOKIE['besuche'];
if (!isset($number)) setcookie ("besuche","1");
echo "Sie haben uns bereits $number x besucht<br><br>";
?>
</body>
</html>[/php]
Antwort:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/web5/html/lern/cookie2.php:3) in /home/www/web5/html/lern/cookie2.php on line 5
Sie haben uns bereits x besucht
Dabei ist dieses "Grundgerüst" 1:1 aus dem Buch abgetippt.
Nur die Variablennamen und Cookienamen hab ich geändert.
Und als Cookie absichtlich ein "neues" genutzt..
...
Hab PHP 4.4.0 auf dem Server ...
...
Aber keinen blassen Schimmer, warum der jetzt schon wieder meckert.
Das echo ist doch HINTER dem setcookie
*schwindelig-werd-und-tot-umfall*
Ja, verschachtelte For-Next/Do Loops fand ich auch immer Klasse.
In Mathe hatte ich immer nen Riesen Vorteil, wenn ich meinen kleinen Sharp Taschen-PC 1252xyz oder so dabei haben durfte .. weil der auch Basic konnte ^^
Das mit den Variablen an den Anfang setzen ist sogar noch der Punkt der mich am wenigsten stört. Klar. Andersrum gefällts mir auch besser.
@Speedy
Den Trend, eine "neue" (Programmier)Sprache zu lernen, indem ich zuerst mit meiner "Muttersprache" vergleiche, hab ich ja auch.
Nur von Pascal nach C etc ist der Weg "kürzer" als von Basic. Glaub ich jedenfalls.
@all
So ..
Jetzt hab ich´s getestet.
Also am fehlenden <html> Rahmen hats nicht gelegen.
Sondern tatsächlich an der Position von setcookie.
Aber mein nächstes Waterloo ist nicht weit entfernt gewesen.
Hab jetzt mal cookie2.php angefangen, weil cookie.php grade unerklärlich "spinnt".
cookie2.php spinnt genauso.
http://www.yona.de/lern/cookie2.php
wer mal gucken will.
[php]<html>
<body>
<?
$number = $_COOKIE['besuche'];
if (!isset($number)) setcookie ("besuche","1");
echo "Sie haben uns bereits $number x besucht<br><br>";
?>
</body>
</html>[/php]
Antwort:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/web5/html/lern/cookie2.php:3) in /home/www/web5/html/lern/cookie2.php on line 5
Sie haben uns bereits x besucht
Dabei ist dieses "Grundgerüst" 1:1 aus dem Buch abgetippt.
Nur die Variablennamen und Cookienamen hab ich geändert.
Und als Cookie absichtlich ein "neues" genutzt..
...
Hab PHP 4.4.0 auf dem Server ...
...
Aber keinen blassen Schimmer, warum der jetzt schon wieder meckert.
Das echo ist doch HINTER dem setcookie
*schwindelig-werd-und-tot-umfall*
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
#13
Hi,
ich weiß es zwar nicht ob es daran liegt, weil ich mich wenig mit PHP beschäftige, aber weiter oben stand ja, daß das Setzen des Cookies vor der ersten Ausgabe sein muß ... hier kommt bei dir schon das html und das body-Tag vorher als Ausgabe - aber Header bedeutet, daß er auch vor dem HTML-Tag kommt. Außerdem sehe ich gerade, daß am Schluß ein "?>"zu viel ist - vielleicht liegt es ja daran.
MFG,
speedy
ich weiß es zwar nicht ob es daran liegt, weil ich mich wenig mit PHP beschäftige, aber weiter oben stand ja, daß das Setzen des Cookies vor der ersten Ausgabe sein muß ... hier kommt bei dir schon das html und das body-Tag vorher als Ausgabe - aber Header bedeutet, daß er auch vor dem HTML-Tag kommt. Außerdem sehe ich gerade, daß am Schluß ein "?>"zu viel ist - vielleicht liegt es ja daran.
MFG,
speedy
#14
stimmt. Das mit dem Cookie MUSS nach ganz oben vor den <HTML> Tag.
Genau das sagt auch die Fehlermeldung an.
Genau das sagt auch die Fehlermeldung an.
