Gå til innhold

grimjoey

Medlemmer
  • Innlegg

    773
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av grimjoey

  1. du må bestemme deg for hvordan du vil definere "rim" programatisk. jeg testet rimordboken du henviser til og det er ikke alle resultatene som rimer med søkeordet, alltid.

     

    det finnes noe som heter norsk språkbank. du kan kontakte norsk språk råd for å få tilgang til denne, som antagelig inneholder de fleste norske ord (om ikke samtlige).

     

    rim har med ordlyd å gjøre, så for å få til en bra rimordbok kan det hende du må få tak i en ordliste med fonetisk notasjon i tillegg til skriftlig. evt. lære å bruke fonetisk notasjon og lage en egen ordliste basert på en rent skriftlig ordliste, noe som kan være enormt tidkrevende.

     

    når du finner ut hvordan du vil gjøre det er det i grunn ganske enkel database søking det dreier seg om.

  2. Php har samme rettigheter som web-servere (kjører under samme bruker). Og web-serveren har rettighetene til filer som blir lastet opp.

     

    Er problemet ditt at du ikke får chmod'et via ftp/ssh kan løsningen være å lage et php-script som gjør jobben for deg. Evt. bruke chown via php for å gi din ftp/ssh bruker rettighetene til filen.

     

    Jeg er usikker på hva php safe_mode gjør. Hvis det er slik at php's chmod og chown ikke fungerer, og du er ute etter å få tilgang til filene selv, kan du lage en passord beskyttet side som presenterer filene for nedlasting.

  3. Jeg tror dere diskuterer litt på ulike plan her. Det virker som OP ikke helt forstår den tekniske forskjellen på php og html.

     

    HTML tolkes av nettleseren og definerer hvordan informasjon skal vises.

     

    PHP tolkes av en web-server, og for nettleseren ser dette ut som en vanlig html fil (oftest).

     

    Forskjellen er at php lar deg programmere, og gir muligheten for dynamisk informasjon på siden.

     

    Man kan installere et php basert forum uten særlig peiling på database og programmering. Men man bør ha visse forkunnskaper som for eksempel at php forum krever at databasene konfigureres med riktig brukernavn og passord, samt et databasenavn.

     

    Men all infoen man trenger finnes oftest i installasjonsmanualene, eventuelt howto's.

     

    Web serveren må selvfølgelig støtte php, dersom det skal benyttes. De fleste webhoteller støtter php og mysql database. Det finnes gratis web hoteller med slik støtte.

     

    phpBB er et greit forum du finner via google. Ellers kan du ta en titt på php-fusion hvis du vil ha et komplett innholdshåndteringssystem.

     

    I begge tilfellene handler det om å:

     

    *laste ned forum/cms

    *pakke ut filene

    *lese readme og install dokumenter

    *laste opp til webhotell via (s)ftp

    *gjøre noen endringer av sikkerhetsmessige årsaker (php-fusion krever at du renamer _config.php til config.php før installasjonen)

    *kjøre installasjonsprogrammet (dette innebærer å åpne en spesiell side på hjemmesiden der du har lagt inn forumet/cms'et)

     

    På forhånd må du sørge for at du har tilgang til en database og infoen; vertsnavn, brukernavn, passord og databasenavn

  4. Kan ikke garantere for at alt fungerer (den er så vidt testet), men her er et par klasser jeg har laget. (se nederst)

     

    $db = new Db;

    $db->Connect('host', 'user', 'pass', 'dbname');

    $db->Query('SELECT ...'); // returnerer vanlig resultat ressurs

    $db->Escape('...'); // er samme som mysql_real_escape_string()

    $db->GetArrABC('SELECT ...'); // returnerer et array med assosiative arrayer

     

    array(
    [0] = array(
    	['id'] = 0
    	['navn'] = 'navnet'
    )
    [1] = array(
    	....
    	....
    )
    )

     

    $db->GetArrN('SELECT ...'); // returnerer numerisk array med numeriske arrayer

    samme som ovenfor men uten feltnavn

     

    $result = $db->GetObj('SELECT ...'); //returnerer et objekt med objekter

    $row = $result->GetRow('0');

    $id = $row->id;

     

    elns (utestet)

     

    $db->GetXML('SELECT ...'); // returnerer ett xml document.

     

    <?xml version="1.0"?>
    <result>
    <row id="0">
    	<field id="0">0</field>
    	<field id="1">Kåre</field>
    </row>
    <row id="1">
    	<field id="0">1</field>
    	<field id="1">Bengt</field>
    </row>
    <result>

     

    praktisk for ajax applikasjoner

     

     

    <?php
    
    function error($e) {
    if ($e->getCode() == 123) print 'Warning: ' . $e->getMessage() . "\n";
    else print 'Exception caught: ' . $e->getMessage() . "\n";
    print ' ' . $e->getFile() . ': ' . $e->getLine() . "<br />\n";
    if ($e->getCode() != 123) die();
    
    }
    
    class MysqlTableObject {
    
    private $ArrayOfRowsAsObjects;
    
    public function __construct($ArrayOfRowsAsObjects = null) {
    	try {
    		if ($ArrayOfRowsAsObjects === null) throw new Exception('Must include an array of rows as objects on creation!');
    		else $this->ArrayOfRowsAsObjects = $ArrayOfRowsAsObjects;
    
    	} catch (Exception $e) {
    		error($e);	
    
    	}
    
    }
    
    public function GetRow($Row) {
    	try {
    		if ($this->ArrayOfRowsAsObjects[$Row] === null) throw new Exception('Row does not exist!');
    		return $this->ArrayOfRowsAsObjects[$Row];
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    
    }
    
    public function GetAll() {
    	return $this->ArrayOfRowsAsObjects;
    }
    
    }
    
    class Mysql {
    
    public $DbLink;
    private $DbHost;
    private $DbUser;
    private $DbPass;
    public $DbName;
    public $P;
    
    public function Config($DbHost = null, $DbUser = null, $DbPass = null, $DbName = null) {
    	try {
    		if ($DbPass !== null) $this->DbPass = $DbPass;
    		else throw new Exception('Password missing.');
    
    		if ($DbUser !== null) $this->DbUser = $DbUser;
    		else throw new Exception('Username missing.');
    
    		if ($DbHost !== null) $this->DbHost = $DbHost;
    		else throw new Exception('Hostname missing.');
    
    		$this->DbName = $DbName;
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    }
    
    public function Connect($DbHost = null, $DbUser = null, $DbPass = null, $DbName = null) {
    	try {
    		if ($this->DbLink === null) {
    			try {
    				$this->Config($DbHost, $DbUser, $DbPass, $DbName);
    
    			} catch (Exception $e) {
    				error($e);
    			}
    			try {
    				if ($this->P !== null) {
    					if (!$this->DbLink = mysql_pconnect($this->DbHost, $this->DbUser, $this->DbPass)) throw new Exception('Unable to connect: ' . mysql_error());
    				} else {
    					if (!$this->DbLink = mysql_connect($this->DbHost, $this->DbUser, $this->DbPass)) throw new Exception('Unable to connect: ' . mysql_error());
    				}
    
    			} catch (Exception $e) {
    				error($e);
    
    			}
    			try {
    				if (!mysql_select_db($this->DbName, $this->DbLink)) throw new Exception('Unable to select db: ' . mysql_error(), 123);
    
    			} catch (Exception $e) {
    				error($e);
    			}
    
    		} else throw new Exception('Trying to connect but is already connected!', 123);
    
    	} catch (Exception $e) {
    		error($e);
    	}
    
    }
    
    public function PConnect($DbHost = null, $DbUser = null, $DbPass = null, $DbName = null) {
    	$this->P = true;
    	$this->Connect($DbHost, $DbUser, $DbPass, $DbName);
    
    }
    
    public function SelectDb($DbName = null) {
    	try {
    		if ($DbName === null) throw new Exception('No arguments to function. Cannot select db.');
    		if ($this->DbLink === null) throw new Exception('Not connected. Cannot select db.');
    		$this->$DbName = $DbName;
    		if (!mysql_select_db($this->DbName, $this->DbLink)) throw new Exception('Unable to select db: ' . mysql_error());
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    
    }
    
    public function Close() {
    	try {
    		if ($this->DbLink === null) throw new Exception('Not connected!');
    		else mysql_close($this->DbLink);
    
    	} catch (Exception $e) {}
    
    }
    
    public function Query($Sql) {
    	try {
    		if ($this->DbLink === null) throw new Exception('Not connected!');
    		else {
    			if (!$Res = mysql_query($Sql)) throw new Exception('Unable to perform query: ' . mysql_error());
    			return $Res;
    
    		}
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    
    }
    
    public function GetArrObj($Sql) {
    	try {
    		$Res = $this->Query($Sql);
    		while ($Row = mysql_fetch_object($Res)) {
    			$ArrayOfRowsAsObjects[] = $Row;
    
    		}
    		return new MysqlTableObject($ArrayOfRowsAsObjects);
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    
    }
    
    public function GetArrN($Sql) {
    	try {
    		$Res = $this->Query($Sql);
    		$ArrayN = Array();
    		while ($Row = mysql_fetch_array($Res, MYSQL_NUM)) {
    			$ArrayN[] = $Row;
    
    		}
    		return $ArrayN;
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    
    }
    
    public function GetArrABC($Sql) {
    	try {
    		$Res = $this->Query($Sql);
    		$ArrayABC = Array();
    		while ($Row = mysql_fetch_assoc($Res)) {
    			$ArrayABC[] = $Row;
    
    		}
    		return $ArrayABC;
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    }
    
    public function Escape($Sql) {
    	try {
    		if (!is_numeric($Sql)) {
    			if (get_magic_quotes_gpc()) $Sql = stripslashes($Sql);
    			if ($this->DbLink === null) throw new Exception('Not connected!');
    			else $Sql = mysql_real_escape_string($Sql, $this->DbLink);				
    		}
    		return $Sql;
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    
    }
    
    }
    
    class Db extends Mysql{
    
    public function GetXML($Sql, $NamedFields = null) {
    	try {
    		if ($NamedFields === null) $Array = $this->GetArrN($Sql);
    		else $Array = $this->GetArrayABC($Sql);
    		$XMLStart = "<?xml version=\"1.0\">\n<result>\n";
    		$XMLStop = "</result>\n";
    
    		$XMLMiddle = '';
    		foreach ($Array as $K => $V) {
    			$XMLMiddle .= "\t<row id=\"" . $K . "\">\n";
    			foreach ($V as $Key => $Value) {
    				$XMLMiddle .= "\t\t<field id=\"" . $Key . "\">" . $Value . "</field>\n";
    
    			}
    			$XMLMiddle .= "\t</row>\n";
    
    		}
    
    		$XMLOut = $XMLStart . $XMLMiddle . $XMLStop;
    		return $XMLOut;
    
    	} catch (Exception $e) {
    		error($e);
    
    	}
    
    }
    
    }
    
    if (!strcmp(substr($_SERVER['PHP_SELF'],-6), 'db.php')) print 'nothing to see here!';
    
    ?>

     

  5. den nyeste html spesifikasjonen (401) nevner relative url's i fleng. tviler på at det er noen anbefallinger i mot å bruke det. men i headere er det en annen sak.

     

    i dokumentet har interpretern en base uri å gå etter (document root eller definert i dokumentet med <base href=""/>). men en server kan umulig gjette basen til den relative url'en du snakker om i headeren.

  6. denne lager options lignende den i første posten fra angitt dato til dagens

     

     

     

    <?php
    
    $months = array(
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'Desember'
    );
    
    // returnerer array(array('måned', 'år'), ...);
    function getMonthsFrom($month, $year) {
    global $months;
    
    $thisMonth = date('n') - 1;
    $thisYear = date('Y');
    
    $monthNum = array_search($month, $months);
    $deltaYear = $thisYear - (int)$year;
    
    $unit = 10.0/12.0;
    
    $composite = 10 + (($deltaYear - 1) * 12 * $unit) + ($thisMonth * $unit);
    
    $arrayOut = array();
    
    for ($i = (($monthNum) * $unit); $i < $composite; $i += $unit) {
    	$arrayOut []= array($months[($monthNum % count($months))], floor($year + ($i / 10)));
    	$monthNum++;
    
    }
    return $arrayOut;
    
    }
    
    function getOption($month, $year) {
    return "<option value=\"?page=archive&car=news&mnd=$month&aar=$year\">$month $year</option>";
    
    }
    
    function getOptions($month, $year) {
    $mArray = getMonthsFrom($month, $year);
    $stringOut = '';
    foreach ($mArray as $m) {
    	$stringOut .= getOption($m[0], $m[1]) . "<br/>\n";
    
    }
    return $stringOut;
    
    }
    
    print getOptions('September', '1999');
    
    ?>

     

     

  7. @dahwan: du har helt rett. all kode som forsøker å referere til deler av dokumentet som kommer etter koden må kalles etter at dokumentet er ferdig lastet. dette gjøres med onload. dette gjelder også definering av funksjoner selv om ikke selve funksjonen kalles opp før resten av dokumentet er lastet må fortsatt funksjonen defineres i onload.

     

    window.onload = function() {
     // kode som krever ferdig lastet dokument.
    
    }

     

    @wubbable: dersom du installerer dragonfly får du tilgang til developer tools i opera, som blandt annet har en error console.

  8. det er godt mulig det er flere feil. post gjerne resultatet du fikk.

     

    mysql_query() returnerer en ressurs

    med ressursen kan vi hente ut data.

     

    $resource = mysql_query("SELECT pris FROM steder WHERE sted='$reisemal';");

    $row = mysql_fetch_row($resource);

     

    nå er $row et array som inneholder den første raden i resultatet.

    $row[0] returnerer den første kolonnen (feltet)

    $row[1] returnerer den andre kolonnen

    osv

     

     

    (int) gjør om datatypen til integer (heltall)

     

    det kan være en fordel å bruke int når du sammenlikner størrelse selv om php evaluerer tekst strenger også. dersom du bruker desimaltall kan du benytte (float) i stedet.

×
×
  • Opprett ny...