Beiträge von Arne Drews

    Hallo,

    Dass es bereits zu viele SEO-Agenturen gibt stimmt. Was aber viel interessanter ist, sind die unterschiedlichen Aussagen, die man tlw. bekommt.
    Man muss sich also gerade im Bereich SEO Gedanken machen, für was will man optimieren?!
    Ich unterstelle euch hier einfach mal, dass SE hier für euch einfach Google bedeutet. Also kommen wir von SearchEngineOptimizing direkt auf GoogleOptimizing.
    Warum dann aber einer dubiosen SEO-Agenturen vertrauen, die ich nicht kenne, mir aber die Aussagen besser gefallen als bei anderen?

    Des Rätsels Lösung(en):

    Es ist mit Sicherheit keine leichte Lektüre, sich da durch zu arbeiten, aber das ist definitiv der beste Weg, um seine Website mit qualitativ hochwertigem SEO auszustatten!
    Beachten sollte man bei aller SEO-Euphorie allerdings auch, dass der Mensch(!) die Seite mindestens genau so interessant findet, wie die Bots, für die ihr optimieren wollt...

    Gruß Arne

    Hallo,

    Die Arrays würde ich auch über range() und shuffle() erstellen und verwürfeln.
    Allerdings macht das Sortieren des Arrays innerhalb der Schleife keinen Sinn. Das kann direkt nach der Schleife passieren.
    Und eine Schleife an sich benötigt man gar nicht, denn PHP bietet eine Vielfalt an Array-Funktionen, die das ganze Vorhaben komplett schleifenlos abbilden lassen:


    Für die Superzahl greift man hier eh auf das erste Element im Array zu.
    Dafür eine Schleife zu setzen, die von 0 anfängt zu zählen, solange der Wert <= 0 ist, macht hier nicht viel Sinn.

    Gruß Arne

    Zitat
    PHP
    $email = isset($_POST['e-mail']) ? $_POST['e-mail'] : null;

    In Deinem Eingangsthread heißt der Index "email", da kann man bereits den Fehler vermuten, zumindest ohne das Formular zu kennen.

    Zitat

    Ich habe mal fetch gelesen und habe mich gefragt für was das ist.

    Warum verwendest Du bei Insert PreparedStatements und bei Select nicht???
    Mit Select bekommst Du eine traversable Object zurück, über das Du iterieren kannst und da bietet sich fetch() an!

    Zitat

    Und wenn ich mein Formular wegschicke passiert nichts. nur in die auswertung.txt werden die daten gespeichert

    Dann sind die Daten schon mal vorhanden und korrekt.

    Zitat

    bis auf die email, die bleibt trotz angabe immer leer

    Dein Script versendet an keiner Stelle eine Mail, wenn Du damit Probleme hast, solltest Du posten, wie Du sie erstellst und versendest.

    Zitat

    in der Datenbank passiert nichts.

    Gibt es Fehler? Meldungen? Wie ist der aktuelle Codestand?

    Zitat

    Fetch bedeutet ja: Hole dir daten aus den reihen, wie kann ich dies dann anwenden ?

    Ein Insert liefert aber keine Datensätze zurück, also was willst Du fetchen?

    Zitat

    Und woher hast du nun getMessage und die var $pex ?

    $pex habe ich definiert für den catch-Block, siehe try/catch.
    getMessage ist eine Methode, die dann für das Objekt $pex existiert und den String der aktuellen Exception enthält.

    Onlineshop mit Wordpress... Ja, nur weil man's kann, muss man es aber nicht machen.
    Es gibt soooo viele Shopsysteme, die speziell dafür gedacht sind, warum will oder sollte man ein CMS mit Plugin dafür nutzen?!

    Aber egal ob echte Shopsysteme oder die WP-Krücke, es erfordert richtigerweise mehr Kenntnisse, als HTML und CSS selbst, um die zu betreiben.
    Ich würde das in Auftrag geben an Deiner Stelle.

    Zitat

    Wenn jemand Verbesserungsvorschläge hat nur raus damit

    Wo soll ich anfangen... :shock:

    PDO DSN für MySQL-Treiber:
    In dem DSN sollte bereits das Encoding gesetzt werden und der Verbindungsaufbau kontrolliert werden:


    Nachzulesen hier: http://www.php-rocks.de/thema/49-ein-k…statements.html


    Statement Platzhalter
    Die Platzhalter funktionieren glaube ich auf Deine Weise nicht. $name usw. werden innerhalb der Zeichenkette von Interpreter mit Ihren Werten ersetzt, so dass execute() mit seinen Parametern fehlschlägt.
    Ich vermute, dass bei entsprechendem ErrorReporting dies auch in Form einer Meldung, wenn nicht sogar eines Fehlers dargestellt wird.
    Verwende für NamedPlaceholder die standardisierten Doppelpunkte und übergebe ein entsprechend assoziatives Array:

    PHP
    $statement = $pdo->prepare( "INSERT INTO formulardaten ( name, email, betreff, nachricht ) VALUES ( ':name', ':email', ':betreff', ':nachricht' )" );
    $statement->execute(
            array(
                'name' => $name
                , 'email' => $email
                , 'betreff' => $betreff
                , 'nachricht' => $nachricht
            )
        );


    Auch das ist hier zu finden...
    Die falschen Daten in der Tabelle kommen allerdings daher, dass Du die Variablen in execute() in SingleQuotes setzt, die gehören da nicht hin!


    Scope bzw. EVA
    Du verwendest allerdings für den Insert Variablen, die im Scope an der Stelle noch gar nicht verfügbar sind!
    $name usw. definierst Du erst nach dem Datenbankzugriff. Du musst die Daten zuvor aufbereiten und dann erst die Datenbank-Query absenden.
    Dieser Fehler wird Dir auch mit Notices quittiert, siehe Dein zweiter Screenshot! Weitere Infos dazu findest Du hier: http://www.php-rocks.de/thema/66-undef…in-on-line.html

    Neue ID für jeden Datensatz
    Das kannst Du relativ leicht erreichen, in dem Du in phpMyAdmin der Spalte einfach ein AUTO_INCREMENT verpasst, dann macht MySQL das zuverlässig für Dich...


    EDIT: Dinge, die nach "einer Nacht drüber schlafen" noch aufgefallen sind... ;)
    Ist zwar technisch bzw. funktionell nichts anderes/besseres, aber Du kannst Deinen Code "übersichtlicher" halten, wenn Du die Abfragen der POST-Daten ternär verarbeitest:

    PHP
    $name = isset( $_POST['name'] )? htmlspecialchars( $_POST['name'] ): null;
    $email = isset( $_POST['email'] )? htmlspecialchars( $_POST['email'] ): null;
    $betreff = isset( $_POST['betreff'] )? htmlspecialchars( $_POST['betreff'] ): null;
    $nachricht = isset( $_POST['nachricht'] )? htmlspecialchars( $_POST['nachricht'] ): null;
    $sicherheitsabfrage = isset( $_POST['sicherheitsabfrage '] )? htmlspecialchars( $_POST['sicherheitsabfrage '] ): null;

    Das Schreiben bzw. Anhängen Deiner erstellten Ausgabe kannst Du mit Hilfe des dritten Parameter von file_put_contents() auch quasi als Einzeiler abfrühstücken:

    PHP
    if ( !file_put_contents('auswertung.txt', $ausgabe, FILE_APPEND|LOCK_EX) ) {
    
    
        echo 'Fehler beim Schreiben in die Datei...';
    
    
    }


    Aktueller Stand:
    Dein Script würde nach Berücksichtigung der oberen Hinweise aktuell so aussehen:

    Zitat

    Wegen der Garantie ist es mir aber lieber, wenn ich zum Händler gehen kann.

    Warum das? Die Garantie ist eine Herstellergarantie. Der Händler übernimmt für Dich nur den Versand dorthin und das auch nur aus Kulanz.
    Wenn jemand sagt: "Ich lasse mich gerne beraten.", sehe ich das ja ein, aber wegen Garantie-Anlaufstelle?! :?

    Hallo,

    Bei mir kommt es auf das Projekt an. Ich kläre und berate im Vorfeld, welche Endgeräte priorisiert werden sollen.
    Dem entsprechend setze ich auf MobileFirst oder auch nicht.

    Grundsätzlich solltest Du Dich auf Basis von HTML5 und CSS3 niederlassen.
    Javascript/Ajax kann aufgepfropft werden. Ich halte es auch in der heutigen Zeit noch so, dass eine Website grundlegend auch ohne Scripte bedienbar ist!
    Alles was man mit Scripten in Punkto Usability verbessern kann, gehört für mich on-top und nicht zum Fundament.

    Was responsive angeht, empfehle ich Dir, Dir das Konzept generell anzueigen, bevor Du Libraries oder Frameworks, wie Bootstrap & Co. verwendest.
    Denn wenn man den Background nicht versteht, nutzt man auch die Libraries und Frameworks i.d.R. nicht effizent.

    Gruß Arne

    Zitat

    Darum wollte ich ihm die Gelegenheit geben, ein Projekt zu zeigen.

    Wenn Du Projekte sehen willst, schau Sie Dir halt an: http://nikan.ir/project/?do=static&page=project

    Zitat

    Aber wenn dem seine eigene Webseite schon für nix und gar nix gefunden wird, wie soll man da glauben, dass er etwas brauchbares für Kunden abliefern kann?
    Und vor allem, alle seine drei bisherigen Posts beinhalten genau die gleiche Werbung. Das ist doch einfach nicht seriös.

    Die TLD .ir kennst Du aber? Sollte klar sein, dass die hier nur auf Werbung aus sind, oder?!
    Gehört ganz streng genommen auch in den weitläufigen Bereich von SEO, das solltet Du eigentlich wissen. Ausserdem basieren die Google-Suchergebnisse auch auf regionalen Daten, so dass es mich schon eher wundern würde, wenn ich die bei meiner Suche finden würde. Ich denke, genau das soll die Werbung bezwecken.

    Apropos "seriös": Wenn ich eine Seite sehe, die glaubhaft machen will, dass man mit Hilfe der Tipps in dem angebotenen Buch den PageSpeed seiner Seiten drastisch verbessern kann, erwarte ich die einfachsten und schnell erkennbaren Umsetzungen aber auch exakt auf der Seite, die dies so suggeriert!

    Ich kenne Dein Buch nicht und kann daher auch inhaltlich nichts drüber sagen, aber ich sehe Deine Seite, die mich selbst bei Interesse hindern würde, das Buch zu erwerben.
    Ebenfalls bin ich, wie Du kein Freund solcher Werbungen, wie sie oben von nikan betrieben wird, aber bevor ich deren Kompetenzen in Frage stelle, sollte ich bei mir selbst anfangen...

    Gruß Arne

    Ich habe nicht gesagt, dass er/die nichts gescheites haben!
    Vielmehr meinte ich damit, dass man sich auch mit einem eigenen Buch nicht unbedingt so weit aus dem Fenster lehnen sollte.
    Gerade im Bereich SEO scheiden sich die Geister...

    Wie Volker in #3 schon erwähnt hat:

    Zitat

    Microsoft JET Database Engineerror '80004005'
    Could not use ''; file already in use./inc/seiten/news.aspi, line 13

    Jetzt schauen wir mal in den profanen GoogleTranslator und erhalten für file already in use die deutsche Übersetzung "Datei wird bereits verwendet".
    Das einzige, was daran nicht zu verstehen sein könnte ist, warum ist die Datei bereits in Verwendung?
    Die Antwort darauf könnte ganz banal sein: Gerade Datenbankdateien á la Access setzen ein LOCK-Flag, damit nicht mehrere Instanzen gleichzeitig Änderungen vornehmen können.
    Eine dieser Instanzen könnte evtl. nicht ordnungsgemäß geschlossen worden sein, so dass der Zugriff fröhlich mit "file already in use" quittiert wird...

    Es gilt an der Stelle zu suchen und keineswegs im Quellcode.
    Der Hinweis auf Zeile 13 zeigt nur auf, wo der Fehler entstanden ist, nämlich beim Zugriff auf eine DB-Datei, die bereits verwendet wird.

    Bei fehlerhaften Zugangsdaten oder Firewall-Problem würde übrigens imho ein Access denied gesendet...

    Bitte nicht verallgemeinern!
    Wenn es "sauber" umgesetzt wird, missinterpretiert Google das (noch) nicht. Oder willst Du jetzt behaupten, dass alle Webpages, die Tabs, Accordeons, etc. verwenden Probleme mit Google bekommen?!

    Das Ausblenden oder auch Nachladen von Inhalten ist heute gängige Praxis, das weiß auch Google!
    Man muß nur schauen, dass man es richtig macht...

    Zitat

    dann sind aber ALLE mit der Class betroffen.. die es schon gibt
    eine Ausnahme gibt es nicht ..
    Wenn ich dann einzelne nicht möchte .. muss ich eine neue/zusätzliche Klasse denen zuweisen
    die es sein sollen
    und den anderen Elementen darf ich denen die Klasse
    eben nicht zuweisen..

    Ja, für einen sauberen Aufbau Deines DOM und die korrekte Zuordnung der Klassifizierungen, sofern diese durch Scripte nachträglich beeinflusst werden, bist DU zuständig.
    Dafür wird es kein 100%iges Script geben...

    Naja, wenn sich immer nur der Array-Index verändert/erhöht sollte klar sein, dass eine Schleife Sinn macht...

    Wobei ich die forEach-Variante bevorzugen würde: