|
|
Mit PHP und MySQL Easy klappt der Einstieg in PHP (und SQL) bestimmt. | ||
|
Mit dem Titel "PHP und MySQL für Kids." und J. C. Hanke als Autor - Wer es dann nicht versteht ... Dazu gibt es dann noch das Praxisbuch |
|
|
|
|
In der Reihe "... für Dummies" darf natürlich auch das Thema PHP nicht fehlen. Es gibt also "PHP 5 für Dummies.", "MySQL 5 für Dummies." und "Applikationen mit PHP Und MySQL für Dummies." |
|
|
Carsten Möhrke: Besser PHP programmieren: Handbuch professioneller PHP-Techniken. Dieses Buch hilft auch bereits erfolgreichen PHP-Programmierern besseres PHP zu schreiben: angefangen beim sauberen Entwurf über die funktionstüchtige Implementation bis hin zur Dokumentation und Wartung. Denn gutes PHP ist mehr als nur Code schreiben. |
||
|
|
|||
<!-- Die Navigationsleiste ist z. B. in der Datei i_navigation.php als HTML-Text definiert Sie wird folgendermaßen aufgerufen: --> <?php include 'i_navigation.php '; ?> <!-- Es geht auch in einer Zeile: --> <?php include 'i_navigation.php '; ?>
<?php function alert($ausg){ /* Diese Funktion simuliert JavaScript alert() Funktion veröffentlicht von www.KlickTipps.de */ $a1 = "\n <script type=\"text/javascript\"> "; $a2 = "\n alert(\""; $a3 = "\"); "; $a4 = "\n </script> \n"; $ausgabe = $a1 . $a2 . $ausg . $a3 . $a4; echo $ausgabe ; } ?>
<?php function testbox($ausg){ /* Mit dieser Funktion kann man Testwerte anzeigen. Sie funktioniert ohne JavaScript. Funktion veröffentlicht von www.KlickTipps.de */ $a1 = "\n <div class=\"testbox\" title=\"PHP-Testbox\" style=\"border: 1px dotted green; position: absolute; margin:0px; padding:10px; z-index:5; background-color:#ffffcc; color:#000000;\"> \n "; $a2 = " \n </div> \n"; $ausgabe = $a1 . $ausg . $a2; echo $ausgabe; } ?>
<?php function zufall($a, $b) { /* eine ganze Zufallszahl im Bereich von $a bis $b erzeugen Funktion veröffentlicht von www.KlickTipps.de */ srand(microtime()*1000000); return ( rand($a, $b) ); } // Anwendung: Z. B. Zufallszahlen von 5 bis 31 zz$ = zufall(5 , 31); // Zufallszahlen von 0,1 bis 1,5 zz$ = zufall(1 , 15)/10; ?>
<?php $vor10tagen = mktime(0, 0, 0, date("m"), date("d")+1, date("Y")); // Datum vor genau 10 Tagen $diesesjahr = date("Y"); //dieses Jahr (4-stellig) $ostern = easter_date( date("Y") ); //Ostern dieses Jahr (als Timestamp) $ostermonat = date("n" , $ostern ); //der Monat, in dem Ostern dieses Jahr liegt $ostertag = date("j" , $ostern ); //der Tag, an dem Ostern liegt $rosenmontag = date("j.n.y" , $ostern - 48 * 86400 ); //Rosenmontag (48 Tage vor Ostern) $gruendonnerstag = date("j.n." , $ostern - 3 * 86400 ); //Gründonnerstag $ostermontag = date("j.n." , $ostern + 1 * 86400 ); //Ostermontag $himmelfahrt = date("j.n." , $ostern + 40 * 86400 ); //Himmelfahrt $pfingsten = date("j.n." , $ostern + 49 * 86400 ); //Pfingstsonntag $pfingstmontag = date("j.n." , $ostern + 50 * 86400 ); //Pfingstmontag $frohnleichnam = date("j.n." , $ostern + 60 * 86400 ); //Frohnleichnam, Hochfest Christi $letzter_feb = date("j.n.y",mktime(0,0,0, 3,0,$diesesjahr) ); //letzter Tag im Februar //Muttertag (= zweiter Sonntag im Mai), dieses Jahr: 09.05.2010 //Die Formel geht vom spätestmöglichen Termin (14.5.) aus //w Wochentag: "0" (Sonntag) bis "6" (Samstag) $muttertag = mktime(0,0,0,5,(14-date('w',mktime(0,0,0,5,0,$diesesjahr))),$diesesjahr); $muttertag = date('d.m.Y',$muttertag ); //4. Advent, dieses Jahr: 19.12.2010 //Die Formel geht vom spätestmöglichen Termin (24.12.) aus $Advent4 = mktime(0,0,0,12,(24-date('w',mktime(0,0,0,5,0,$diesesjahr))),$diesesjahr); //1. Advent (= 3 Wochen vor dem 4. Advent), dieses Jahr: 28.11.2010 $Advent1 = mktime(0,0,0,12,(24-21-date('w',mktime(0,0,0,5,0,$diesesjahr))),$diesesjahr); ?>
<?php function im_zeitraum($tag1, $monat1, $jahr1, $tag2, $monat2, $jahr2) { // Prüfen, ob der heutige Tag in einem bestimmten Zeitraum liegt. // Funktion veröffentlicht von www.KlickTipps.de return (time()>=date(mktime (0, 0, 0, $monat1, $tag1, $jahr1)) and time()<=date(mktime (24, 59, 59, $monat2, $tag2, $jahr2)) ); } // Anwendung: // Z. B. prüfen, ob das heutige Datum im Bereich // vom 1.2.2009 bis zum 14.2.2009 liegt: if ( im_zeitraum( 1, 2, 2009, 14, 2, 2009 ) ){ } // Alternative, bei der das Datum nur einmal eingegeben werden muss // (weniger Chancen für Fehler): function termin_anzeigen($tag, $monat, $jahr, $vorher, $nachher) { // Prüfen, ob die jetzige Zeit im Bereich // von (Datum - $vorher) bis (Datum + $nachher) liegt. // Funktion veröffentlicht von www.KlickTipps.de return (time()>=date(mktime (0, 0, 0, $monat, $tag-$vorher, $jahr)) and time()<=date(mktime (24, 59, 59, $monat, $tag+$nachher, $jahr)) ); } // Anwendung: // Z. B. prüfen, ob das heutige Datum im Bereich // von 31 Tage vor dem 14.12.2009 bis 1 Tage danach liegt: if ( termin_anzeigen( 14, 2, 2009, 31, 1 ) ){ } // oder $diesesjahr = date("Y"); if ( termin_anzeigen( 14, 2, $diesesjahr, 31, 1 ) ){ } ?>
<?php $diesesjahr = date("Y"); if ( termin_anzeigen( 14, 2, $diesesjahr, 31, 1 ) ){ ?> Keine Lust auf Blumen? <br>Wie wäre es mit einem Amazon-Gutschein zum Valentinstag?! <br> .... <br> .... <br> .... <?php } ?>
<?php function date_de2php($datum) { // deutsches Datum des Formats d.m.yy bis dd.mm.yyyy in PHP-Timestamp umwandeln // Funktion veröffentlicht von www.KlickTipps.de $datum = str_replace( ' ', '', $datum ); //alle Blanks löschen $datum = str_replace( ',', '.', $datum ); //alle Kommas in Punkte if( count(explode('.', $datum)) != 3){ return (FALSE); }else { list($tag, $monat, $jahr) = explode(".", $datum); } if( $jahr >= 2100 ){ return (FALSE); } //zweistellige Jahreszahl abfangen //Jahre vor 2000 müssen 4-stellig angegeben werden if( $jahr < 100 ){ $jahr = $jahr + 2000; } return ( mktime(0,0,0, $monat, $tag, $jahr) ); } ?>
<?php function date_php2wochentag($zeitstempel) { // PHP-Timestamp in deutschen Wochentag umwandeln // Funktion veröffentlicht von www.KlickTipps.de $wochentage = array("Sonntag","Montag","Dienstag","Mittwoch", "Donnerstag","Freitag","Samstag"); return $wochentage[date("w", $zeitstempel )]; } ?>
<?php function trimall( $eingabe ){ /* alle Blanks aus einem String entfernen Funktion veröffentlicht von www.KlickTipps.de */ return( str_replace( ' ', '', $eingabe ) ); } ?>
<?php function dateigroesse_km( $datei ){ /* Dateigröße ermitteln und in kB bzw. MB (als String) angeben Funktion veröffentlicht von www.KlickTipps.de */ //echo filesize( $datei ) ; $groesse = (int)(filesize( $datei )/1000); if ( $groesse <= 500 ){ return ( $groesse ." kB" ); }else{ return ( number_format( $groesse/1000 , 1 , "," , ".") ." MB" ); } } ?>
<?php function htmllink($link, $text="", $target = "", $title = "" ){ /* einen html-Link erzeugen und E-Mail-Adressen (zum Spamschutz) codieren Funktion veröffentlicht von www.KlickTipps.de */ // Eingaben aufbereiten $text = trim($text); $link = trim($link); $target = trim($target); //optionaler Parameter $title = trim($title); //optionaler Parameter if ( $link=="" and $text=="" ) { return(""); } //keine sinnvolle Ausgabe möglich if ( $link!="" and $text=="" ) { $text=$link; } if ( $link=="" and $text!="" ) { return($text); } //kein Link vorhanden - normaler Text if ( $target!="" ) { $target = " target=\"" . trim($target) . "\""; } // ist der Link eine E-Mail-Adresse? $emaillink = false; if ( strpos( "$link" ,"@" ) AND strrpos( $link ,"." ) AND strpos( "$link" ,"@" ) < strrpos( $link ,"." ) ){ $emaillink = true; } // bei bestimmten Dateiarten die Größe ermitteln // zur hier benutzten Funktion dateigroesse_km( $link ): siehe voriger Abschnitt if ( $title == "" ){ $dateityp = strrchr ( $link , "." ); if ( strpos( ".pdf.docx.xls.zip.ppt" , $dateityp ) !== false ) { $title = $dateityp . "-Datei, " . dateigroesse_km( $link ) ; } } //title erzeugen if ( $title != "" ){ $title = " title=\"" . $title . "\""; } //Link ausgeben if( $emaillink ){ //es ist ein E-Mail-Link: 'mailto:' einfügen und codieren gegen Spam $ausgabe = "<a href=\"" . str_to_ascii("mailto:" . $link) . "\"" . $title . ">"; $text = str_to_ascii( $text ); }else{ //HTML-Link $ausgabe = "<a href=\"" . $link . "\"" . $target . $title . ">"; } return ( $ausgabe . $text . "</a>" ); } function str_to_ascii($input){ // Sting in ASCII umwandeln z. B. zum Verschlüsseln von E-Mail-Adressen $ascii = NULL; for ($i = 0; $i < strlen($input); $i++) { $ascii .= '&#' . ord($input[$i]) . ';'; } return($ascii); } // So wird die Funktion z. B. aufgerufen: echo htmllink( "http://www.klicktipps.de" , "Viele Tipps in Klicktipps" , "_blank" , "klick mich!") . "\n" ; // oder so für einen Link zu einer E-Mail-Adresse: echo htmllink( "wie_heisst_sie_wohl@web.de" , "meine beste Feundin" , "" , "" ) . "\n" ; // und so für eine pdf-Datei: echo htmllink( "irgendeine.pdf" , "xyz-Formular" , "_blank" , "") . "\n" ; ?> <!-- Die Funktion str_to_ascii() kann auch einzeln benutzt werden. Zwei Beispiele: Telefon: <?php echo str_to_ascii("06251 123usw."); ?> E-Mail: <a HREF="<?php echo str_to_ascii( 'mailto:' . 'adresse@wasauchimmer.de'); ?>"><img src="mailbildchen.gif" border="0"><?php echo str_to_ascii('adresse@wasauchimmer.de'); ?></a> -->
<?php function bild_anzeigen( $bild , $text , $css = "" , $prozent = 100 ){ // Bild anzeigen (vorher Größe ermitteln) // Funktion veröffentlicht von www.KlickTipps.de $bild_array = getimagesize($bild); // für GIF-, JPG-, PNG oder SWF-Dateien $bild = trim( $bild ); $text = trim( $text ); $css = trim( $css ); // optionaler Parameter für weiteres if ($prozent <= 0) { $prozent = 100;} // optionaler Parameter für Änderung Bildgröße $ausgabe = "<img src=\"" . $bild . "\""; if ( $bild_array[0] > 0 and $bild_array[1] > 0 ){ $ausgabe = $ausgabe . " width=\"" . round($bild_array[0]*$prozent/100) . "\""; $ausgabe = $ausgabe . " height=\"" . round($bild_array[1]*$prozent/100) . "\""; } if ( $css != "" ){ $ausgabe = $ausgabe . " style=\"" . $css . "\""; } if ( $text != "" ){ $ausgabe = $ausgabe . " alt=\"" . $text . "\""; $ausgabe = $ausgabe . " title=\"" . $text . "\""; } $ausgabe = $ausgabe . ">"; return( $ausgabe ); } // So wird die Funktion z. B. über in diesem Abschnitt genutzt: // kleinerer Leuchtturm: echo " " . bild_anzeigen( "bilder/leuchtturm1.gif" , "Leuchtturm" , "float:left; margin: 0px 8px 3px 0px; border:1px solid #cccccc;" , 50 ) . "\n "; // größerer Leuchtturm: echo " " . bild_anzeigen( "bilder/leuchtturm1.gif" , "Leuchtturm" , "float:left; margin: 0px 8px 3px 0px; border:1px solid #cccccc;" ) . "\n "; // und so ohne CSS und ohne Größenänderung: echo " " . bild_anzeigen( "bilder/leuchtturm1.gif" , "" ) . "\n "; ?>
<?php function this_file( $input = "" ) { // gibt den momentanen Filenamen aus (wenn keine Eingabe) - Ausgabe: Filename // oder vergleicht ihn mit $input - Ausgabe: true oder false // Funktion veröffentlicht von www.KlickTipps.de $filename = basename($_SERVER[PHP_SELF]); if ( $input == "" ){ return ( $filename ); }else{ return ( $input == $filename ); } } ?>
Gelegentlich möchte man in einer Homepage nicht nur GPS-Positionen angeben,
sondern auch gleich einen Link zu einem passenden Kartenausschnitt anbieten.
Die Funktion link_maps_google() erzeugt aus Koordinaten den entsprechenden Link.
Mit der Funktion grad2grad_min() werden Dezimalgrad in Grad und Minuten umgerechnet,
die dann im title-tag des Links angezeigt werden können.
<?php function link_maps_google($nn, $ee, $zoom=15, $parameters="", $css=""){ /* Link zu einer Position in maps.google (Static Maps) erzeugen Eingabe in Dezimalgrad mit 6 Nachkommastellen Dokumentation für Static Maps: http://code.google.com/intl/de/apis/maps/documentation/staticmaps */ // Eingaben aufbereiten $parameters = trim( $parameters ); $css = trim( $css ); // Link zusammenbauen $link = ""; $link = "http://maps.google.de/?ie=UTF8&t=h&ll="; $link = $link . $nn . "," . $ee; $link = $link . "&spn=0.005885,0.01281&z=" . $zoom; $link = $link . $parameters ; $target = " target=\"" . "_blank" . "\""; //Anzuzeigenden Text und title-tag erzeugen $text = "N" . $nn . "° E" . $ee . "°"; $title = $text; $title = $title." ; N".grad2grad_min($nn)." E".grad2grad_min($ee); $title = " title=\"" . $title . "\""; $ausgabe = "<a href=\"" . $link . "\"" . $target ; if ( $css != "" ){ $ausgabe = $ausgabe . " style=\"" . $css . "\""; } $ausgabe = $ausgabe . $title . ">"; return ( $ausgabe . $text . "" ); } function grad2grad_min( $grad ){ // Wandelt Dezimalgrad in Grad und Minuten um. // Funktion veröffentlicht von www.KlickTipps.de if ( $grad >= 0 ){ $gr = floor( $grad ); }else{ $gr = ceil( $grad ); } $min = abs($grad - $gr); return ( $gr . "°" . round($min*60*10000)/10000 . "'" ); } ?> <!-- Die Funktion wird im Text z. B. so aufgerufen: --> ... Ein Weltkulturerbe ist z. B. die karolingische Torhalle (<?php echo link_maps_google(49.653919, 8.568714, 17, "", "text-decoration:none;"); ?>) des ansonsten kaum noch vorhandenen Klosters Lorsch. ...
... Ein Weltkulturerbe ist z. B. die karolingische Torhalle (49.653919°N 8.568714°E) des ansonsten kaum noch vorhandenen Klosters Lorsch. ...
Die bisher vorgestellten Funktionen kann man nach Lust und Laune kombinieren. In diesem Fall werden sie benutzt, um in den Ostertagen ein paar zufällig ausgewählte Ostereier anzuzeigen.
<?php function ostereier( $anz_min=1 , $anz_max=5 , $groesse=100 ){ // Es erscheinen $anz_min bis $anz_max zufällig ausgewählte Ostereier // Die Bildgröße kann in Prozent verändert werden. // Ohne Parametereingabe erscheinen 2 bis 5 Eier in normaler Größe. // Funktion veröffentlicht von www.KlickTipps.de if ( $anz_min <=0 ){ $anz_min = 1; } if ( $anz_max <=0 or $anz_max < $anz_min or $groesse<5){ return; } $pfad = "bilder/eggs/"; // Pfad, in dem die Bilder liegen $arr = array("egg1.gif", "egg2.gif", "egg3.gif"); // die Dateinamen der Bilder $text = ";-)"; // alt-Text for ($i=0; $i < zufall($anz_min,$anz_max); $i++) { echo bild_anzeigen($pfad.$arr[zufall(0,count($arr)-1)],$text,"padding-right:2px",$groesse); } } ?> <!-- und so wird die Funktion z. B. über in diesem Abschnitt in HTML-Umgebeung genutzt: --> <?php ostereier( 2 , 5 , 70 ); echo " \n" ?> // 2 bis 5 Eier in 70% Größe <!-- so ist sie von Ostersamstag bis Mittwoch nach Ostern aktiv: --> <?php $ostern = easter_date( date("Y") ); $ostermonat = date("n" , $ostern ); $ostertag = date("j" , $ostern ); if ( termin_anzeigen($ostertag, $ostermonat, date("Y"), 1, 3) ){ ostereier( 2 , 5 , 70 ); echo " \n"; } ?>
Diese Funktion kann man natürlich auch für vieles Andere als 'nur' für Ostereier benutzen.
Dass der Cursor hier zum Osterei wird, geschieht übrigens nicht durch PHP,
sondern durch CSS mit
Eine .gif-Datei lässt sich z. B. mit den Programmen "IconArt" oder "Microangelo" in eine
.cur-Datei umwandeln.
<?php function tob_version_des_users() { // Version des t-online-Browsers beim User anzeigen $browser = $_SERVER['HTTP_USER_AGENT']; $pos = strpos( strtoupper($browser) ,"TOB"); if ( $pos !== false ) { // Es wird ein t-online-Browser benutzt. $browser = substr ($browser,$pos , 12); // TOB und Versionsnummer extrahieren $browser = explode(';', $browser ); $browser = explode(' ', $browser[0] ); // TOB und Versionsnummer trennen $version = $browser[1]; return $version; }else{ return false; } } ?>
<?php function momentane_ip_des_users() { // IP-Nummer des Users anzeigen if (! isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $client_ip = $_SERVER['REMOTE_ADDR']; } else { $client_ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } return $client_ip; } //Aufruf z. B. mit: echo "Momentane IP: " . momentane_ip_des_users(); ?>
Sie haben zur Zeit die IP-Nummer 38.107.191.89.
<?php include_once ( "funktionen.inc.php" ); ?>
<?php if( irgendeine Bedingung ) { ?> <!-- ab hier können jetzt beliebig viele HTML-Zeilen stehen --> <?php }else{ ?> <!-- und hier der alternative Text --> <?php } ?>
# # Alles, was hinter einer Raute steht, ist nur ein Kommentar. # # --- Festlegen, dass PHP-Code auch in .htm- und .html-Dateien ausgeführt wird --- # AddHandler x-httpd-php5 .php .php5 .htm .html # # So funktioniert es bei www.goneo.de, aber nicht bei jedem anderen Provider. # Genaueres muss mit dem jeweiligen Provider geklärt werden. # # Diese Einstellung erspart, alle Dateien mit Endung .php zu versehen. # Sie bedeutet aber für HTML-Dateien, die kein PHP enthalten, erhöhte Ladezeit. # # # --- Reihenfolge, in der nach einer Indexdatei gesucht wird. --- # DirectoryIndex index.php index.htm index.html # # Gerade beim Aufbau eine Homepage könnte man damit User zu einer vorläufigen # index.html leiten, während an einer index.php und den dazugehörigen Seiten gebaut # und getestet wird. # # # --- Seite festlegen, die bei fehlerhafter URL gezeigt wird --- # ErrorDocument 404 http://www.meine-schoene-homepage.de/error404.php # # # --- Umleitung für Seiten, deren Name geändert wurde, oder die ohne Dateiendung # erreicht werden sollen. # Als Ziel wird eine komplette URL angegeben, bei manchen Providern reicht auch # die relative Angabe der Seite. --- # RedirectPermanent /impressum.html http://www.meine-schoene-homepage.de/impressum.php RedirectPermanent /impressum.htm http://www.meine-schoene-homepage.de/impressum.php RedirectPermanent /impressum http://www.meine-schoene-homepage.de/impressum.php RedirectPermanent /kontakt http://www.meine-schoene-homepage.de/impressum.php # RedirectPermanent /eine_seite.php http://www.meine-schoene-homepage.de/erste-seite.php RedirectPermanent /php http://www.meine-schoene-homepage.de/php-tipps.php # #