Beiträge von The Scout

    Hi,
    im Grunde ist margin eine Kurzform. Aufgeschlüsselt kann man es folgendermaßen machen:


    Um nun deine Box mittig ins Fenster zu kriegen brauchst du also nur

    CSS
    margin: auto

    , um das aber zu erkennen muss man natürlich die Box auch kleiner als den Viewport anzeigen lassen.

    Dafür gibts auch das ANT Build Skript.
    Da kannst du dein JS in einzelne Dateien packen, schön übersichtlich damit arbeiten und wenn fertig, lässt du ANT drüberlaufen, das fügt die einzelnen Dateien zusammen und komprimiert anschließend noch.


    Einfch mal googlen, wird auch bei der HTML5Boilerplate erwähnt.

    Hmm klingt mir nach einer Art CMS.
    Wenn der Gegenüber wirklich keinerlei Ahnung von HTML und so hat, ist es immer noch am einfachsten ein Fertiges zu nehmen.


    Für dich käme zB cms2day.de in Frage, ein kleines CMS, was nicht viel Einrichtung braucht.
    Da kannst du am Template schön HTML & CSS üben und deine Mutter hat eine Plattform, die sie beim Site gestalten unterstützt.


    Oder du versuchst selbst einen Bereich zu schreiben, der ein Login braucht um Uploads zu ermöglichen, dass würde dann eindeutig Übung in PHP bringen, allerdings ist es dann immer fraglich, ob man nicht doch eine Hintertür einbaut.

    Willkommen im Forum!


    Die Arrayvariable $_GET wird nur gesetzt, wenn Daten via GET Methode an das PHP Skript übergeben werden. Wenn man also bspw. ein HTML Formular hat

    HTML
    <form action="skript.php" method="get">
      <!-- Die ganzen Formularinputs -->
    </form>

    und dieses abgesendet wird, dann bekommt das PHPskript "skript.php" eine GET Variable, die dann natürlich auch wieder ausgegeben werden kann.


    Wurden noch keine Daten gesendet, oder wurden sie als POST gesendet, dann existiert $_GET auch nicht und kann dementsprechend natürlich nicht ausgegeben werden ;)


    Einfachste Überprüfung für diesen Fall ist folgende:

    PHP
    $ida = isset($_GET["ida"]) ? trim($_GET["ida"]) : "";

    Soll heißen: "Schreibe in die Variable $ida entweder den Wert von $_GET["ida"] ohne Leerzeichen vorn und hinten, falls dieser vorhanden ist, sonst nimm einen leeren String".

    Jiop, es wäre deutlich leichter, einfach von den Betreibern zu fragen, ob sie einem direkten Zugriff zustimmen, dann könnten sie dir einen MySQL Nutzer mit eigenem PW für deine Anfragen erstellen, und du hast wesentlich weniger Probleme.


    Ansonsten sähe das AJAX Grundgerüst so aus:


    Es ist allerdings immer fraglich, ob die Betreiber der Seite das gerne sehen, da so eine Anfrage sehr leicht für einen CSRF gehalten werden kann, wobei das Formular als "Opfer" herhalten würde...


    Und mehr Code kriegst du von mir nicht, hier wird (wenn nur per pN abgesprochen, sonst) nicht für Geld sondern selbst gearbeitet ;)

    Gesehen nein.
    Aber ich würde schätzen, was du dafür brauchst ist HTML 5 (für Canvas), JavaScript (für die ganzen berechnungen) und evtl. Ajax+PHP (falls Hintergrunddaten aus einer Datenbank kommen).


    Und der Unterschied zwischen Canvas und SVG ist folgender: Canvas ist ein Tag in HTML, der eine Leinwand in der Webseite beschreibt, diese Leinwand wird dann mit JS bemalt, also dynamisch generiert, wenn ein Nutzer die Seite aufruft.
    SVG ist alles schon vorgegeben, statisch, das ist XML, welches nur noch Daten liefert, welche dann als Bild ausgegeben werden, da wird nichts mehr generiert.


    Also, für das Projekt wirst du mMn massiv JavaScript und vor allem dessen neue Befehle für die Canvasmanipulation beherrschen müssen. Leider ist JS nicht unbedingt meine starke Seite xD

    Hmm, das hat wohl die temporäre Analphabetie bei mir zugeschlagen :)


    Und was den Befehl mit ASC / Desc angeht: Mir ist klar, dass das mit Platzhaltern nicht funktioniert, aber wenn man keine Platzhalter nutzt und den Befehl nicht wiederverwenden will, warum dann erst preparen und nicht gleich in die DB jagen?


    Deswegen habe ich das vorgeschlagen, das preparen ist in dem Fall unnötig, nicht falsch :)

    Hmm, was mir hier auf den ersten Blick auffällt:
    Eigentlicher Code

    PHP: 12
    function createNewNews($autor,$titel,$datum,$news)


    Formularscript

    PHP: 11
    $db->createNewNews($autor, $datum, $titel, $news)


    Merkste was?
    Umdrehen, gucken obs hilft, nochml melden ;)


    Und noch was anderes: das Validieren bei prepare, bindParam und sowas funktioniert nur mit den Platzhaltern, nicht mit Variablen, du kannst also im eigentlichen Code (erster Block) folgendes machen:

    PHP: 5
    // Das hier
    $stmt = self::$_db->prepare("SELECT * FROM eintraege ORDER BY eintrag_id " . $sort);
    $stmt->execute();
    
    
    
    
    // Gegen das tauschen
    $stmt = $_db->query("SELECT * FROM eintraege ORDER BY eintrag_id " . $sort);

    So, jetzt buddele ich mal selber ein bisschen in Gräbern rum, aber ich habe mal an einer Vanilla JS Variante gebastelt, die auch relativ schlank geblieben ist:


    Warum Vanilla?
    Weil schneller.


    Nachteile?
    Im Grunde wurde das Senden auf die POST Methode beschränkt, weil FormData die Stringifizierung nicht beherrscht. Soll heißen, man kann schönes key1=value1&key2=... bauen lassen. Dieser String wird aber bei GET benötigt, da er an die URL angehängt wird.


    Warum dann FormData? Weil man sonst für jedes einzelne Form Element prüfen müsste, was es ist, um damit dann den String zusammen zu bauen. Also, falls Textinput, nimm Name und Wert, falls Radiobutton, gucke ob gecheckt, ...


    Hat da jemand eine bessere Idee für Vanilla, oder findet jemand einen Bug in obigem Code?

    Ganz kurz vorweg, Excel ist nicht für Datenbankenverwaltung, sondern eher für tabellenkalkulation gedacht. Hat beides Tabellen, ja, ist aber trotzdem komplett unterschiedlich ;)


    Und ansonsten musst du dich fragen, was du selber willst:
    Willst du wissen, was im Hintergrund passiert, wenn ein Nutzer deine Seite aufruft, bis ganz zu den Wurzeln? - komplett eigenen Server mieten und aufsetzen, KEINE EMPFEHLUNG für Anfänger
    Willst du nur wissen, was auf der Seite abläuft, was dahin führt, dass sie so aussieht, wie sie aussieht? - Code selber schreiben und auf Webspace laden, NUR EMPFEHLUNG, FALLS es keine große Seite sein soll, sondern nur zur Vorstellung von dir, oder so, für Anfänger reicht das.
    Willst du einfach nur, dass die Seite funktioniert und der Inhalt schnell getauscht werden kann, ohne selber immer in Code gehen zu müssen? - Ein CMS wäre die Wahl, dann allerdings lernst du nicht wirklich was und wirst hier kaum Hilfe finden. Wenn du selber ein Plugin coden willst, oder unter der Haube von Wordpress bspw. rumschraubst, dann sind wir da ;)

    Also, JS auf dem Server hört sich mMn wie NodeJS an.
    Und diese Client-zu-Client Sache geht auch schon via JS, allerdings braucht man dazu immer noch den Server als Mittelmann, der die Verbindung herstellt, sich dann aber ausklinkt.


    Trotzdem, um Daten zwischenzuspeichern ist wie schon gesagt, eine zentrale Instanz nötig, außer du willst deinen Freunden die Festplatten vollmüllen ;)


    Also, ich würde sagen, theoretisch ist die Technik dafür vorhanden, es lässt sich inzwischen so realisieren, aber frage mich bitte nicht nach dem WIE ;)

    Ich spiele Handball im Verein, ansonsten vor allem Wassersport, Segeln sehr gerne, Surfen (egal welches) will ich lernen.


    Und was ich unbedingt mal ausprobieren will, sind die "Wingsuits", diese Flughörnchenanzüge, allerdings muss man dafür Fallschirmspringen können :(

    Das. Ist. Extrem. Traurig.


    Und dann wundern sich wieder alle, wie die NSA so leicht Daten abhören kann, schließlich wurden auch modernere Übertragungsmethoden in neuere Versionen eingebaut, oder irre ich mir da?

    Das ist relativ leicht, du hast grundsätzlich eine Datenbank, zu der du dich verbindest, wie wolf oben erklärt hat.


    Danach musst du dich entscheiden, ob du in dieser Datenbank nur EINE Tabelle, aber mit MEHREREN Spalten (pro Sprache eine Spalte) haben willst, oder MEHRERE Tabellen (pro Sprache eine), die dann allerdings nur jeweils zwei Spalten haben.
    Wie du es machst ist egal, Hauptsache ist, dass die gleichen Phrasen (zB "Ich komme mit dem Auto" - "I'll come by car." ...) die gleiche ID haben.


    Danach ist es leicht: Erste Spalte einer/der Tabelle ist die ID, danach kommt die entsprechende Phrase. Bei einer Tabelle sähe es dann ungefähr so aus:

    Code
    +-----------------+
    | id |  de  | en  |
    +-----------------+
    +-----------------+
    | 01 | Auto | Car |
    +-----------------+
    | 02 |  ... | ... |

    Wenn du mehrere Tabellen hast, ist in jeder halt nur eine Sprache enthalten, dann heißen die TABELLEN "DE", "EN" usw.


    Zuletzt musst du wie gesagt nur noch die ID des Satzes auswählen, dann kannst du den entsprechenden Satz aus jeder verfügbaren Sprache abgreifen, indem du den Ländercode wechselst.
    D.h. dass in deiner Templatedatei im Grunde kein Text, sondern nur die IDs der Phrasen sind, der Text wird aus der Tabelle geladen.


    Das ist jetzt die Varainte, die mir einfällt, wenn jemand einen leichteren Weg kennt, bitte melden, ich wüsste nicht, was für einen Anfänger sonst in Frage käme.


    Um das an einem konkreten Beispiel zu festigen:
    Die Tabelle oben heißt jetzt "Languages". Um nun aus "Languages" die Phrase "Auto" zu erhalten, sähe die Abfrage folgendermaßen aus:

    SQL
    SELECT `de` FROM `Languages` WHERE `id` = 01;


    Du musst also nur wissen, weche ID die Phrase hat und welche Sprache du haben willst. Um nun anstelle von "Auto" ein "car" zu erhalten, tauschst du einfach nur das `de` gegen ein `en` aus.

    Also, damit ich das richtig verstehe:
    Du möchtest auf deiner Seite im Grunde nur die IDs der jeweiligen Phrase angeben und dann, je nachdem welche Sprache vom Nutzer gewählt wurde, die passende Phrase für die ID einsetzen?
    Da gäbe es zwei Möglichkeiten:

    SQL
    -- Mit einer Tabelle und einer Spalte pro Sprache
    SELECT `sprachenid` FROM `sprachentabelle` WHERE `id` = `platzhalterid`;
    
    
    
    
    -- Mit einer Tabelle pro Sprache (tabelle hat das Sprachenkürzel als Namen)
    SELECT `phrase` FROM `sprachenid` WHERE `id` = `platzhalterid`;