PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine Kogemused Linkide genereerimine
Autor Abi Postitus Abi

paawo


Postitusi: 83
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
Linkide genereerimine

Tavaliselt ei pöörata koodis linkidele eriti tähelepanu ja need kirjutatakse html-is täielikult välja. Kui aga kunagi tekib vajadus süsteemi arendada ja linkide genereerimise ehitus muutub siis tuleb hakata kõiki neid sunnikuid käsitsi ümber kirjutama. Sellise jama vältimiseks tasub põhifunktsioonide hulka pista säärane kood.
PHP kood:

// tekitame kõik lingid ühest kohast
function link($type$file$name

$link '<a href="index.php?show='.$type.'&name='.$file.'">'.$name.'</a>'
return 
$link;
}


ja kasutada saab seda sobivas kohas kujul a.la
PHP kood:

link('module''news''Uudised');



Seda postitust on muudetud 1 kord (2007-09-09 12:33:08 paawo poolt)

09.09.2007 11:57:43 Vajutades siia näed kasutaja paawo profiili

nene
putukas


Postitusi: 303
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Linkide genereerimine

Ma olen üldise ideega nõus, et linkide loomine tuleks kuidagi välja eraldada, aga selline lihtne link() funktsioon on kaunikesti piiratud lahendus.

Enamikel lehtedel, millega mina olen kokku puutunud, pole aga kõik lingid sugugi samasuguse ehitusega. Näiteks võib mu leht vajada selliseid linke:

PHP kood:

<a href="index.php">Esileht</a>
<
a href="foorum.php?post=$postituse_id">$postituse_nimi</a>
<
a href="search.php?q=$otsis6na&p=$page_nr" class="kiir-otsing">$kategooria</a>



Sellisel juhul mind üksainus link() funktsioon ei aita. Märksa parem oleks kirjutada funkstioonid iga lingitüübi jaoks eraldi:

PHP kood:

function front_page_link($link_title) {...}
function 
forum_post_link($link_title$post_id) {...}
function 
search_link($link_title$query$page_nr 1) {...}



Kui nüüd lähemalt vaadelda, siis tegelevad need funktsioonid korraga kahe asjaga:
  * Lingi aadressi konstrueerimine,
  * Lingile vastava HTML-i elemendi konstrueerimine.

Need on kaks päris erinevat tegevust. HTML-i loomine on vajalik vaid kasutajaliidese tarbeks, samas kui aadresside kokkupanek puudutab juba programmi ülesehitust. Pealegi ei kasuta me ju aadresse sugugi üksnes linkide sees, tihti tahame suunata kasutaja header()-ga otse mingisugusele aadressile, või kasutada aadressi mõne teise HTML-i elemendi sees lisaks <a>-le (näiteks <img src="..."> ). Võibolla aga kasutame me hoopis mõnda mallimootorit ja kirjutame kogu HTML-i alati templeitide sisse.

Igal juhul paistab, et kasulik on luua hoopis funktsioonid linkide aadresside (URL-de) genereerimiseks:

PHP kood:

function front_page_url() {...}
function 
forum_post_url($post_id) {...}
function 
search_url($query$page_nr 1) {...}



Nendest saadud tulemust võib siis omakorda kasutada mõne funkstiooni sees, mis lihtsalt tekitab tavalise HTML-i lingi, või kusagil mujal:

PHP kood:

link(forum_post_url($post_id), $post_title);
header("Location: ".front_page_url());



09.09.2007 22:56:58 Vajutades siia näed kasutaja nene profiili

balduran

Postitusi: 21
Tase: 2
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Linkide genereerimine

Ma pakuks välja sellise funktsiooni.
Nene lahenduse juures ei suuda mäletada kõigi nende funktsioonide nimesid...

Ma olen rohkem nõus paawo lahendusega, aga kood oleks selline:
Nenega olen igati nõus sellega, et selline meetod ei tohi htmli väljastada!

PHP kood:


function url() {
    
$link 'index.php';
    for(
$i=0;$i<func_num_args();$i+=2)
        
$link.= ($i==0?'?':'&').func_get_arg($i).'='.func_get_arg($i+1);
    return 
$link;
}





16.11.2007 20:33:49 Vajutades siia näed kasutaja balduran profiili

cioa00

Postitusi: 53
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Linkide genereerimine

siinkohas kasvõi selline variant
PHP kood:


    function teelink($masiiv)
    {
        
$kuva false;

        if(
is_array($masiiv))
        {
            
$loendur 0;
            foreach(
$masiiv as $key => $val)
            {
                
$loendur++;

                
$eraldus = (($loendur == 1) ? '?' '&');

                
$kuva .= $eraldus.$key.'='.$val;
            }
        }
        else 
$kuva $masiiv;
        return 
$kuva;
    }



sel juhul oleks kasutusel sellisel kujul:
PHP kood:


 teelink(array('leht'=>$leheID,'tegevus'=>'vaata_veelkord'));

  kuvab aga lingi ../<index.php või miskit muud või hoopiski puudub>?leht=23&tegevus=vaata_veelkord

13.12.2007 18:43:45 Vajutades siia näed kasutaja cioa00 profiili

oop


Postitusi: 29
Tase: 2
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Linkide genereerimine

Lisan veel omaltpoolt niipalju, et alati on soovitatav kasutada absoluutseid url-e. Mugav on kasutada selleks HTML base tag-i

Relatiivne url:
Koodijupp:
<a href="index.php?leht=kontakt">kontakt</a>


Absoluutne url 1:
Koodijupp:
<a href="http://www.veebileht.ee/index.php?lleht=kontakt">kontakt</a>


Absoluutne url 2:
Koodijupp:

<html>
<head>
  <base href="http://www.veebileht.ee" />
</head>
<body>
<a href="index.php?leht=kontakt">kontakt</a>
</body>
</html>



Kasu saavad absoluutsetest url-idest nii otsingumootorid, kasutajad kes su veebilehte salvestavad jms

___________________________________________________
< Oop!>

04.12.2008 14:59:07 Vajutades siia näed kasutaja oop profiili
Kokku: 25949 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on laupäev, 19. oktoober 2019. Kell on 00:13.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2019 PHP Center. Kõik õigused reserveeritud.