WordPress-Editor – WYSIWYG funktioniert nicht – TinyMCE not defined – Plugin schuld

Schock! Da waren doch beim Artikelschreiben in WordPress plötzlich diese tollen Buttons zum Fettschreiben, Aufzählen etc. weg. Wenn euch das mal passiert: Keine Panik! Der Fehler muss irgendwo liegen. Normalerweise sieht der WordPress-Editor oberhalb des Artikels so aus.

WordPress-Editor – Button-Leiste WYSIWYG vorhanden
WordPress-Editor – Button-Leiste WYSIWYG vorhanden

Aber sollte mal im Wordpress-Editor die WYSIWYG-Funktion nicht funktionieren, also diese Button-Leiste oberhalb eines Artikels fehlen, dann kann es verschiedene Ursachen haben. Ich hatte auch dieses Problem. Ich verwende auf allen Webseiten WordPress 3.5.1 und ein paar Plugins. Die fehlende Leiste hatte ich aber nur auf einem WordPress-System.

Wordpress-Editor - Button-Leiste WYSIWYG fehlt
WordPress-Editor – Button-Leiste WYSIWYG fehlt

Folgende Ursachen hab ich dazu im Internet gefunden: Einerseits kann euer Provider durch eine Änderung der Konfiguration unbewußt einen Fehler verursachen, oder euer Browser spinnt oder euer WordPress-System. Checkt zuerst mal über die Fehlerkonsole (Firefox), welche Meldungen euch angezeigt werden.

WordPress-Editor – WYSIWYG-Leiste weg – Fehlerkonsole starten
WordPress-Editor – WYSIWYG-Leiste weg – Fehlerkonsole starten

Wichtig ist, dass Ihr euch die Fehler anzeigen lasst und im WordPress-Editor einmal auf „Text“ bzw. „Visuell“ oberhalb des Artikels klickt. In meinem Fall kam diese Fehlermeldung: „ReferenceError: tinyMCE not defined“

WordPress-Editor – Fehlerkonsole zeigt tinyMCE als Ursache
WordPress-Editor – Fehlerkonsole zeigt tinyMCE als Ursache

Was das im Detail bedeutet habe ich nicht weiter nachverfolgt. Aber bei den Plugins hab ich mal genauer hingeschaut. Und siehe da. Bei mir ist das WordPress-Plugin „StatPress“ in der Version 1.4.1 die Ursache. Wenn ich dieses deaktiviere, dann taucht die Button-Leiste des WYSIWYG-Editors wieder auf.

Wordpress-Editor  - WYSIWYG-Leiste weg - Plugin schuld
WordPress-Editor – WYSIWYG-Leiste weg – Plugin schuld

Merkwürdig: Nur auf einem Webpaket habe ich diesen Fehler… Welche Ursache & Lösung habt ihr gefunden?

Update vom 24.02.2013 um 19:25 Uhr: Das StatPress-Plugin selbst ist wohl weniger die Ursache, sondern eine Einstellung im Speicherlimit von PHP in der Variable „memory_limit“. Nach Änderung von 40M auf die maximal verfügbaren 64M erscheint die Button-Leiste incl. aktiviertem StatPress.

Cloud Business Development: Google Drive hat Potential vs. Amazon, Paypal & Co.

Ich hab mich gestern erstmalig in Google Drive umgeschaut und mir die verschiedenen Features wie das Erstellen einer Tabelle oder eines Skriptes angeschaut. Nette Features und erst recht, wenn man sich die Details genauer betrachtet!

In einem Blogbeitrag bei Terrashop hier vom April dieses Jahres wurde Google Drive auch schon mal unter die Lupe genommen, aber das Thema „Skripte“ nicht erwähnt. Vielleicht ist diese Funktion erst vor wenigen Wochen dazugekommen oder der Autor von Terrashop wußte damit nichts anzufangen. Wer weiß…

Ich meine, dass Google Drive schon ein Killer werden könnte und zwar aus folgenden Gründen:

  1. Google Drive bietet kostenlosen Speicherplatz, analog wie bei Dropbox, Microsoft SkyDrive und im 1&1 Paket.
  2. Man kann in Google Apps Script online programmieren (Cloud Coding). Von der Programmiersprache her wie JavaScript:
    Beispiel: var button = app.createButton(‚Show label‘);
  3. Für die Erstellung von Oberflächen biete Google Apps Script einen Oberflächendesigner an.
  4. Das was man dann online programmiert hat, kann man als App veröffentlichen (und natürlich versionieren).
  5. Dann bietet Google mit Google Checkout einen Bezahldienst an, der sich um die ganze Abrechnung mit dem Kunden kümmert.
  6. Und diese verschiedenen Google Dienste kann man miteinander verküpfen. Also zum Beispiel eine programmierte App  in eine Google Site einbetten, dabei die erfassten Daten in Google Tabellen speichern und abrufen und über Google Checkout abrechnen.

Was wäre also möglich: Aufbau eines Online-Shops für virtuelle Güter oder Dienste oder reale Dienstleistungen mit Bezahlsystem auf gehosteten Systemen. Und das alles bei Google.

Das ganze wird im bewährten Google-Stil sicherlich hochperformant auf den Google Servern bereitgestellt… analog den Amazon Diensten fürs Cloud Computing. Und der Benutzer kann die Waren/Dienstleistungen bezahlen, wo Google sich wiederum um das Geld eintreiben kümmert.

Meine Meinung: Zähle ich 1 und 1 zusammen, dann hat Google Drive durchaus Potential gegenüber den einzelnen Cloud-Lösungen von DropBox, Amazon und Paypal. Es fehlt zwar noch die Glaubwürdigkeit, dass ein Kunde wirklich über einen Dienst von Google einen Bezahlvorgang durchführen wird, aber für mich als Entwickler (der im übrigen sein Fachwissen aus einem Informatik-Fernstudium gewonnen hat) bietet das Package einen gewissen Charme: Alles aus einer Hand für kleines Geld.

Ich ganze nenn das mal zusammenfassend Cloud Business Development 😉

PS: „Kleines Geld“ deswegen, weil die Gebühren für den Bezahldienst hier recht human sind und der kostenlose Speicherplatz mit 5GB eine Weile ausreichen sollte. Ob die entwickelten Apps wirklich auf den Speicherplatz angerechnet werden weiß ich nicht hundertprozentig. Glaubt man der Aussage von Google Drive „Nur abgelegte Dateien (PDF, DOC, JPG usw.) belegen Speicherplatz. Google Docs-Formate tun dies nicht.“ (aus den Einstellungen hier) , dann stellen online entwickelte Dateien keine abgelegte Datei dar und werden somit nicht auf den Speicherplatz angerechnet.

In diesem Sinne: Happy cloud business development!!!

In WordPress Bildernamen für Google optimieren

Webdesigner und SEO’s kennen das Problem von schlechten Dateinamen von Bildern. Da kommt ein Kunde mit seiner bestehendne WordPress-Webseite als Optimierungs-Auftrag hinzu und man stellt fest, dass die Bildernamen in WordPress so graussig sind wie „IMG_2028323.jpg“ oder „bild_15_nachbearbeitet.jpg“.

Mich traf nun auch so ein Fall mit über 300 Bildern und einer sehr schlechten suboptimalen Namensgebung. Die Kunden-Webseite war normal mit WordPress eingerichtet, sieht vom Design her gut aus, aber hatte keinerlei WordPress-Plugins oder sonstige Optimierungen vorzuweisen.

Die Aufgabe bestand nun darin, dass einerseits die Webseite und vor allem auch die Bilder mehr Besucher von Google und anderen Suchmaschinen anziehen, als die bisher maximal 25 Besucher pro Tag.

Anzeige: WordPress-Programmierung mit dem HTML5 Builder lösen

Da ich Informatik über ein Fernstudium absolviert habe und auch sonst ein bequemer Mensch in Sachen Automatisierung bin, habe ich mir überlegt ein PHP-Script zur Umbenennung von Bildernamen in WordPress zu erstellen.

Den Kunden konnte ich davon überzeugen, dass er in der WordPress Mediathek (da wo in WordPress die Bilder und Anhänge verwaltet werden) die Bildtitel mit passenden Schlüsselwörtern (Keywords) abändert. Damit könnte ich dann die Dateinamen der Bilder in der MySQL-Datenbank und in den Verzeichnissen abändern.

Die Titel der Bilder waren durch den Kunden nach einigen Tagen geändert und für mich ergab sich dann auch ein neues Problem, dass einige Titel doppelt vergeben und andere mit ä,ö und ü benannt wurden. Dazu kam noch die Feststellung, dass WordPress beim Upload über die Mediathek diese kleinen Vorschaubilder in den Größen 150×150 und 300×300 anlegt.

Hier nochmal der Fahrplan zum Optimieren von Bildernamen in WordPress:

  1. In WordPress: Ändern der Bildittel in Mediathek durch Kunden
  2. In MySQL-Datenbank: Doppelte Bildtitel in WordPress suchen
  3. In MySQL-Datenbank: Liste mit Bildern heraussuchen
  4. In MySQL-Datenbank: Jeden Dateinamen anhand des Bildtitels ändern
  5. im Verzeichnis: Jeden Dateinamen anhand des Bildtitels ändern

Den ersten Punkt kann der Kunde relativ einfach und selbstständig durchführen, da dies den Kunden aktiv mit einbindet und mir selbst die Möglichkeit gibt in einen neuen Bereich an Hand der Schlüsselwörter reinzuschauen.

Der zweite Punkt der doppelten Einträge entstand zwangsläufig . Der Kunde konnte sich natürlich nicht alle Bildtitel merken und so vergab er für einige Bilder auch mehrfach den gleichen Bildtitel. Dieses Problem muss behoben werden, da sonst gleiche Dateinamen und somit Fehler in der Webseite entstehen würden. Zur Suche und Behebung der doppelten Einträge dieses kurze SQL-Script:

SELECT id, post_title, COUNT( *  ) AS counter FROM wp_posts GROUP BY post_title HAVING counter >1

Das Ergebnis ist eine Liste von Titeln mit der jeweiligen Anzahl. Die Anzahl von Titeln von z.Bsp. Kategorien ist meist größer 1. Die Titel von Bildern sollten in der Liste nicht auftauchen. Sollte doch ein Bildtitel 2 oder mehrfach vorhanden sein, so kann man diesen in der Mediathek suchen oder einfach mit diesem Script in PHPMyAdmin aufrufen und per Hand editieren:

SELECT * FROM `wp_posts` WHERE `ID` = id

Hat man dann alle doppelten Bilditel gefunden und korrigiert, so kann man mein fertiges Script nutzen, um die anderen Punkte durchzuführen. ABER ACHTUNG: Vorher eine Sicherung der Datenbank ausführen!!!

Hinweis: Alle schreibenden Eingriffe in die Datenbank und im Verzeichnis sind deaktiviert. Das PHP-Script ist somit ungefährlich.

<?php

// 1. Hinweis: Vor dem Ausführen eine Sicherung der Datenbank durchführen!!!
// 2. Hinweis: Vor dem Ausführen sollten die Update-SQL-Befehle und der Copy-Befehl deaktiviert werden

$show_all = "";  // Liste zum Checken der optimierten Dateinamen... wird ganz am Ende angezeigt
$_global_to_replace = ""; // so was wie eine globale variable

// hier die eigenen datenbank-daten eintragen
$mysqldb   = 'YOUR_MYSQL_DB_HERE';
$mysqluser = 'YOUR_MYSQL_USER_NAME';
$mysqlpwd  = 'YOUR_MYSQL_PASSWORD';
$mysqlhost = 'localhost';

// mysql-datenbank-verbindung aufbauen
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

// SQL-Anfrage zum Holen einer Liste mit den Bildern
$query  = "SELECT meta_id, post_id, meta_key, meta_value FROM `wp_postmeta` WHERE `meta_key` LIKE '_wp_attached_file' ";

// SQL-Abfrage an Datenbank schicken
$result = mysql_query($query);

// SQL-Anfrage anzeigen
echo "SQL-Query: $query<br>";

// SQL-Ergebniss durchlaufen
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    // SQL-Ergebnisse einzeln anzeigen
    echo "<strong>meta_id</strong> {$row['meta_id']} ".
         "<strong>post_id</strong> {$row['post_id']} ".
         "<strong>meta_key</strong> {$row['meta_key']} ".
         "<strong>meta_value</strong> {$row['meta_value']} <br>";

    // zur besseren Lesbarkeit den folgenden Kram einrücken
    echo "<blockquote>";

    // für jedes einzelnes Bild die Details holen post_id wird von der Liste verwendet
    $query2 = "SELECT * FROM `wp_posts` WHERE `ID` = {$row['post_id']}";

    // SQL-Abfrage an Datenbank schicken
    $result2 = mysql_query($query2);

    // SQL-Abfrage anzeigen (zur Sicherheit)
    echo "SQL-Query: $query2<br>";

    // SQL-Ergebnisse einzeln verarbeiten
    while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC))
    {
        // Titel des Bildes anzeigen... den der in der Mediathek geändert wurde
    	echo "<strong>post_title</strong> {$row2['post_title']} <br>";

        // Uninteressante Bilder haben als Bildtitel den Dateinamen
        // SQL-Ergebniss wird daher auf .jpg untersucht
    	if (substr($row2['post_title'],-4) == ".jpg")
    	{
    		echo ".jpg im Titel gefunden ... kann ignoriert werden<br>";
    	}
    	else
    	{
    		echo "Kein .jpg im Titel gefunden ... muss optimiert werden<br>";

                // Bild-Dateinamen sollten Bindesstrichen enthalten
                // Liste von zu suchenden Titel-Inhalten
    		$_suche_nach = array(" / ", " - "," ( "," )"," ",".","--");

                // neuen optimierten Dateinamen zusammenbauen... also Titel kleinschreiben und Kommas etc. entfernen
    		$new_post_title = "keyword-".strtolower(str_replace($_suche_nach,"-",$row2['post_title']));

                // neuen titel anzeigen
     		echo "new_post_title: ".$new_post_title."<br>";

                // neuen titel zur gesamtliste hinzufügen... wird sonst hier zu unübersichtlich
		$show_all = $show_all.$new_post_title."<br>";  

                // da die Bilder in der Datenbank mit Verzeichnis gespeichert sind muss der Bildname rausgesucht werden
                // als erste die position des letztens vorkommens suchen...
                $_start = strrpos($row['meta_value'],"/");

                // als zweites die position des beginns von .jpg suchen
	        $_ende = strrpos($row['meta_value'],".jpg");

                // ersetzen und zusammenbauen und anzeigen.. bla bla bla ;-)
		$_to_replace     = substr($row['meta_value'],$_start+1, $_ende-$_start-1);
		$_old_post_title = $row['meta_value'];
		$_new_post_title = substr_replace($row['meta_value'], $new_post_title, $_start+1, $_ende-$_start-1);
		echo "<br>";
		$_global_to_replace = $_to_replace;
		echo "pre: ".$_to_replace."<br>";
		echo "old: ".$_old_post_title."<br>";
		echo "new: ".$_new_post_title;

                echo "<br><br>";

		$query2a = "SELECT * FROM `wp_posts` WHERE `ID` = {$row['post_id']}";
		$result2a = mysql_query($query2a);
		echo "SQL-Query: $query2a<br>";
		while ($row2a = mysql_fetch_array($result2a, MYSQL_ASSOC))
		{
		   	echo "<strong>post_name</strong> {$row2a['post_name']} <br>";
			echo "<strong>post_title</strong> {$row2a['post_title']} <br>";
		    	echo "<strong>guid</strong> {$row2a['guid']} <br>";
		    	$_guid = $row2a['guid'];
		    	$_guid_start = strrpos($_guid,"/");
		    	$_guid_ende = strrpos($_guid,".jpg");
		    	$_guid_new = substr_replace($_guid,$new_post_title,$_guid_start+1,$_guid_ende-1-$_guid_start);

                        // ändern der optimierten titel in mysql-datenbank
                        $query_update0 = "UPDATE `wp_posts` SET `post_name` =  '$new_post_title', `guid` = '$_guid_new' WHERE `wp_posts`.`ID` ={$row2a['ID']};";
			//mysql_query($query_update0);  // den hier mit zwei schrägstrichen aussperren, wenn ihr euch unsicher seit!
			echo $query_update0;
		}

  	        echo "<br><br>";

		$query3 = "SELECT * FROM `wp_postmeta` WHERE `post_id` = {$row['post_id']} and `meta_key`= '_wp_attachment_metadata'";
		$result3 = mysql_query($query3);
		echo "SQL-Query3: $query3<br>";
		while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC))
		{
		    	echo "<strong>meta_id</strong> {$row3['meta_id']} <br>";
			echo "<strong>meta_value</strong> {$row3['meta_value']} <br>";
		    	$_new_postmeta = str_replace($_to_replace,$new_post_title,$row3['meta_value']);
		    	echo "<strong>to update:</strong> ".$_new_postmeta."<br>";

                        // zweites ändern der optimierten titel und bildnamen in mysql-datenbank
		    	$query_update1  = "UPDATE `widge34ed`.`wp_postmeta` SET `meta_value` =  '$_new_postmeta' WHERE  `wp_postmeta`.`meta_id` ={$row3['meta_id']};";
		    	//mysql_query($query_update1);
		    	echo $query_update1;
		}

		echo "<br><br>";

		$query4 = "SELECT * FROM `wp_postmeta` WHERE `post_id` = {$row['post_id']} and `meta_key`= '_wp_attached_file'";
		$result4 = mysql_query($query4);
		echo "SQL-Query: $query4<br>";
		while ($row4 = mysql_fetch_array($result4, MYSQL_ASSOC))
		{
		    	echo "<strong>meta_id</strong> {$row4['meta_id']} <br>";
			echo "<strong>meta_value</strong> {$row4['meta_value']} <br>";

                        // finales ändern der optimierten titel und bildnamen in mysql-datenbank
		    	$query_update2 = "UPDATE `wp_postmeta` SET `meta_value` =  '$_new_post_title' WHERE  `wp_postmeta`.`meta_id` ={$row4['meta_id']};";
		    	//mysql_query($query_update2);
		    	echo $query_update2;
		}

		// Kopieren der alten Bilddateien aber mit neuem optimierten Dateinamen

                // Verzeichnis wo die Dateien liegen... vorher checken, wo die Bilder liegen!
		$dir = "/www/htdocs/website/wp-content/uploads/2009/07/";
		foreach (glob($dir.$_global_to_replace."*.*") as $filename) {
 				$source = $filename;
 				$dest = str_replace($_global_to_replace,$new_post_title,$filename);
				echo "Quelle: ".$source."<br>";
				echo "Ziel: ".$dest."<br>";
				echo "copy >>> ".copy($source,$dest)." <<<";  // diesen copy-befehl bei bedarf deaktivieren
		}
 		echo "<br>";
    	}
    }
    echo "</blockquote>";
}
echo "<hr>";
echo $show_all;  // vor den Update-Befehlen sollte diese Lite noch mal gecheckt werden!

mysql_close($connection);
?>

Das Kopieren der Bilder mit neuem Dateinamen dient zur Sicherheit, falls man einen Fehler macht.  Die Update-Befehle sollte man unbedingt beim ersten Test deaktiviert lassen, damit man prüfen kann, ob diese korrekt wären.

Mit Sicherheit muss man das Script anpassen, wenn Bilder in verschiedenen Monaten hochgeladen wurden und somit in verschiedenen Dateiordnern liegen. Genauso habe ich hier keine PDF-Dateien oder ähnliches beachtet.

Wer Fragen oder Verbesserungen zum Script hat: Per Kommentar melden, vielleicht kann ich helfen.

PS: Die Verwendung des PHP-Scriptes erfolgt auf eigene Gefahr. Ich übernehme keinerlei Haftung.

WordPress 2.6.2 Mediathek optimieren

WordPress ist für einen Blog in meinen Augen das ideale Werkzeug. WordPress ist leicht zu installieren, läßt sich wunderbar mit Plugins erweitern und kann bei Bedarf auch noch indivuell angepasst werden.

Im aktuellen Fall bereite ich einen existierenden WordPress-Blog für die Nutzung durch andere Autoren vor. Der Blog selbst läuft in der deutschen WordPress-Version 2.6.2 und hat die üblichen Plugins.

wp-optimieren

Damit ein anderer Autor neue Artikel als Vorschlag einstellen kann, bietet es sich an, dass man ihm die Rolle als „Mitarbeiter/Contributor“ zuweist. Doch nach dem ersten Test stellte ich sofort fest, dass die Berechtigungen nicht optimal gestaltet waren.

Zum einem verweigerte WordPress dem Benutzer den Media-Upload und zum anderen (das stellte ich nach Lösung des ersten Problems fest) durfte der User die Bilder anderer User löschen.

Nun ja. Ich bin ja kein Dummer und eigentlich ganz clever, also hab ich mich mal auf die Suche gemacht, um das WordPress-Optimierungs-Problem zu lösen.

Zur allgemeinen Info… Ich verwende einen handelsüblichen FTP-Client und zum Coden in PHP den phpDesigner (natürlich lizenziert, weil selbst bezahlt!).

Anzeige: WordPress-Programmierung mit dem HTML5 Builder lösen

Also… Die Berechtigungen einer Benutzerrolle in WordPress ist recht simpel. Es gibt eine Reihe von Berechtigungen, die jeder Benutzerrolle zugewiesen sind. Der Media-Upload ist dabei eine eigene Berechtigung mit dem Namen „upload_files“.

Berechtigungen für Benutzerrollen in WordPress kann man knallhart direkt in der Datenbank ändern. Wer sich die Struktur schon mal angeschaut wird jedoch feststellen, dass dies wahrlich kein schöner Anblick ist. Sicherlich perfekt für ein Blog-System umgesetzt, jedoch für den schnellen Handgriff weniger geeignet.

Aber es gibt ja tolle Plugins für jede erdenkliche Aufgabe in WordPress. Ein einfaches aber prima Tool für die Verwaltung der Benutzerrollen und -berechtigungen habe ich mit „role-Manager“ gefunden.

„role-Manager“ runterladen, installieren und Benutzerrolle „contributor“ erweitern. Auch bei jeder Benutzer den man ändern will, kann man die Berechtigungen noch individuell setzen. Somit wäre Problem 1 also gelöst. Mein Benutzer vom Typ „Mitarbeiter/Contributor“ darf Bilder in WordPress hochladen.

Damit ergab sich dann jedoch ein zweites Problem. Der Benutzer darf zwar jetzt prima hochladen, aber er darf auch alle Media-Dateien löschen… Ganz schlecht, wenn man es richtig machen will. Erkennen könnt ihr die fehlerhafte Berechtigung hier: Login als Mitarbeiter > Dashboard > Verwalten >Mediathek. Jedes Bild hat eine CheckBox die durch Aktivierung zum Löschen verwendet werden kann.

Auf der Suche nach der Quelltextstelle schaute ich mir die korrekte Arbeitsweise bei den Artikeln an. Dort ist das Prinzip schon umgesetzt, dass ein Mitarbeiter nur seine eigenen Artikelentwürfe löschen darf. Also rein in den Quelltext und suchen. Folgendes findet man in der WordPress-Datei „edit-post-rows.php“:

<th scope="row" class="check-column">
  <?php if ( current_user_can( 'edit_post', $post->ID ) ) { ?>
    <input type="checkbox" name="delete[]" value="<?php the_ID(); ?>" />
  <?php } ?>
</th>

In der WordPress-Datei „edit-attachment-rows.php“, wo das Löschen der Media-Dateien niedergeschrieben steht, findet man jedoch den Freifahrtsschein:

<th scope="row" class="check-column">
  <input type="checkbox" name="delete[]" value="<?php the_ID(); ?>" />
</th>

Also hab ich einfach mal das komplette Stück Quelltext da reingesetzt und es funktionierte. Der Benutzer sieht in der Mediathek nicht mehr die Checkbox zum Löschen.

Aber es gibt noch eine zweite Stelle, wo man Bilder löschen kann! Und zwar beim Schreiben eines Artikels und der dortigen Mediathek-Funktion bei „Bild hinzufügen“. Der Löschen-Link ist etwas versteckter, aber auch leicht zu entfernen. Im Ordner „wp-admin/includes“ befindet sich die Datei „media.php“. Packt einfach jeweils 2 Schrägstriche vor diese Zeilen und weg ist der Löschen-Link:

//if ( $delete )
//	$delete = "<a href=\"#\" class=\"del-link\" onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __('Delete') . "</a>";

Ob das nun der allerkorrekteste Weg war weiß ich nicht, aber da lass ich mich gern von euch belehren.

In diesem Sinne weiterhin viel Spaß mit WordPress 🙂

Gruß Micha

Python und MySQL – Einstieg

I LOVE Python!

Ach was ist das für eine nett süße Programmiersprache dieses Python. Und so einfach und mächtig zugleich… IRRE!

Ja wirklich jetzt. Ich mag Python sehr, da es mit wenig Aufwand kleine und größere Probleme lösen kann, sofern man programmieren kann 😉

Anhand eines einfachen Beispiels in Python kann ich euch die Programmiersprache mal etwas näher bringen.

# ich bin ein kommentar

# jetzt folgt eine schleife mit 2 wiederholungen
for i in range(0,2):
    # try = Versuch ... genereller Einstieg
    try:
        print "ich bin eine ausgabe - Durchlauf %s" % (str(i))
    # except = Ausnahme ... Ausstieg, wenn etwas schief geht
    except:
        print "ein fehler ist aufgetreten"

print "script ist fertig"

Doch wie fängt der Anfänger nun mit Python an!?

Python für Beginner:

1. Download von Python… hier klicken

2. Download von Stanislav Python Editor (SPE) … hier klicken

3. Code-Beispiel in SPE kopieren, speichern und mit F9 starten

Das Ergebniss sollte dann so aussehen:

ich bin eine ausgabe – Durchlauf 0

ich bin eine ausgabe – Durchlauf 1

script ist fertig

Script terminated.

MySQL Lite für Beginner:

Wenn zusätzlich noch eine lokale Datenbank wie MySQL benötigt wird:

1. Download von XAMPP Lite wegen MySQL-Datenbank… hier klicken

2. Installation und Einrichtung von XAMPP… hier klicken

3. XAMPP Control öffnen und dort „Apache“ und „MySQL“ starten

4. XAMPP testen… http://localhost/

Soweit erstmal dazu… Beim nächsten mal gibt es mehr Python

Gruß Micha