Eurokicker
-


Hinweise


Thema geschlossen
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 28.07.2007, 01:49   #1
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

Die TP Code-Schnipsel Sammlung


Hallo Dynamiker

In diesem Sammelthread, der kontinuierlich ausgebaut wird, sollen zukünftig nützliche Code-Schnipsel und Funktionen bereitgestellt werden, die einem das Programmierer-Leben erleichtern sollen.
Damit die Übersichtlichkeit gewahrt bleibt ist dieser Thread geschlossen und kann nur durch TP-Mitarbeiter erweitert werden. Das heißt aber nicht das Du nicht aktiv am Ausbau der Sammlung teilnehmen kannst, ganz im Gegenteil - es ist sogar ausdrücklich erwünscht das Forum Mitglieder ihren Teil dazu beitragen!

Wenn Du also einen nützlichen Code-Schnipsel, respektive Funktion, hast die auch anderen Programmierern Arbeit abnehmen können, zögere nicht diesen per PN an mich oder einen anderen Moderator zu schicken. Allerdings bitten ich Dich um Verständnis falls der Code nicht in die Sammlung aufgenommen wird, da wirklich nur die nützlichsten Schnipsel aufgeführt werden sollen. Bei komplexeren Snippets bitte nicht vergessen den Code zu kommentieren, damit man auch sofort weiß um was es geht.
Jetzt aber viel Spaß beim stöbern


Themenübersicht / Inhalt

Geändert von Rizzo (29.07.2007 um 00:06 Uhr).
Rizzo ist offline  
Linktipp

Alt 28.07.2007, 01:50   #2
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

Array-Funktionen


Mehrdimensionales Array nach Kriterien sortieren. Hier geh't zum original Thread

PHP-Code:
<?php
function get_orderarray($order)
{
        
$order_arr =array();
        
$orders=explode('|',$order);
        foreach (
$orders as $o)
        {
                
$d=explode(',',$o);
                
$order_arr[]=array($d[0],$d[1]);
        }
        return 
$order_arr;
}

// extended to allow sort direction per field sorted against
function arfsort_func$a$b ){
  foreach( 
$GLOBALS['__ARFSORT_LIST__'] as $f ) {
    switch (
$f[1]) { // switch on ascending or descending value
      
case "d":
        
$strc strcmpstrtolower($b[$f[0]]), strtolower($a[$f[0]]) );
        if ( 
$strc != ){
          return 
$strc;
        }
      break;
      case 
"a":
        
$strc strcmpstrtolower($a[$f[0]]), strtolower($b[$f[0]]) );
        if ( 
$strc != ){
          return 
$strc;
        }
      break;
      case 
"D":
        
$strc = (floatval($b[$f[0]])<floatval($a[$f[0]])) ? -1:1;
        if (
$b[$f[0]]!=$a[$f[0]])
        {
          return 
$strc;
        }
      break;
      case 
"A":
        
$strc = (floatval($b[$f[0]])>floatval($a[$f[0]])) ? -1:1;
        if (
$b[$f[0]]!=$a[$f[0]])
        {
          return 
$strc;
        }
      break;
    }
  }
  return 
0;
}

function 
arfsort$a$fl )
{
  
$GLOBALS['__ARFSORT_LIST__'] = $fl;
  
usort$a'arfsort_func' );
  return 
$a;
}

/*
Anwendung:
$sortiertes array = arfsort( $array, get_orderarray($order));

$order => 'feldname,Richtung+Typ|feldname2,Richtung+Typ|...'

a=ascending (aufsteigend nach Stringlogik)
d=descending (absteigend nach Stringlogik)
A=ascending (aufsteigend nach Wertelogik)
D=descending (absteigend nach Wertelogik)
*/

// Anwendungsbeispiel

$array=array(
=> array(
    
'Nachname' => 'Muster',
    
'Name' => 'Otto',
    
'Alter' => 27,
    
'Skills' => array('PHP'=>8,'MySQL'=>6,'C++'=>2)
    ),
=> array(
    
'Nachname' => 'Müller',
    
'Name' => 'Heinz',
    
'Alter' => 46,
    
'Skills' => array('PHP'=>2,'MySQL'=>9,'C++'=>9)
    ),
=> array(
    
'Nachname' => 'Müller',
    
'Name' => 'Otto',
    
'Alter' => 24,
    
'Skills' => array('PHP'=>8,'MySQL'=>7,'C++'=>2)
    )
);

echo 
"<pre>";
echo 
"Array vorher:<br>";
print_r($array);
echo 
"-------------------------------------<br>";
echo 
"Sortiert nach Nachname und anschließend nach Vorname aufsteigend:<br>";
print_r(arfsort($arrayget_orderarray('Nachname,a|Name,a')));
echo 
"-------------------------------------<br>";

echo 
"Sortiert nach PHP-Skills absteigend, bei Gleichheit nach Alter aufsteigend:<br>";
print_r(arfsort($arrayget_orderarray('PHP,A|Alter,A')));
echo 
"-------------------------------------<br>";

echo 
"Sortiert nach MySQL-Skills absteigend, dann nach PHP-Skills absteigend - bei Gleichheit nach Alter aufsteigend:<br>";
print_r(arfsort($arrayget_orderarray('MySQL,D|PHP,D|Alter,A')));
echo 
"-------------------------------------<br>";

echo 
"</pre>";

?>

Geändert von Rizzo (01.08.2007 um 16:43 Uhr).
Rizzo ist offline  
Alt 28.07.2007, 01:51   #3
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

Datenbank-Funktionen


Noch keine Beiträge vorhanden

Geändert von Rizzo (29.07.2007 um 00:06 Uhr).
Rizzo ist offline  
Alt 28.07.2007, 01:51   #4
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

Dateisystem


Noch keine Beiträge vorhanden

Geändert von Rizzo (29.07.2007 um 00:07 Uhr).
Rizzo ist offline  
Alt 28.07.2007, 01:52   #5
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

Datum-Funktionen


PHP-Code:
/* **************************************************** */
/* ***   MySQL Datum in deutsches Datum umwandeln   *** */
/* **************************************************** */
function DatumsWandler$Datum$separator NULL )
{
    if (
strlen$Datum ) == 10)
    {
        
$GewandeltesDatum substr$Datum8);
        
$GewandeltesDatum .= ".";
        
$GewandeltesDatum .= substr$Datum5);
        
$GewandeltesDatum .= ".";
        
$GewandeltesDatum .= substr$Datum0);
        return 
$GewandeltesDatum;
    }
    else if (
strlen$Datum ) == 19)
    {
        
$GewandeltesDatum substr$Datum8);
        
$GewandeltesDatum .= ".";
        
$GewandeltesDatum .= substr$Datum5);
        
$GewandeltesDatum .= ".";
        
$GewandeltesDatum .= substr$Datum0);
        if (
gettype$separator ) == "string")
        {
            
$GewandeltesDatum .= " " .$separator;
        }
        else if (
gettype$separator ) == "integer")
        {
            for (
$i 1$i <= $separator$i++)
            {
                
$GewandeltesDatum .= "&nbsp;";
            }
        }
        
$GewandeltesDatum .= substr$Datum10 );
        return 
$GewandeltesDatum;
    }
    else
    {
        return 
FALSE;
    }


Geändert von Rizzo (29.07.2007 um 00:07 Uhr).
Rizzo ist offline  
Alt 28.07.2007, 01:53   #6
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

Grafik-Funktionen


JPG-Bild mit einem Wasserzeichen versehen, wobei die Position des WZ bestimmt werden kann
PHP-Code:
/* ******************************************* */
/* ***   Bild mit Wasserzeichen versehen   *** */
/* ******************************************* */
function Wasserzeichen$originalbild$wzgrafik$ausrichtung )
{
    
$bild imagecreatefromjpeg$originalbild );
    
// Bildtyp des Wasserzeichens ermitteln
    
switch (substr$wzgrafik, -))
    {
        case 
"jpg"$wasserzeichen imagecreatefromjpeg$wzgrafik ); break;
        case 
"png"$wasserzeichen imagecreatefrompng$wzgrafik ); break;
        case 
"gif"$wasserzeichen imagecreatefromgif$wzgrafik ); break;
    }
    
    
// Bild Infos
    
$bildbreite imagesx$bild );
    
$bildhoehe imagesy$bild );
    
    
// Wasserzeichen Infos
    
$wasserzeichenbreite imagesx$wasserzeichen );
    
$wasserzeichenhoehe imagesy$wasserzeichen );
    
    
// Bilder erzeugen
    
$neuesbild imagecreatetruecolor$bildbreite$bildhoehe );
    
    
// Originalbild in neues Bild einfügen
    
imagecopy$neuesbild$bild0000$bildbreite$bildhoehe );
    
    
// Position des Wasserzeichen ermitteln und einfügen
    
switch ($ausrichtung)
    {
        case( 
"ol" ): $poben 0$punten 0; break;
        case( 
"om" ): $poben round$bildbreite-$wasserzeichenbreite )/2$punten 0; break;
        case( 
"or" ): $poben round$bildbreite-$wasserzeichenbreite ); $punten 0; break;
        case( 
"ml" ): $poben 0$punten round$bildhoehe-$wasserzeichenhoehe )/2; break;
        case( 
"mm" ): $poben round$bildbreite-$wasserzeichenbreite )/2$punten round$bildhoehe-$wasserzeichenhoehe )/2; break;
        case( 
"mr" ): $poben round$bildbreite-$wasserzeichenbreite ); $punten round$bildhoehe-$wasserzeichenhoehe )/2; break;
        case( 
"ul" ): $poben 0$punten round($bildhoehe-$wasserzeichenhoehe); break;
        case( 
"um" ): $poben round$bildbreite-$wasserzeichenbreite )/2$punten round$bildhoehe-$wasserzeichenhoehe ); break;
        case( 
"ur" ): $poben round$bildbreite-$wasserzeichenbreite ); $punten round$bildhoehe-$wasserzeichenhoehe ); break;
    }
    
    
imagecopy$neuesbild$wasserzeichen$poben$punten00$wasserzeichenbreite$wasserzeichenhoehe );
    
    
// Neues Bild mit Wasserzeichen speichern
    
imagejpeg$neuesbild$originalbild90 );
    
imagedestroy$neuesbild );
}
/*** Anwendungsbeispiel um im Bild Ferienhaus.jpg ein Wasserzeichen oben links zu plazieren ***/
Wasserzeichen"Ferienhaus.jpg""firmenlogo.gif""ol" );

// Es gibt 9 Ausrichtungen, wobei jeweils die ersten Buchstaben zur Orientierung dienen.
// or = ecke oben rechts, mm = mitte mitte (zentrum des Bildes), ul = ecke unten links, usw. 

Geändert von Rizzo (29.07.2007 um 00:08 Uhr).
Rizzo ist offline  
Alt 28.07.2007, 01:53   #7
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

Sonstiges


SelectBox aus Array erstellen
PHP-Code:
/* ***************************************** */
/* ***   SelectBox aus Array erstellen   *** */
/* ***************************************** */
function SelectBox$elementname$felder$vorausgewaehlt )
{
    if (
is_array$felder ))
    {
        
$selectbox '<select name="' .$elementname'" id="' .$elementname"\">\n";
        foreach (
$felder as $feldname => $feldinhalt)
        {
            
$selectbox .= '<option value="' .$feldname'"';
            
$selectbox .= ($feldname == $vorausgewaehlt || $feldinhalt == $vorausgewaehlt) ? ' selected="selected">' '>';
            
$selectbox .= htmlentities$feldinhalt );
            
$selectbox .= "</option>\n";
        }
        
$selectbox .= '</select>';

        return 
$selectbox;
    }
    else
    {
        return 
false;
    }
}
/***** Anwendungsbeispiel *****/
// Array mit SelectBox-Elementen
$optionen = array(  "peter" => "Peter Müller",
                    
"tanja" => "Tanja Schmidt",
                    
"klaus" => "Klaus Fischer",
                    
"max" => "Max Mustermann"
                 
);
// SelectBox mit echo() ausgeben. Die Parameter sind:
// "personen" = Name- und ID-Attribut der Selectbox
// $optionen = Das Array mit den Auswahlmoeglichkeiten
// "klaus" = Schluessel oder Wert der Option die vor-selektiert sein soll
echo SelectBox"personen"$optionen"klaus" ); 

Mail mit Anhang (Achtung! Setzt zwingend PHP 5.2.x oder höher voraus!)
PHP-Code:
<?php
$Empfaenger 
"name@domain.tld";
$Betreff    "Mail mit Anhang";
$Nachricht  "Juhuu, ich kann Mails mit Anhang verschicken!\n\n";
$Absender   "From: Max Mustermann <max@mustermann.tld>";

// Dateiname fuer Anhang
$Dateiname      "bild4711.jpg"// Dateiname auf dem Server
$DateinameMail  "huebscher_sonnenuntergang.jpg"// Dateiname des Anhangs in der Mail.
/* Man kann den selben Name wie auf dem Server verwenden oder einen neuen
Name fuer den Anhang bestimmen. Das macht Sinn, wenn man z.B. Bilder mit
Timestamp-Name auf dem Server abgelegt hat aber Bilder mit einem normalen
Name verschicken moechte.*/

// Anhang in Mailbody einfuegen
$Nachricht .= "\r\n";
$Nachricht .= "begin 666 {$DateinameMail}\r\n";
$Nachricht .= convert_uuencodefile_get_contents$Dateiname ) );
$Nachricht .= "end\r\n";

// Mail verschicken
mail($Empfaenger$Betreff$Nachricht$Absender);
?>

Geändert von Rizzo (28.09.2007 um 10:28 Uhr).
Rizzo ist offline  
Alt 28.07.2007, 01:53   #8
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

String-Funktionen


Bereitet einen Datensatz auf um problemlos ausgegeben werden zu können. Es werden unnötige Leerzeichen und Leerzeilen entfernt, überlange Wörter werden umgebrochen damit sie ein Layout nicht zerstören, potentiell gefährliche Zeichen werden umgewandelt, Zeilenumbrüche werden HTML-konform umgewandelt.
Das Beispiel hätte auch unter Datenbank-Funktionen stehen können, aber hier passt es besser, da Einträge z.B. auch aus einer Flatfile kommen könnten.
PHP-Code:
/* ******************************************************************* */
/* ***   DB-Eintraege fuer Ausgabe aufbereiten (z.B. Gaestebuch)   *** */
/* ******************************************************************* */
function dbAusgabe$eintrag )
{
    
$pattern = array(   "/(\r\n)|(\r)/m",
                        
"/(\n){4,}/m",
                        
"/\s{3,}/m",
                        
"/(.)\\1{15,}/im"
                    
);

    
$replace = array(   "\n",
                        
"\n",
                        
" ",
                        
"\\1"
                    
);

    
$eintrag get_magic_quotes_runtime() ? stripslashes$eintrag ) : $eintrag;
    
$eintrag htmlspecialchars$eintrag );
    
$eintrag preg_replace$pattern$replace$eintrag ); // entfernt unnoetige Leerzeichen und Zeilenumbrueche
    
$eintrag nl2br$eintrag );
    
$eintrag wordwrap$eintrag45" ");
    return 
$eintrag;


Geändert von Rizzo (29.07.2007 um 00:08 Uhr).
Rizzo ist offline