Um zu erkennen, wann eine Datei das letzte mal bearbeiten (bzw. commited) wurde ist es sehr hilfreich, wenn dies im Seitenkopf steht. SVN bietet hierzu eine einfache Möglichkeit an. die SVN:keywords.
Zur Aktivierung dieser nützlichen Funktion im Seitenkopf folgendes eintragen:
// File name: $HeadURL$
// Revision: $Revision$
// Last modified: $Date$
// Last modified by: $Author$
// $Id$
Und für die betroffenden Dateien noch die Property
svn:keywords
auf
Author Date Id Revision HeadURL
setzen.
Damit ersetzt Eclipse die genannten Variablen durch die entsprechenden Angaben aus Eclipse. Um die Property für alle Dateien zu setzen, einfach auf der Kommandozeile in das entsprechende Verzeichnis wechseln und mittels folgenden Befehl den Befehl svn probset svn:keywords ‘Author Date Id Revision HeadURL’ rekursiv auf alle Dateien ausführen die auf .php enden:
find -name \*.php -exec svn propset svn:keywords ‘Date Revision Author HeadURL Id’ {} \;
Nach dem nächsten commit über Eclipse zeigt der Eclipse Editor die entsprechenden Informationen im Kopf an. z.B:
// File name: $HeadURL: http://svn.mycompany/repository/src/myscript.php $
// Revision: $Revision: 45 $
// Last modified: $Date: 2010-06-20 17:18:17 +0200 (So, 20 Jun 2010) $
// Last modified by: $Author: omethfessel $
// $Id: myscript.php 45 2010-06-20 15:18:17Z omethfessel $
Natürlich kann man die gewählten Informationen auch einschränken. z.B. $Id$ enthält alles relevante in einer Zeile.
Vielen Dank die beide beiden Quellen:
Wer kennt es nicht: Man hat mehrere Datenbankabfrage im Rahmen einer Formularauswertung o.ä. auszuführen. Eine davon macht jedoch keinen Sinn, würden nur einige hiervor ausgeführt werden, andere nicht, so kommt es zu Dateninkonsistenz.
Die Abhilfe hierfür sind Transaktionen. Alle Befehle einer Transaktion werden erst durch einen abeschliessenden Commit ausführt.
Vernüftige DBMS können dies natürlich. So auch mySQL. In Verbindung mit PHP klappt dies auch hervorragend. Voraussetzung: Die Datenbank verwendet als Engine InnoDB für die betroffenden Tabellen.
Wir starten mit “START TRANSACTION;” die Transaktion:
MYSQL_QUERY(‘START TRANSACTION;’);
Mittels “COMMIT;” senden wir diese Befehle dann verbindlich an die Datenbank an:
MYSQL_QUERY(‘COMMIT;’);
Oder wir brechen den Vorgang einfach mit “ROLLBACK;” ab:
MYSQL_QUERY(‘ROLLBACK;’);
Und schon haben wir eine Sicherheit, dass kein Datenbankbefehl ausführt wird, wenn es bei einem ein Problem gibt, bzw das Script aus irgendwelchen Gründen auch immer abbricht.
Getestet mit PHP5, mySQL5
Derzeit passe ich für einen Kunden eine in Serbien entwickelte PHP Anwendung an neue Anforderungen an.
Abgesehen davon, dass die Kommentare sehr nett sind (mal in englisch, mal in serbisch) und ich mit micht serbischen Variablen rumärgere sind so manche Übersetzungen in der Ausgabe sehr nett.
Einige nette Beispiele:
- Artikals (für: Artikel)
- Die Datenbank wurde NICHT Tisch gewischt. (Für: Die Datenbank wurde nicht geleert.)
- Keine Datei erscheint hochgeladen haben oder es wurde gelöscht oder verschoben werden.
- Prüfen Sie, ob Ihre Datei sieht rechts in der Vorschau angezeigt. Wenn alle Ihre Daten in einer Spalte angezeigt wird, dann müssen Sie wahrscheinlich die Spalte separater.
- Bitte wählen Sie die Tabelle, in die Sie importieren möchten die CSV-Datei.
- Die Datenbank-Tabelle konnte nicht vernichtet werden. Möglicherweise verfügen Sie nicht über die approapriate Privilegien auf der Datenbank.
Man bedenke, dass die Anwendung seit einem Jahr produktiv läuft und vom Kunden teuer bezahlt wurde. Die Zielgruppe sind Anwender, die den Computer gerade so anbekommen, eine Anwendung öffnen und froh sind, dass die das macht was man hofft sie macht.
Letzte Kommentare