Kategorien

Suchen


Aktuelle Artikel

Archiv

cakePHP

« Vorherige Beiträge

PHP: Zufallszeichenkette erzeugen (random string)

Montag, 08.03.2010

Um eine Zeichenkette (string) mit zufälligen Zeichen zu erzeugen, können Sie folgende PHP Funktion nutzen:

1
2
3
4
5
6
7
8
9
10
// Zufallsgenerator schütteln
mt_srand((double) microtime() * 1000000); 
 
// Basiszeichenpool
$set = "ABCDEFGHIKLMNPQRSTUVWXYZ123456789";
$pin = "";
 
// 10 stelligen PIN aus den o.a. Zeichen erzeugen
for ($n=1;$n<=10;$n++)
	$pin .= $set[mt_rand(0,(strlen($set)-1))];

Natürlich geht das o.a. PHP Script auch für längere Zeichenketten. Ersetzen Sie einfach die “10″ (Zeile 9) durch die gewünschte Anzahl an Zeichen.

In der Variablen “set” (Zeile 5) können Sie die Zeichen festlegen, aus denen der Zufallsgenerator Ihre Zeichenkette erstellen soll.

cakePHP: Wie überliste ich Cake / Sortierung ohne Paginierung

Freitag, 28.08.2009

Sie wollen ihre Daten, geholt über eine eigene Query anstatt über die Cake Paginierung, über die Sortierfunktionalität von Cake in der View sortierbar machen. Hierzu haben Sie bereits das entsprechende Element in der Kopfzeile der Tabelle integriert.
<th><?php echo $paginator->sort('Author', 'Author.name'); ?></th>
Da keine Paginierungsmethode im Controller genutzt wurde muss die Session für den PaginatorHelper entsprechend per Hand erstellt werden:
$options = array(
   'order' => array(
      $this->params['pass']['sort'] => $this->params['pass']['direction']
   )
);
$this->params['paging']['ModelName']['options'] = $options;
$this->params['paging']['ModelName']['defaults'] = $options;

cakePHP: Kompletten Filter in der Session speichern (Source)

Samstag, 08.08.2009

Um in cakePHP den aktuellen Filter von Formularen zu speichern, kann man jedes Feld einzelnd verarbeiten oder (viel einfacher) den kompletten Filter im Einzeiler speichern:

$_SESSION["NAME_IN_DER_SESSION"] = $this->data["Filter"];

Wenn der Filter automatisch geladen oder gespeichert werden soll, nutzen Sie folgenden Code:

// Filter in Session speichern oder aus Session laden
if (!empty($this->data["Filter"]))
  $_SESSION["NAME_IN_DER_SESSION"] = $this->data["Filter"];
elseif (!empty($_SESSION["NAME_IN_DER_SESSION"]))
  $this->data["Filter"] = $_SESSION["NAME_IN_DER_SESSION"];

In diesem Beispiel prüft cakePHP, ob ein Filter übergeben wird. Wenn ja, wird dieser in der Session abgelegt.
Wird kein Filter übergeben und ist ein Filter gespeichert, wird dieser Filter aus der Session eingelesen.

PHP: Jahreszahl auf Schaltjahr prüfen

Mittwoch, 08.07.2009

Nutzen Sie den folgenden Beispiel-Source um in PHP bei einer Jahreszahl zu prüfen, ob es ein Schaltjahr ist:

function is_leapyear($year = 2000) {
  return date('L', strtotime("$year-1-1"));
}

Beispielaufruf:

if (is_leapyear(2008))
  echo "2008 ist ein Schaltjahr";
else
  echo "2008 ist kein Schaltjahr";

cakePHP: OCIEnvNlsCreate() Fehler beheben

Mittwoch, 25.02.2009

Beim Zugriff auf Oracle Datenbanken über cakePHP kann die folgende Meldung auftreten:
Warning: ocilogon() [function.ocilogon]: OCIEnvNlsCreate() failed. There is something wrong with your system [...]
Wenn Sie den Oracle InstantClient auf dem Computer installiert haben, dann installieren Sie den Apache neu.

Wenn Sie XAMPP als Serverpaket einsetzen, benennen Sie Ihr aktuelles XAMPP um und installieren Sie XAMPP nochmals. Als Installationsziel wählen Sie das vorher genutzte XAMPP-Verzeichnis.

Danach können Sie die neue Installation einfach löschen (nicht deinstallieren !) und das vorher umbenannte Verzeichnis wieder zurück in den alten Namen umbenennen.

PHP: Array kürzen & bearbeiten

Freitag, 30.01.2009

Mit dem Befehl “array_slice()” können Arrays verkürzt werden. Dabei kann durch die Parameter festgelegt werden, ob das Array am Anfang oder am Ende oder am Anfang und Ende gekürzt wird:

Die Beispiele arbeiten alle mit dem folgenden Grundarray:

$alt = array("A","B","C","D","E","F","G","H","I");

Array am Anfang kürzen

Befehl:

$neu = array_slice($alt, 2);

Ergebnis:

$alt : "A","B","C","D","E","F","G","H","I"
$neu : "C","D","E","F","G","H","I"

Array am Ende kürzen

Befehl:

$neu = array_slice($alt, 0, count($alt) - 3);

Ergebnis:

$alt : "A","B","C","D","E","F","G","H","I"
$neu : "A","B","C","D","E","F"

Anfang und Ende kürzen

Befehl:

$neu = array_slice($alt, 4, count($alt) - 3 - 4);

Ergebnis:

$alt : "A","B","C","D","E","F","G","H","I"
$neu : "E","F"

Info:

Der Befehl kopiert ab Array-Position 4 die folgenden 2 Elemente:

Die Länge von $alt ist: count($alt) = 9
Dadurch ergibt sich: 9 – 3 – 4 = 2

PHP: Vergleichen von ähnlich klingenden (phonetisch gleichen) Wörtern

Mittwoch, 28.01.2009

Die Namen “Maier”, “Mayer”, “Meier”, “Mayr” und “Meyer” klingen gleich bzw. sehr ähnlich.

Um solche Wörter zu vergleichen und Ähnlichkeiten feststellen zu können, nutzen Sie die Funktion “soundex()”:

echo soundex("Maier");

Für jede der Schreibweisen erhalten Sie den Wert “M600″ – und dadurch können Sie zur Laufzeit die phonetische Ähnlichkeit von Wörtern berechnen.

Zur Kontrolle können Sie meinen Vornamen (“Malte”) testen:

echo soundex("Malte");

Das Ergebnis: “M430″ – also nicht sehr weit weg von “Meier”, aber eben doch deutlich zu unterscheiden.

cakePHP: Timeout setzen / Zeitlimit erhöhen

Freitag, 23.01.2009

Um in cakePHP (PHP) die maximal verfügbare Ausführungszeit eines Scripts zu verändern, nutzen Sie

set_time_limit(600);

Dieser Befehl setzt die max. Laufzeit des Scriptes auf 10 Minuten (= 600 Sekunden).
Diesen Befehl können Sie z.Bsp. zur Behebung der folgenden Meldung nutzen:

Fatal error: Maximum execution time of 60 seconds exceeded in /test.php on line 5

cakePHP: Keinen View nutzen

Freitag, 23.01.2009

Wenn nur eine Funktion ausgeführt werden soll, ohne dass anschließend ein View angezeigt wird setzen Sie in der entsprechenden Funktion einfach die folgenden beiden Variablen:

$autoLayout = false;
$autoRender = false;

Damit können Sie natürlich auch die Fehlermeldung “Missing View …” unterdrücken.

Text mit Tags (Platzhaltern) formatieren

Freitag, 23.01.2009

Sie möchten in einem Text definierte Bereiche (Tags) durch HTML Code oder andere Formatierungen ersetzen lassen und dabei selbst die Sequenzen (Namen, Format, …) bestimmen ?

Der folgende Codeschnipsel kann Ihnen die Lösung oder eine Vorlage bieten:

function FormatText($text) {

    // Definition der eigenen Tags (Formatierungsbefehle)
    $tags = array(
        'bold' => '/\[b\](.+)\[\/b\]/is',
        'center' => '/\[center\](.+)\[\/center\]/is',
        'quote' => '/\[quote\](.+)\[\/quote\]/is',
        'url' => '/\[url](.+)\[\/url\]/isU',
        'urltext' => '/\[url=(.+)\](.+)\[\/url\]/isU',
        'email' => '/\[email\](.+)\[\/email\]/isU',
        'img' => '/\[img\](.+)\[\/img\]/isU'
    );

    // Definition der HTML Tags
    $replace = array(
        'bold' => '<span style="font-weight: bold">$1</span>',
        'center' => '<center>$1</center>',
        'quote' => '<blockquote>$1</blockquote>',
        'url' => '<a href="$1" border="0">$1</a>',
        'urltext' => '<a href="$1" border="0">$2</a>',
        'email' => '<a href="mailto:$1">$1</a>',
        'img' => '<img src="$1">'
    );

    // Ersetzen der entsprechenden Passagen durch die HTML Tags
    return preg_replace($tags, $replace, $text);
}

Der Beispielcode in der Praxis:

Ihr Text mit den Formatierungstags:

$text = "Meine bevorzugte [b]Hilfeseite[/b] heißt [url]http://www.YourHelpCenter.de[/url]";

Wird mit dem folgenden PHP Befehl umgewandelt:

$html = FormatText($text);

Und so sieht das Ergebnis (der String in $html) aus:

Meine bevorzugte Hilfeseite heißt http://www.YourHelpCenter.de

Eine Übersicht der o.a.  Formatierungen gibt Ihnen der folgende Beispielcode.
natürlich lassen sich die Tags auch verschachteln oder kombinieren.

$demo = "[b]Fett[/b]
         [center]Zentriert[/center]
         [quote]Zitat[/quote]
         [url]http://www.yourhelpcenter.de/category/cakephp/[/url]
         [url=http://www.yourhelpcenter.de]Hier finden Sie kostenlose Hilfe und Tipps[/url]
         [email]info@yourhelpcenter.de[/email]
         [img]http://www.google.de/intl/de_de/images/logo.gif[/img]";

echo FormatText($demo);
« Vorheriger Beitrag