Tag Archive for PHP

Install Apache2, MySQL5.5 and PHP5.3 on OSX Lion

If you just installed OS X Lion or upgraded from Snow Leopard to Lion and want to use it as a developer web-server so it is possible.

This guide will help you get Apache2, MySQL5.5 and PHP5.3 to work on your machine so you are ready to develop without internet. Read more

phpDB Tool – RC v. 0.1

phpDB Tool er et værktøj til dig der udvikler PHP og gerne vil kunne benytte et framework til databaser ved hjælp af PDO.

Dette projeckt er remlig nyt og består ikke af meget pt. men det er dog muligt at oprette forbindlse og benytte de mest standarte funktioner.

Dette framework kræver du benytter PHP 5.3 og MySQL 5.1 eller nyere, alt dette kan hentes gratis fra Github.

Hent kilde koden: https://github.com/phptech/phpDB-tool

CentOS 5 som webserver

Til at få CentOS 5 som webserver kræver det lige som alle andre server at du skal installer en webserver med php5 og en  datatabase som skal være MySQL.

Apache
Installer Apache ved at skrive

1
yum install httpd

Når den er færdig med at installere Apache skal vi lige følge op på om Apache faktisk køre, det gøres ved at se status for httpd servicesen.

1
/sbin/service httpd status

Køre Apache ikke skal du starte denne services ved at skrive

1
/sbin/service httpd start

Køre du Apache på en server er det vigtigt at Apache starter op sammen med dit system, derfor skal vi nu angive services level nivue og slå den til ved opstart det gøres på denne måde.

1
/sbin/chkconfig --level 3 httpd on

Husk hvis du har firewall aktiveret skal du åbne port 80 for at andre kan komme i kontakt med din server.

PHP
Hvis PHP ikke er installeret kan du gøre det ved at skrive

1
yum install php

Da jeg selv ønsker at køre med PHP 5.3 eller nyre er det ikke muligt for mig at benytte den  version som CentOS stiller til rådighed, derfor må jeg ud og finde en RPM pakke som kan løse det problem jeg har.

Jeg har valgt denne blog http://www.webtatic.com/blog/2009/06/php-530-on-centos-5/ som har guidet mig igennem til at installere den nyeste PHP version som der ønskes.

Først skal vi tillade webtatic’s RPM pakker i systemet det gøres ved at accepter RPM’s godkendt fra webtatic at blive installeret via yum.

1
rpm -ivh http://repo.webtatic.com/yum/centos/5/x86_64 -i /webtatic-release-5-1.noarch.rpm

Nu er det muligt at installere PHP fra webtatic ved at skrive

1
yum --enablerepo=webtatic install php

Når PHP skal updateres skal du også her være sikker på den bliver updateret fra webtatic og gøres ved at skrive.

1
yum --enablerepo=webtatic update php

MySQL
Jeg ønsker at benytte MySQL 5.5+ på min server, til det findes denne version detsværre heller ikke i selve CentOS og derfor bruger jeg igen webtatic til at bruge dette. start med at installere libmysqlclient

1
yum install libmysqlclient15 --enablerepo=webtatic

Nu ønsker vi at installere MySQL 5.5+ som gøres sådan

1
yum install mysql55 mysql55-server --enablerepo=webtatic

Nu skal du starte MySQL databasen og lad den starte op hver gang systemet genstartere.

1
2
service mysqld start
/sbin/chkconfig --levels 235 mysqld on

Hvis du oplever samme problem som jeg gjore ( chown: `mysql’: invalid user  ) kan det skyldes at gruppen og brugeren ikke er oprettet til MySQL endnu, det kan gøres ved at skrive følgene.

1
2
groupadd mysql
useradd -g mysql mysql

Skift nu dit kodeord til databasen så andre ikke har adgang til din database.

1
/usr/bin/mysqladmin -u root password 'nyt-kodeord'
1
yum --enablerepo=webtatic install php-pdo php-mysql

nuSOAP og PHP5

SchemeCloud rykker i nye højder og til disse højder bliver et API(webservice) nærmeste et krav, da PHPTECH har intagrasion til både Wannafinds betalingsgateway og e-conomics ERP system er det nu på tide for PHPTECH også at få deres eget API til de kunder der ønsker det.

Til dette har der været behov for at studere nye muligheder, jeg snakkede frem og tilbage med forskellige personer og den person der hjælp mig bedst frem til det jeg måtte bruge i PHPTECH til vores API er Simon Jensen, han nævnte nuSOAP som er et biblotek til PHP der gør det muligt at binde funktioner/class.

Det vil jeg gerne have lov til i dette indlæg at takke Simon Jensen mange gange for inden jeg går vider med nogle eksempler på hvordan jer der ude kan komme hurtig igang med nuSOAP i PHP5.

Start med at lave en ny fil med navn server.php hvor du paster følge kode ind.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
include("nusoap/nusoap.php");
 
$srv = new soap_server();
$srv->register("product.GetName");
 
class product
{
	public function GetName($name)
	{
		return $name;
	}
}
 
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : "";
$srv->service($HTTP_RAW_POST_DATA);

Nu opretter du en ny fil med navn client.php og paster følgene linjer ind

1
2
3
4
include("nusoap/nusoap.php");
$soap = new nusoap_client("http://localhos/soap/server.php");
 
echo $soap->call("product.GetName",array("name"=>"produkt navn") );

Kan endnu en gang sige tak til Simon Jensen for hans venlighed – Syndes i skal besøges Simon Jensens blog her

Til dette forsøg skal du hente hele nuSOAP bibloteket som findes her på SourceForge.net

Abstract class i PHP

Her til aften/nat sad jeg og tænkte efter jeg havde lavet lidt arbjede om at der enligt nok var nået jeg kunne forbedre mig på, her til tænkte jeg at jeg enligt ikke rigtig havde styr på abstract i php og class, derfor valgte jeg så at læse lidt om dette som så resutert i at det enligt ikke være så svært som jeg først havde gået og tordet.

jeg har lavet et lille eks. så i der ude også kan få lidt gavn af dette og se hvad abstract enligt gør.

<?php
abstract class AbstractCls
{
    protected $code = true;

    public function returnError()
    {
        if ( $this->code === false )
        {
            return 'fail';
        }
        elseif ( $this->code === true )
        {
            return 'ok';
        }
        else
        {
            return 'n/a';
        }
    }
}

class test extends AbstractCls
{
    public function valiUser( $username )
    {
        if ( $username == '' )
            $this->code = false;

        echo $this->returnError();
    }
}
?>

Jeg har naturligvis også testet det så det fungere, det jeg har gjort er at lave en fil med følgene linjer i.

<?php
include( 'test.class.php' );
$test = new test();

$test->valiUser( 'neonman' );
?>

Håber dette eksemple kan bruge stil nået, det har hjulpet mig til at forstå det nået bedre omkring abstract inden for class.

Udskriv flere gruppe ider ud med kun 1 titel

Idag kom jeg på et kæmpe problem som jeg enligt ikke havde tænkt over før, jeg har lavet SQLen om så den ikke linjere det rigtig som jeg sad og arbjedet med på grund af sikkerheden.

Det der var mit problem var jeg havde nogle kategori grupper med samme navn som skulle printes ud til brugeren men selve kategorien må kun forkomme 1 gang pr titel.

men da man har en gruppe der kan hede Unisex0-2år, unisex2-5år, pige0-2år og dreng0-2 år og alle 4 kategoriere faktisk har produkter indskrvet med en kategori “Fodtøj” gjore at når jeg brugte GROUP BY i SQL at den så samle de her 4 kategoriere med Fodtøj til 1 titel som også var ganske godt, men 1 id som skulle dække alle 4 det var knap så heldigt.

den måde jeg valgte at løse det gjore jeg ved at skrive følge eks. ind og teste at det virket, det var umilbart mit bedste skud på at få det til at gøre som jeg ville have det til, jeg modtager gerne flere eks. hvis i sider der ude og tænker “hold da kæft hvorfor gjore han ikke sådan her” :0)

    1 <?php
    2 $resObj = mysql_query( "
    3 SELECT
    4     c.category_title,
    5     c.category_id
    6
    7 FROM
    8     cateogry c INNER JOIN product p ON c.category_id = p.catid
    9
   10 WHERE
   11     c.group IN('child02','child25','girl02','boy515')
   12
   13 GROUP BY
   14     c.category_id
   15
   16 ORDER BY
   17     c.category_title
   18 " );
   19 $myspace = ' - '. $space;
   20 // Create keys
   21 while( $rowObj = mysql_fetch_object( $resObj ) )
   22 {
   23     if( array_key_exists( $rowObj->category_title , $array ) )
   24     {
   25         array_push($array[$rowObj->category_title], $rowObj->category_id);
   26     }
   27     else
   28     {
   29         $array[$rowObj->category_title][] = $rowObj->category_id;
   30     }
   31 }
   32
   33 // Slice keys out whit ,
   34 foreach( $array AS $key => $value )
   35 {
   36     $iv = 0;
   37     foreach( $value AS $ids )
   38     {
   39         if ( $iv == 0 )
   40             $slice = $ids;
   41         else
   42             $slice .= ','. $ids;
   43
   44         $iv++;
   45     }
   46
   47     echo '<option value="'. $slice .'">'. $space . $key .'</option>';
   48 }
   49 ?>

Det skal siges det jeg har fået ud af denne kode er at den tager alle mine grupper som passer på det match jeg bedere om, smider det i et array, hvis min array key findes pusher den bare til det existerne array og hvis ikke lave den et nyt.

Der næst køre jeg det igennem en foreach løkke og printer så daten ud, lige inden udprint skal jeg have mine id’er i komma formart så jeg kan ligge det dirakte ind i en “IN” funktion i MySQL det gøres ved at køre endnu en foreach løkke igennem og samle mine id’er.

jeg håber på der er nogle der evt. sider med et bud på en smartere måde der inde, og ellers håber jeg at det her eks. er brugbart for jer andre der måske sider i samme suppedas.

Smart methode i PHP så du undgår for mange IF til true and flase værdier

Hvis du tit sider og skal tjekke på nået om det findes eller ikke findes midt i det hele og bare ikke fatter hvorfor det skal være sådan kan jeg nemt følge dig ind til for nydlige hvor jeg opdaget og undermig over nogle koder jeg fat i det nye firma jeg er syndes jeg i første omgang inden jeg lærte hvad det var at det var total crap kode og hvorfor man ikke brugte IF statemens men spurte så min svoger omkring det og han forklaret at sådan kunne man også i andre programmerings sprog så det var ikke en dum måde at kode på men faktisk enormt smart og man spare meget tid.

sådan her ville en normal PHP kode se ud for mig før jeg lærte det at kende
[php]
if ( $row['newzlatter'] )
{
$newzlatterValue = ‘Ja’;
}
else
{
$newzlatterValue = ‘Ja’;
}

echo ‘Du har valgt at modtage nyhedsbrev: ‘. $newzlatterValue .’
‘;
[/php]

Nu hvor jeg kender det ser min IF sætningen sådan her ud
[php]
echo ‘Du har valgt at modtage nyhedsbrev: ‘. ( $row['newzlatter'] ? ‘Ja’ : ‘Nej’ ) .’
‘;
[/php]

Connect til FTP eller hent en fil/foto i PHP

Har kikket lidt rundt på nettet, da jeg sku bruge nået der kunne grabbe nogle filer/billedere fra et andet site da vi skulle overføre billedere fra et site til det nye site.

kom frem til at man faktsik kunne connecte til en FTP server hvis man vel og mærket have sti, user og password til denne konti, eller man kunne grabbe dataen dirakte fra det ene site via URL til sin root/sti på sin egen FTP server her er to eks.

Hent fil og vis på siden.
$file = file_get_contents ( “http://url.com” );

Connect til en FTP server
$file = scandir( ‘ftp://username:password@urlsti/’);

Håber i fik nået ud af disse 2 eks. ellers må i godt poste en kommentar omkring og høre hvad jeg mener naturligvis :0)

PHP 5.2.5 RC1

PHP logo Det er muligt at hente PHP 5.2.5 RC 1 men jeg vil anbefalde man venter ind til den stable udgave kommer med mindre man skal bruge dette til udvikling kan denne version godt gå an.

Det er nu snart 1½ måndet siden de sidst udgav en stable version lad os se om de ikke får sat mere skub under føderne når nu der ikke bliver udviklet mere på PHP 4, jeg kryssere finger for dette.

Link: http://php.net