Alle PHP Variable nach REFRESH/RELOAD weg, selbst nach Speicherung in extener Datei, warum?

7 Antworten

Prüf ob post submit gesetzt und deine datenvariable überhaupt daten hat. Nur dann soll die textdatei beschrieben werden. Du kannst froh sein das das überhaupt funktioniert, manche programmsprachen hätten nicht akteptiert das du versuchst nen undefiniertes objekt mit wert null in nen stream zu packen und das in ne datei schreiben zu lassen. Und äh ganz ehrlich warum unbedingt mit textdatei? Wenns was Größeres werden soll oder komplexeres wirst du damit nicht weit kommen

@FlugzeugAUT: bitte lass es generell!

Habe mir alle Antworten hier durchgelesen, speziell Deine - daraus sieht man dass du von 'tuten & blasen' keine Ahnung hast!

Alleine schon die dumme Frage:

"eine Frage jedoch wie kommt man auf a+"

Schon mal was von lesen, lernen (und suchen) gehört? Es soll so etwas wie ein Internet geben, dafür soll es auch Suchmaschinen geben ... denn wenn man sowas verwendet, komtm man über kurz oder lang hierher:

http://nl1.php.net/manual/de/function.fopen.php

Und dann noch etwas: es gibt mittlerweile soviele grottenschlechte Anwendungen dass einem übel wird. Aber fast noch mehr gibt es welche die ausser unsicher nur unsicher sind!

Mit dem was du hier vorhast, ist dein Server binnen 5 Sekunden vollkommen platt.

Also bitte, tu der Menschheit einen Gefallen: lass es - oder lern zuerst wie man Programme schreibt und vor allem sichere!


FlugzeugAUT 
Beitragsersteller
 22.12.2016, 14:45

Weiß zwar nicht welcher Deutschlehrer dir deine provokante Antwortschreibweise gelernt hat, aber sie bringt mich leider nicht weiter!

Danke ich weiß, dass man zuerst lernen sollte, doch leider lern ich immer Sachen, die ich dann nicht anwenden kann, weil das Anwendungen sind (besonders in Javascript) die nicht wirklich denen eines wirklichen Programmes entsprechen (somit vergesse zumindest ich das wieder). Aber willst du was wissen zumindest bemühe ich mich und will mich verbessern, nach dem Grundsatz Learning By Doing falls du das kennst. Das bisherige Durchlesen von Sachbüchern, wie ja bereits erwähnt, besonders in Java und Javascript hat mir leider noch nicht gesagt wie ich was wann und wo anwenden kann.

Anstatt also hier deine Zeit verschwendet zu haben indem du mir etwas von "dumme Frage" schreibst, was eigentlich ein nett gemeintes Kompliment war (ja ich kenne Suchmaschinen, ich bin aber wie du ja weißt ein Anfänger und kann komplizierte Beispielcodes noch nicht umschreiben) oder mir gleich eine Menschheitsgefährdung in Zeiten des Terrors und der Anspannung vorwirfst, auch ruhig konstruktive Ansätze geben wie ich mich dahingehend verbessern kann, dass auch du von einem sicheren und kompetenten Code ausgehen darfst! Da dein Text aber zu 90% aus Provokationen besteht, gehe ich hier eher nicht davon aus, das mir hierzu Hilfen gegegen werden, somit bin ich jetzt soweit wie ich vorher war, nämlich am Anfang des Ganzen!

Ich würde dich daher bitten das nächste mal auf eine Antwort zu verzichten oder mir Lösungsansätze liefern um mein jetziges 0 Wissen aufzubessern, damit ich auch in Zukunft Fragen stellen kann ohne gleich Angst zu haben vor Antworten, deren Inhalt daraus besteht mich fertig zu machen!

0
osworx  22.12.2016, 17:35
@FlugzeugAUT

Schön wenn du dir das nächste Mal vorher überlegst bevor wieder dumme Fragen gestellt werden, denn des Lesens bist du ja mächtig.

Aber trotzdem noch ein Tipp: nimm einfach ein bestehendes Programm (auch hier wieder > Suchmaschine bemühen >>
https://goo.gl/Mbsi3U ) und studier den Code daraus/darin.

0

also gut, auch wenn ich dein problem nicht ganz verstanden habe versuche ich es mal:
1.) wenn du ein formular abschickst, wirst du auf eine neue seite geleitet, das ist das klassische formularverhalten. kann mit dem "iframetrick" "umgangen werden, bleibt aber unschön!
2.)a: wenn du irgendetwas dauerhaft speichern möchtest, sollte man es in eine datenbank schreiben!,
b: wenn du etwas nur temporär speichern möchtest (solange der user auf der seite ist), dann reicht es das ganze in eine (globale) javascriptvariablen zu speichern.
c: du kannst auch etwas in cookies schreiben und diese beim laden der seite einlesen, dann kannst du für einen bestimmten user etwas länger und ohne db speichern. (der user kann es aber löschen, bzw. cookies deaktiviert haben)
2a.) wenn du es in eine datenbank schreiben willst, solltest du am besten gar kein formular verwenden, sondern einfach einen button hinzufügen und diesen via javascript/jquery ansprechen und dann einen ajax-request an den server schicken ("deine php seite") und dort die von javascript übergebenen daten ganz normal in variablen schreiben, und dann kannst du die in deine sql-datenbank schreiben. auch kannst du dann die ajax-anfrage mit einer rückgabe beantworten, die du dann in deinem javascript-code wieder weiterverarbeitest und "nachträglich" in die seite einpflegst, sodass diese nicht komplett neu geladen wird.
2b.) wenn du deine informationen nur in javascript speicherst, kannst du im prinzip deine gesamte programmlogik in javascript schreiben und brauchst php nur noch bedingt. -> wenn du etwas vom server willst, solltest du es auch hier per ajax-aufruf machen.


FlugzeugAUT 
Beitragsersteller
 21.12.2016, 16:43

Ja nur ich würde gerne aus Zeit-, Wissens- und Berechtigungsgründen auf Datenbanken verzichten mit dem Bildupload hat es ja auch geklappt halt eben mit Image1.jpg, image2.jpg usw...

0
areaDELme  21.12.2016, 16:47
@FlugzeugAUT

was passiert denn auf der website wenn man ein bild hochlädt?, also was ist der ablauf und was bekommt man am ende?
wenn ich das verstehe kann ich dir vielleicht eine gute lösung vorschlagen.
1.) bild hochladen
2.) bildtitel vergeben
.....
????

0
FlugzeugAUT 
Beitragsersteller
 21.12.2016, 18:08
@areaDELme

Ja ich lade per Klick eben ein Bild hoch, das wird dann in Bild1.jpg unbenannt. Überall wo man nun <a href="Bild1.jpg"> eingegeben hat erscheint das Bild auf der Webseite. Das bringt aber leider in dem Fall nichts... und wenn ich nur wüsste wie man mit Datenbanken anfangen soll, offline gebe ich localhost:phpmysql ein und verbinde die dann im PhP Code aber wo ich im Endeffekt online eine Datenbank bekomme bzw. einbinde weiß ich leider nicht. Und wie gesagt Berechtigungen habe ich leider nicht so wie es sein sollte (also keinen vollen Zugriff auf den Webhost, kann nur FTP leider)

0
areaDELme  22.12.2016, 10:11
@FlugzeugAUT

1.) frag mal nach dem login für den webhoster -> mysql & phpmyadmin zum erstellen und verwalten von datenbanken
2.) wenn das nichts wird schau dir mal das thema sqlite an.
3.) ansonsten könntest du die bilder wie gehabt hochladen, allerdings umbenennen in "Das_ist_mein_Bildtitel.counter.jpg" und mit php das verzeichnis der bilder einlesen und für jeden eintrag z.b.
echo '<img src="'.$pfadzumbild.$eintrag.'">';
ausgeben lassen.
um den bildtitel richtig anzugeben kannst du $eintrag an den punkten splitten und die "_" durch " " ersetzen. und dann in eine html form bringen. (der counter nach dem ersten punkt beugt lediglich doppelten bildbennenungen vor, und kann bei der textausgabe daher fallen gelassen werden)
hierbei sind allerdings nicht alle zeichen möglich.

4.) für eine website sollte man cms benutzen. in fast jedem cms gibt es von anderen bereist programmierte module, die man auf seine bedürfnise anpassen kann. damit wäre es um ein vielfaches leichter und auch sauberer. außerdem musst du wenn du inhaltlich an der website etwas änderst nicht immer im nackten code rumeditieren!

zum abschluss: für dein nächstes projekt solltest du dich erstmal mit einem cms deiner wahl befassen (ich bevorzuge modx, aber auch joomla, wordpress, etc. haben ihre besonderheiten)
dann solltest du dich mit den vorgefertigten modulen deines cms befassen und der api/docu.
wenn du dann ein wenig damit rumgespielt hast, empfiehlt es sich das thema sql anzuschauen. ich finde immernoch, dass das erstellen eines gästebuchs dafür ein guter anfang ist.
wenn du auch das gemeistert hast kannst du dich mit dem thema javascript/jquery befassen und erstmal nur "effekte" erstellen. wenn du mit sprache halbwegs vertraut bist, kannst du dich an das ajax prinzip heranwagen und z.b. versuchen einen (gruppen)chat zu schreiben. dafür musst du dir aber noch ein geignetes datenbankschema überlegen, das auf deine vorstellungen abgestimmt ist.

parallel zu allem kannst du dich mit design befassen. ein zeitgemäßer start wäre die verwendung von bootstrap und die farbpaletten des google material design. aber auch hier ist es letzlich jedem selbst überlassen. man muss nur kreativ genug sein.
p.s. ein weiteres wichtiges thema sollte svg sein, da vektorgrafiken in der modernen webentwicklung immer mehr anklang finden. hierbei geht bei der skalierung keine qualität verloren, da die bilder in form von vektoren vorliegen. das sollte man z.b. bei logos, icons, etc. benutzen. (inkscape, kostenlos)

0
FlugzeugAUT 
Beitragsersteller
 22.12.2016, 15:57
@areaDELme

Ja genau so stelle ich mir eine Antwort vor, und nicht so wie gewisse andere Leute, die mich einfach nur bemängeln und schlecht reden ohne einen Ansatz, der zur Besserung beiträgt.

Das Problem war bisher immer ich hab z.B. was praktisches wie Funktionen, Schleifen, zufällige Zahlen Ausgabe von Büchern gelernt (DOM z.B. erst mit Jquery ein wenig verstanden) und muss ehrlich zugeben das meiste wieder vergessen. Was mich dran schockiert ist ja, dass ich eigentlich nicht dumm bin, ohne mich selbst zu loben, aber hier hat mir bis jetzt leider komplett der Ansatz gefehlt. Was bringt es wenn ich Schleifen schreiben kann, aber in Wirklichkeit überhaupt nicht verstehe für was ich das im Endeffektt auch dann brauche, weißt du wie ich meine?...

PHP hab ich eigentlich nicht angefangen in einem Buch zu lernen, sondern habe es von Tutorials, finde ich persönlich aber sogar noch logischer und Anwendungsgetreuer als JS "vanilla" sag ich jetzt mal :).

Gut, dass mit dem Bild verstehe ich leider nicht wirklich, und das ist auch so ein wenig das Problem bin dahingehend leider nicht der talentierteste, vorallem weil ich eben nicht verstehe was du mit Eintrag meinst, wenn's nicht macht würd ich das einfach so lassen und wirklich das Projekt irgendwie beenden und anfangen mit CMS herumzueiern..

Ehm, was ich mir bei CMS jedoch von Anfang an gedacht habe war, das ist doch unprofesionnel oder etwa nicht? Oder können die meisten trotz der Verwendung eines CMS genauso wie ich HTML Codes und CSS Seiten schreiben, wollen es aber nicht, da es in Wirklichkeit viel unprofessioneller ist? Was ich auf keinen Fall will ist irgendwelche Bilder da hinziehen, wo ich sie haben will, das wäre dann schon wenig "jimdo" mäßig und wäre sogar für meine mageren Kenntnisse eine Beleidigung jeder Anstrengung, die ich reingesteckt habe.

Also danke nochmal für deine Antwort und viele Grüße :)

0
areaDELme  22.12.2016, 16:31
@FlugzeugAUT

bezüglich cms kann ich dir leiden keinen großen überblick mehr geben, da ich mitlerweile bis auf ein projekt alles auf modx umgezogen habe.

modx ist folgendermaßen aufgebaut:
du hast links ein seitenmenü mit 3 reitern. der erste sind deine eigentlichen seiten der website (auch unterseiten möglich in orndnerstruktur) -> hier ist im prinzip nur die struktur und der reine inhalt jeder seite
der zweite reiter ist für templates (deine designvorlagen/html grundgerüst was gleich bleibt), diese kannst du einzelnen seiten der website zuweisen, musst aber nicht jeder unterseite das gleiche template geben.
dann sind hier noch sogenannte tvs (template variablen) in denen du einzelne variablen wie zum beipiel ein logo speichern kannst. diese tv kannst du dann in deinem template als tag einbinden z.b. [[*logo]]
und musst wenn sich jetzt an dem logo was ändert nicht dein template bearbeiten, sondern nur die variable. (tvs können auch mit parametern aufgerufen werden)
dann gibt es noch chunks, das sind praktisch html schnipsel/gerüste, die du beim aufrufen mit paramtern füllen kannst. z.b. kannst du ein kontaktformular als chunk speichern und in deiner html seite diesen chunk einfach mit [[$kontaktformular]] aufrufen.
dann gibt es noch snippets, das sind php-code blöcke, und auch diese können mit parametern aufgerufen werden.
chunks, snippets und tvs können sich auch gegenseitig aufrufen, was es einem ermöglicht im prinzip verdammt viel komplett dynamisch erzeugen zu lassen. bei snippets kannst du zusätzlich sagen, ob diese ungecached aufgerufen werden müssen oder ob mit dem cache gearbeitet werden darf bis zur nächsten änderung...
die aufrufe können auch verschachtelt stattfinden
z.b.: [[!sendMail? &empfaenger=`[[!getLeader? &isadmin=`true`]]´ &sender=`[[$standardmail]]`]]
//man müsste halt die nötigen chunks und snippets schreiben
wenn man sich damit mal vertraut gemacht hat, ist das ganze sooo verdammt mächtig und definitiv 100 mal professioneller als wenn man blanko html und php seiten schreibt.
die möglichkeiten sind unbegrenzt. du musst nur sauber arbeiten und lernen wie die einzelnen teile zusammen spielen.
der 3 reiter ist dein verzeichnis von modx, sodass du neue bilder, etc. direct darüber hochladen kannst.
selbstverständlich schreibst du deine stylesheets wie gehabt und bindest sie ein. aber für dein template würdest du z.b. einfach einen chunk schreiben der "head" heißt und dann steht in deinem template zb.
<DOCTYPE html>
<html>
[[$head]]
<body> ....

dann gibt es einen marketplace über den du dir diverse module runterladen kannst. z.b. das login package.
dafür musst du gemäß der doku auf der modx website einfach nur die formulare auf dich anpassen und benutzergruppen erstellen.
und schon hast du einen kompletten loginbereich der noch in benutzergruppen unterteilt ist (z.b. user, mods, admin)
und du hast sowas wie passwort vergessen, registrieren innerhalb von, okay beim ersten mal vielleicht 2 std eingerichtet und der aufruf für den loginbereich auf der website ist [[!login]]

und es gibt noch sooo viele weitere nützliche module die einem sooo viel arbeit abnehmen (upload, frontend-editirung, backendeditoren, gateway-plugin für mehrere websiten mit unterschiedlichen domains in einer modx installation...). das wichtigste ist es als entwickler einfach nur ein schönes design zu schreiben. je sauberer, desto besser. dann mit php und sql (wobei modx sql mit der xPDO api nochmals vereinfacht) serverkommunikation erstellen alles was praktisch vom user kommt, und irgendwie gespeichert werden muss und später wieder in die seite geladen werden muss.

.....
ich könnte noch soooo viel sagen, aber das sprengt das ganze hier glaub eh schon. wenn es dich wirklich interessiert, dann lade dir doch einfach xampp auf den pc runter und installiere darüber modx revolution (bitnami link in xampp). dazu gibts auch genug anleitungen im netz. dann simulierst du praktisch einen server mit webspace und kannst offline den umgang damit lernen.

bei weiteren fragen kannst du mich auch gern persönlich anschreiben.

0

Also, ich habs jetzt bei mir mal ausprobiert, und zwar alles in einer Datei, Formular und php, und mit a+

Funktioniert, in dem Sinn, dass die Einträge erhalten bleiben
http://pastebin.com/7W4Xmz18


FlugzeugAUT 
Beitragsersteller
 21.12.2016, 20:14

Ohne Worte, Respekt :) Da ist wirklich jetzt ein Danke fällig, eine Frage jedoch wie kommt man auf a+ ? :D

0
kuechentiger  22.12.2016, 15:49
@FlugzeugAUT

Ganz einfach: es gehört zu fopen dazu.
Es gibt verschiedene Buchstaben (modes, r w c x a), die man angeben kann. Sie haben unterschiedliche Aufgaben, und auch mit + oder ohne macht Verschiedenes. Und für "w" gilt: es "kürzt die Datei auf 0", und zwar mit und ohne + Also alles weg, außer der Datei selbst

0
FlugzeugAUT 
Beitragsersteller
 22.12.2016, 16:00
@kuechentiger

Ja aber wenn man das dann wieder auf einer anderen Seite ausgeben will hat man wieder ein invalid variable :/ Also die Datei wäre 2 Ordner höher und dann wieder 2 Ordner tiefer :D Und wenn ich dann im Endeffekt sage <?php include('dateiname.php'); dann steht oben invalid variable... und auf der anderen Seite (also auf der Editseite sind die dann auch wieder invalid keine Ahnung, ist wahrscheinlich schwer realisierbar oder? Wenn du da noch was wüsstest wär's echt perfekt :)

0

Ich denke hier ist der Hund begraben

$fileHandle = fopen("myDataFile", 'w'); fwrite($fileHandle, $var1); fwrite($fileHandle, $var2); fclose($fileHandle);

'w'

Nur zum Schreiben geöffnet; platziere Dateizeiger auf Dateianfang
und kürze die Datei auf eine Länge von 0. Existiert die Datei
nicht, versuche, diese zu erzeugen.

Das heisst beim 2. Aufruf von fwrite wird das erste fwrite überschrieben.

Dem kannst du entgegen wirken in dem du var1 und var2 verkettest mit "." und dann alles auf einmal mit fwrite schreibst.

Woher ich das weiß:Hobby – Ich bin älter als das Internet.

FlugzeugAUT 
Beitragsersteller
 21.12.2016, 16:37

Ja ich bin halt auch nicht der größte Profi bzw. generell erst Anfänger, obwohl PHP fast noch logischer ist als Javascript! Ehm ich habe hier die Datei jedoch in einem Paste http://pastebin.com/6xUGZhYR (und ich hab es mit Read schon einmal zusammengefasst, das ist nicht das was ich möchte)

Ich probiers jetzt praktisch zum erklären (und warums überschrieben werden soll)

Ich habe eine Reifenseite, also verkaufe online Reifen! (nur ein Beispiel) Hierzu habe ich eine OnlineEdit Seite mit Login (habe ich schon) (und ja es gibt sicher bessere Lösungsmöglichkeiten ich will es einfach so) Ich habe es bereits geschaft Bilder hochzuladen, jedoch mit Umbenennung in Image1 und pro Bild 1 Upload Element, genauso wie ich es wollte!

Jetzt will ich über diesem Bild einen Titel, den man auch auf dieser EditSeite eingeben soll und absenden kann, der wird dann auch auf der Besucherseite angezeigt, genauso wie die Bilder (Image1 - Image10)

Die generelle Input Eingabe würde ja auch klappen genauso wie ich es will bei einem Reload jedoch ist alles weg und die Variable undefiniert! Dasselbe ist bei der zweiten Möglichkeit mit der externen Datei, wo der Text gespeichert wird.  Ich mein irgendwie ist es logisch, dass ich schon langsam ein wenig die Motivation verliere das Problem ist doch nicht von irgendwoher hergeholt, es wird nur scheinbar nirgends behandelt oder man macht das mit JS ich habe keine Ahnung

0
geri3d  21.12.2016, 16:43
@FlugzeugAUT

Schau dich mal um nach einer fertigen Lösung und dergleichen, da sparst du dir die ganze Programmiererei.

0
geri3d  21.12.2016, 16:47
@geri3d

In dem Script das du geschickt hast ist genau der gleiche Fehler!!

fwrite($fileHandle, $var1 . "\n" . $var2);

würde das problem vermeiden.

1
kingbongo  21.12.2016, 16:53
@FlugzeugAUT

Warum versuchst du etwas was du schon im Ansatz nicht verstehst? Das ergibt kein Sinn. Zudem sind das, was du vorhast, alles Grundlagen. 

Mein Tipp: Erstmal viel Lesen und sich die entsprechenden Fähigkeiten aneigenen, danach mit der Umsetzung beginnen und nicht ohne Plan etwas starten. Die Welt der Programmierung ist gnadenlos und kennt kein "was nicht passt wird passend gemacht"  

1
FlugzeugAUT 
Beitragsersteller
 21.12.2016, 17:35
@kuechentiger

Erstmal danke für deine Antwort, so Antworten stell ich mir vor einfach klar ausdrücken was der/die meint :) Sonst immer ewig komplizierte Sachen, die nicht genau erklärt werden. Natürlich bin ich erst Anfänger aber was bringt das ständige Lesen der Theorie, wenn man es sich eh nicht merkt bzw. das Motto eigentlich Lerning per Doing sein sollte und das so ziemlich das komplizierteste der ganzen Homepage ist.

Trotz allem macht es leider überhaupt keinen Unterschied ob man a, c oder w verwendet :/

0