Beiträge von Stef

    Hey,


    basti1012 : Danke dir für den Link. Der hat mir sehr weitergeholfen.


    cottton : Bei meinem Projekt kann der User sich ein Formular zusammenstellen und generieren lassen. Nun hat er auch die Möglichkeit, dieses wieder zu löschen. Aus diesem Grund brauche ich dies unbedingt.

    Hey,


    danke für eure Hilfestellung :) Nach langem rumtesten, recherchieren funktioniert nun alles. Es lag unter anderem an der Groß- und Kleinschreibung und den verschiedenen Rechten, die benötigt wurden um z.B. Aktionen im Verzeichnissystem auszuführen.


    tk1234 : Danke für die nochmalige Erwähnung dieser Thematik. Ich werde mir dies wenn ich dafür Zeit finde, nochmal in Ruhe anschauen.

    Hey,


    ich muss dieses Thema nochmal aufgreifen.


    Ich habe mein Projekt gerade ohne jegliche Änderungen auf mein Webserver hochgeladen und über den Browser aufgerufen. Nun kommt der gleiche Fehler wie zu Beginn: Die Klasse kann nicht gefunden werden, obwohl der Pfad zur PHP-Datei stimmt.


    Lokal unter Xampp funktioniert es. Online nicht.


    Ich kann mich noch daran erinnern, dass es zu Beginn bei Xampp nicht funktioniert hat und nach Tagen plötzlich ohne Codeänderung funktioniert hatte.


    Ich bin ratlos wie das sein kann.


    Habt ihr Vorschläge?

    Hey zusammen,


    in meinem aktuellen Projekt kommt es vor, dass ich ein Ordner und alle Ordner und Dateien darin löschen muss.


    Der Ordner ist so aufgebaut:

    Code
    1. files/
    2. files/text
    3. files/pdf
    4. files/text/test.txt (und viele weitere Text-Dateien)
    5. files/pdf/test.pdf (und viele weitere PDF-Dateien)


    Nun habe ich nach einer Lösung gesucht wie ich dies umsetzen kann. Ich kam dann dazu 3 Funktionen zu schreiben, die nach und nach alles löschen. Zuerst die Dateien, dann die Ordner auf zweiter Ebene und zum Ende den Hauptordner in dem alles drin war.


    Nun frage ich mich, ob es dafür nicht eine besser Lösung gibt, die ich in eine Funktion packen kann. Habt ihr Vorschläge?


    Dies ist mein Code:

    Hey Marvin,


    ich arbeite nicht mit Data Table und kann dir dazu direkt nichts sagen. Wie du jedoch sicher schon herausfinden konntest liegt die Ursache daran, dass irgendetwas nach dem Löschvorgang mehr Breite als die vorgesehenen 100% einnimmt.


    An deinem Code kann ich nicht direkt erkennen woran es liegt. Prüfe da einfach nochmal für dich Schritt für Schritt woran es liegen kann und schaue ganz spezifisch für DataTable danach.


    Schöne Grüße

    Hey,


    Der Laie : Schön, dass du neu hier bei uns im Forum bist. Kannst du bitte zukünftig für deinen Code einfach die dafür vorgesehenen Code-Tags nutzen, die du oben im Textediter-Menü an dritter Stelle von rechts ( </> ) findest? So erleichterst du uns, dir auch zu helfen und bekommst je nach Thema schnellere Antworten.


    Danke dir.


    Schöne Grüße,
    Stef

    Guten Morgen,


    vielen Dank für eure Antworten. Ich habe diese Woche mehrere Methoden ausgetestet und auch die Ursache für dieses Verhalten gefunden.


    jonas3344 : Ich habe den EventListener nach deinem Vorschlag ausgetestet. Dort kam es jedoch dazu, dass egal wo ich im DOM klickte alle Elemente nach und nach entfernt worden sind.


    & wie würdest du das mit den EventListener regeln? Hast du da eine andere Vorgehensweise? Würde mich freuen, wenn du diese mit mir teilen kannst.


    Nun zur eigentlichen Ursache warum es nicht funktioniert hat: Wenn ich auf den Delete-Button klicke, wird das ganze HTML-Element selektiert, in dem dieser Button liegt. Nun habe ich über e falsche Werte erfasst, was dazu geführt hat, dass nach Ausführung der Hide-Funktion nochmal die show-Funktion ausgeführt wurde.


    Die Lösung war, ganz genau zu prüfen, ob der Delete Button geklickt worden ist. Falls ja wird einfach das Element gelöscht und die Hide-Funktion ausgeführt.


    Schöne Grüße,
    Stef

    Hey,


    Ich habe ein HTML-Element, welches ich durch ein Klick-Event immer wieder neu erzeuge. In diesem ist für jedes Element auch ein Löschen Button. Dieses kann ich mit einem Klick auswählen. Dabei wird dann ein kleines Menü angezeigt, welches die einzelnen Daten des jeweiligen HTML-Elements anzeigt.


    Wenn ich nun während dieser Ansicht auf den Löschen Button, des jeweiligen HTML-Elements, klicke wird es zwar entfernt aber der JS-Code, welches das Menü wieder ausblenden und das Elemente-Menü anzeigen soll, zeigt einfach keine Auswirkung. Ich verstehe nicht warum.


    Ich habe schon viel gedebuggt und geschaut woran es liegen kann. Die entsprechende Funktion wird auch ausgeführt. Nur der Code in dieser Funktion unerklärlicherweise nicht.


    Hier ist der Code:

    JavaScript: EventListener
    1. $("#" + elementId).on("click", function(e){
    2. $("#"+ elementId).find(".delete").on("click", function(e){
    3. Elements.deleteElement(e, Menu.hideMenu); // Hier wird der Funktion deleteElement die Funktion hideMenu aus dem Modul Menu mitgegeben
    4. });
    5. }


    Hat jemand eine Idee woran dies liegen kann?


    Ich freue mich von euch zu hören.


    Schöne Grüße,
    Stef

    Hey Lupus,


    es kommt immer auf das Projekt an. Ist es ein reines Entwicklungsprojekt nutze ich die Standard Fonts. Wenn ich dagegen mit WordPress eine Webseite umsetze meistens Questrial. Ich finde diese Schriftart einfach echt nice :)


    Schöne Grüße,
    Stef

    Hey,


    danke für deine ausführliche Antwort. :)

    Ich habe es ausprobiert und es hat aber nicht funktioniert. Der Pfad kann nicht gefunden werden, weil die Daten außerhalb des Root-Verzeichnisses der Webseite liegen.


    Beim Ausprobieren ist es mir auf dem FTP-Server mit dieser Vorgehensweise auch sehr unübersichtlich erschienen.


    Schöne Grüße,
    Stef

    Hey,

    Wenn eine URL z.B. im href-Attribut eines a-Elements ausgegeben wird. Für URLs gelten spezielle Regeln, nicht alle Zeichen sind da erlaubt, siehe Fortsetzung zu der von mir in #4 verlinkten Seite.

    danke für deine Antwort auf meine Frage und für den Link zur Selfhtml Seite, in der es nochmals ausführlicher erklärt wird :)


    Schöne Grüße,
    Stef

    Guten Morgen,


    danke für deine ausführliche Antwort & die Ratschläge. Ich habe einfach mal die Klasse Router mit seinem Namespace über use integriert use App\Core\Router as Router;, dann instanziiert und plötzlich hat es, obwohl der Namespace der gleiche war, funktioniert. Ich weiß nicht warum.


    Der Autoloader funktioniert jetzt aber ohne weitere Probleme.


    Zitat

    Aber: warum liegen die Klassen überhaupt in einem Verzeichnis das per HTTP erreichbar ist? Das einzige was in dem per http erreichbaren Verzeichnis liegt ist die index.php (sowie Bilder/JS/CSS), alle weiteren Scripte liegen in einem Verzeichnis weiter oben.

    Wie meinst du das?


    Schöne Grüße,
    Stef

    Hey,


    die Tabelle soll doch nach dem erstellen der Inhalte über das Formular erstellt werden und anschließend in die Datenbank eingefügt werden? So habe ich dich verstanden.


    Dann musst du den Code genau an der Stelle ausführen, bei der du die Inhalte für die Tabelle über das Formular in die Datenbank einfügst. Gleich danach. Mein Code ist da auch eher Beispielcode. Diesen musst du dann natürlich auch anpassen.


    Zitat


    Und kann ich die Farbe der Zellen durch einen klick ändern und durch einen Speichern Button aktualisieren ?

    Ja das ist möglich. Dafür ist entweder JQuery oder JavaScript erforderlich. Wie kann die Funktion dafür aussehen? Du gibst jeder Datenzelle der Tabelle eine Klasse. Nun erfasst du diese über JavaScript und initialisierst über eine for-Schleife auf jede Datenzelle das Klick-Event mit einer Funktion, welche bei der gedrückten Datenzelle die Hintergrundfarbe ändert. Die Hintergrundfarben, die du dafür nutzen möchtest, kannst du dann im JavaScript-Code auch hinterlegen.


    Hier sind Ressourcen dafür:

    Hey,


    tk1234 : Daran liegt es nicht.


    Ich habe einfach den PSR4-Autoloader von php-fig.org kopiert: https://www.php-fig.org/psr/psr-4/examples/. Der Prefix wird beim Erstellen des Pfads sowieso entfernt.


    Nochmal ein projektbezogenes Beispiel


    Dies ist die Ordnerstruktur zur Klasse Router die ich mit dem Autoloader laden möchte: app/core/Router.php

    Nun steht in der Router.php dieser Namespace: namespace App\Core;


    Wenn ich im Autoloader mir die $class direkt zu Beginn ausgeben lasse, wird einfach nur den Klassenname ausgegeben. In diesem Fall also Router. Ohne jeglichen Namespace. Wenn ich den Namespace nun in der index.php bei der Instanziierung der Klasse nochmal explizit angebe ändert sich auch nichts daran.


    Irgendwie erkennt der Autoloader den Namespace nicht.


    Wenn ich vom Autoloader folgenden Codeblock entferne kann ich mir zumindest den Pfad zur Datei ausgeben lassen, welche eingebunden wird, wenn diese existiert:

    PHP
    1. if (strncmp($prefix, $class, $len) !== 0) {
    2. return;
    3. }

    Der Pfad lautet: C:\xampp\htdocs\project/app/Router.php


    Dann habe ich mir gedacht, dass es an dem direkten Aufruf über C:\ liegt und habe direkt http://localhost/project anstelle von __DIR__ bei $base_dir genommen und zum Testen auch den direkten Pfad angeben, damit nurnoch die $class angehangen werden muss: http://localhost/project/app/core/. Jetzt wird diese selbst damit immernoch nicht gefunden obwohl der Pfad, der eingebunden wird folgender ist: http://localhost/project/app/core/Router.php.


    Mit einem relativen Pfad klappt es auch nicht.

    Hey m.scatello,


    ja. Dies habe ich auch schon gemacht und bin an Punkt 8 angekommen:)


    Ich habe mit namespaces schon lange nichts mehr gemacht und finde da erstmal rein.


    So sieht der Authentification Controller aus:

    PHP
    1. namespace App\Controller\Authentification;
    2. class Authentification{
    3. ...
    4. }


    Wenn ich diesen in der index.php über App\Controller\Authentification(); aufrufen möchte wird es immer noch nicht gefunden. Der Autoloader bricht immer wieder bei dem if-Statement mit der Funktion strcncmp() ab. Warum weiß ich nicht. Mir kommt da nichts falsch vor.

    Hey,


    ich entwickle gerade wieder ein größeres Projekt und brauche dafür den Autoloader. Als Autoloader nutze ich den PSR4 Autoloader.


    Nun wird mir die Fehlermeldung angezeigt, dass die gewünschte Klasse Authentification nicht gefunden werden kann. Der Autoloader bricht immer wieder bei dem if-Statement mit der Funktion strcncmp() ab.


    In $class steckt Authentification.


    Woran kann es liegen?


    Hier ist der Code:

    PHP: index.php
    1. <?php
    2. require_once "autoload.php";
    3. $auth = new Authentification();

    Hey Franky,


    kannst du mal bitte die Reihenfolge deiner Datenbankaktionen mit uns teilen?


    Es kann gut sein, dass du die Datenbankaktionen in folgender Reihenfolge hast:

    • Select
    • Update
    • Insert

    Dort tritt es auf, dass Select vor allen beiden anderen Datenbankaktionen ausgeführt wird und die Änderungen dann erst mitbekommt, wenn die Seite nochmal neu geladen wird.


    Prüfe das bitte mal.


    Mit folgender Reihenfolge sollte es ohne Probleme gehen:

    • Insert
    • Update
    • Select (immer als letztes)


    Schöne Grüße,
    Stef

    Hey Sky-Kay ,


    du kannst nach dem erfolgreichen Datenbankeintrag die gerade erst eingetragenen Daten selektieren, fetchen und mittels diesen die HTML-Tabelle erstellen, die du brauchst. Nachdem diese erstellt wurde weist du dieser einer Variable zu, welche du dann in die Datenbanktabelle wieder einfügst.


    Ich stimme auch m.scatello zu. Dies ist eine gewisse redundante Datenspeicherung. Nur in einer anderen Form. Nur wenn sich die Daten der anderen einzelnen Felder ändert, musst du diese natürlich direkt auch in der Tabelle ändern. Sonst kommt es dazu, dass durch diese Vorgehensweise der Speicherung unterschiedliche Daten vorhanden sind und diese zwar an einer Stelle dann aktuell sind und in der Tabelle noch veraltet. Da musst du aufpassen.


    Hier ist ein Beispielcode:


    Schöne Grüße,
    Stef