PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: Matii 2004-10-28 10:52:24
Leht on jagatud div-iga headeriks, vasakmenüüks, paremmenüüks ja keskel asub sisu. Nüüd kui sisu sisaldab PHP-koodi, mis omakorda sisaldab funktsiooni exit() lõpetatakse lisaks skripti tööle vasak- ja paremmenüü kuvamine.

Millist funktsiooni kasutada, et HTML-kood kuvatakse lõpuni?
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: mrq 2004-10-28 11:55:00
Anna oma kood, sest võimalik, et sa lähened asjadele puht ideoloogiliselt valesti!
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: Matii 2004-10-28 12:25:07
Üldjoontes on lehe HTML-osa selline.

PHP kood:
 
<html>
 <
head>
   <
title></title>
 </
head>
 <
body class="body">

   
// Lehe päis
   
<div class="pais" align="left">
   </
div>

   
// Siin asub PHP-kood
   
<div class="keskplokk">
   </
div>

   
// Lehe jalus
   
<div class="jalus" align="center">
   </
div>

   
// Siin vasakmenüü jm mudu
   
<div class="vasaktulp">
   </
div>

   
// Siin paremmenüü jm mudu
   
<div class="paremtulp">
   </
div>
   
 </
body>
</
html>
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: mrq 2004-10-28 13:14:01
Ja miks on vaja, et PHP kood lõpetaks tegevuse? Äkki annad selle ka!
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: Matii 2004-10-28 14:06:14
TSITEERITUD:
Ja miks on vaja, et PHP kood lõpetaks tegevuse? Äkki annad selle ka!
Nt kui kasutatakse midagi sellist

PHP kood:
 
if(isset($_GET['tee']) && $_GET['tee'] == 'mis vaja'){
   
// siia tegevus
   
exit;
}

/* Siia kuvatakse midagi muud, mida eelneva tegevuse juurde ei ole vaja kuvada nt avalehe tekst vms */
echo 'Tere'

Või siis nt vormi kontroll

PHP kood:
 
if(!$korras){
   exit(
'Ei ole korras');
}
// Siia tegevus, juhul kui on korras
Viimase näite juurde saaks küll else tingimuse anda, kuid esimese näite puhul eriti mitte.
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: dumba 2004-10-28 14:21:12
üldiselt on mingi formi kontroll puhul exiti või die kasutamine mõttetu. Ülesehitus peak olema pigem stiilis
if($error){väljasta viga}else{tee mis vaja}

aga kui tahad siiski scripti peatada tuleks ilmselt kasutada isetehtud exit funktsiooni, midagi sellist ->

function v2lju()
{
die('siia pane lehe lõpp, mida tahad veel enne suremist väljastada');
}
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: mrq 2004-10-28 16:20:50
Oi jah see kood on küll siis ikka dünaamilisusest väga kaugel! Aga mis siis saaks kui error oleks vaja välja kuvada ükskõik kuhu? Algus, lõpp, keskel?
Seega konseptsioon näeks ette:

PHP kood:
 
<?php
//siin teed kogu tegevuse
//HTML lehele kuvad seda mida vaja!!! Kas viga või kood või mitte midagi
if(isset($_GET['tee]))
     $tegevus = $_GET['
tee'];
switch ($tegevus){
    case 1:
        $viga_tegevus = kontroll();
        if(!$viga_tegevus)
        $keskele = seisa();
        else
        $keskele = '
Ei saa seistajuba seisan!';
    break;
    case 2:
        $viga_tegevus = kontroll();
        if(!$viga_tegevus)
        $keskele = istu();
        else
        $keskele = '
Ei saa istudajuba istun!;
    break;
}
?>
<html>
<head>
   <title></title>
</head>
<body class=\"body\">

   <div class=\"pais\" align=\"left\">
   </div>

   <div class=\"keskplokk\">
?>
echo $keskele;
<?php
   
</div>

   <
div class=\"jalus\" align=\"center\">
   </
div>

   <
div class=\"vasaktulp\">
   </
div>

   <
div class=\"paremtulp\">
   </
div>
   
</
body>
</
html>
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: Matii 2004-10-28 18:14:10
Kas tõesti tuleks iga pisema asja jaoks switch teha? Mul juba on üks switch tehtud lehtede vahetamiseks ja eriti siis kui ühte php faili on pandud mitu vormi ja vormi kontrolli (2 lisamist, 2 muutmist, 2 kustutamist, 3 kuvamist)
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: mrq 2004-10-29 09:31:06
Ei pea tegema switchiga.Kui suudad turvaliselt sisenditest sõltuvalt panna tööle PHP scripti ning otse funktsioonide poole pöörduda, siis pole vaja mingeid tingimusi luua. Aga kahjuks on see võimatu! Iga elemendi jaoks on vaja siis mingeid kontroll momente, et kasutaja ei saaks hakata igast huvitavaid asju testima. Switch on lihtsalt üks varjant. Teine varjant on koguda kõik andmed kokku alguses ja siis kus vaja teed kontrolli või sisestuse funktsiooni! Ise kasutan template! Kui kõik kontrollid tehtud, siis tagastan masiivi koos vajalike väljastamisele kuuluvate elementidega ning need suunan template peale!
A'la echo file::parse_template(LOGIN,$login->data,$login->errors);
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: Matii 2004-10-29 11:21:21
TSITEERITUD:
Iga elemendi jaoks on vaja siis mingeid kontroll momente, et kasutaja ei saaks hakata igast huvitavaid asju testima. Switch on lihtsalt üks varjant. Teine varjant on koguda kõik andmed kokku alguses ja siis kus vaja teed kontrolli või sisestuse funktsiooni! Ise kasutan template! Kui kõik kontrollid tehtud, siis tagastan masiivi koos vajalike väljastamisele kuuluvate elementidega ning need suunan template peale!
A\'la echo file::parse_template(LOGIN,$login->data,$login->errors);

Kas tuleks iga erinev kontroll panna erinevasse funktsiooni (või teha koguni klass)?

Kas saaksid mõne konkreetsema näite tuua, kus on vormi kontrollid ja erinevad kuvamised (nt kui aadressireal on ?ava=leht avatakse mingi kuvamine, ?ava=leht&kuva=5, siis kuvatakse midagi konkreetset ja kui aadressirealt ei saada midagi, kuvatakse kolmandat.
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: mrq 2004-10-29 12:44:44
TSITEERITUD:

Kas tuleks iga erinev kontroll panna erinevasse funktsiooni (või teha koguni klass)?

Kas saaksid mõne konkreetsema näite tuua, kus on vormi kontrollid ja erinevad kuvamised (nt kui aadressireal on ?ava=leht avatakse mingi kuvamine, ?ava=leht&kuva=5, siis kuvatakse midagi konkreetset ja kui aadressirealt ei saada midagi, kuvatakse kolmandat.

Vot ütlen ausalt, et see küsimus käib isegi mulle üle jõu, sest varjante on palju aga milline kõige parem ei oskagi öelda. Et seda teada saada peaksid kogu lehe n.ö. valmis progema kogu täiega ja siis hakkad lihtsustama ja otsima kohti, mis kattuvad ning seal kasutad funktsioone!
Nt. võiksid Sa juba kasutada ?ava=5, kui sul on tegemist ainult lehtede kuvamisega aga kui sul tuleb sisse failide kuvamine, siis jälle on pahuksis! Seega hetkel Sinu käsurida näeks ette, et "ava" muutuja tähendaks ühte funktsiooni ning sisendit "leht" väärtusena ning "kuva" tähendab, et tegevus "kuva" ja väärtus 5! Aga kui nt. oleks nii! ?leht=5&fail=55. Mõlemad saavad kas kasutada default tegevust, kuvamine või allalaadimine! Eraldi neile tegevust ette anda oleks raskem! See eeldaks juba 3 muutuja või väärtuse sisse toomist. Kuidas seda lugeda? ?leht=5,kuva&fail=55,download Nüüd saaksid anda lehele 5 teada, et seda ainult kuvatakse ja fail id-ga 55 visatakse kasutajale allalaadimiseks!
See nüüd sisenditest!

Nüüd Sinu küsimuse kohta, et kui sisendit ei ole, siis oleks vaikimis(default) tegevus!

PHP kood:
 
<?php

/**
 * 
 * @version $Id$
 * @copyright 2004
 */
class lehed {
    
/*
    * Mida me välja kuvame
    */
    
var $lehele;
    
/*
    * Tekkisid vead
    */
    
var $vead;
    
/*
    * 
    */
    
var $submit;
    function 
lehed()
    {
        
/*
        * Avastasin mingi vormi tegevuse
        */
        
if (isset($_REQUEST['submit']))
            
$this->submit 1;
        else
            
$this->submit 0;
        
$this->lehele '<a href="?ava=leht">Ava leht</a><br/>
        <a href="?ava=leht&kuva=5">Kuva leht nr5</a><br />
        <a href="?ava=fail&kuva=10">Kuva fail nr10</a><br />'
;
        if (empty(
$_GET)) {
            
$this->lehele .= 'Esmakordselt lehel? Tere Tulemast!<br /> Võiks isegi sessiooni Sulle luua aga ei viitsi ;)';
        } else {
            if (!empty(
$_GET['ava'])) {
                switch (
$_GET['ava']) {
                    case 
'leht':
                        if (isset(
$_GET['kuva']))
                            
$this->lehele .= $this->leht($_GET['kuva']);
                        else
                            
$this->lehele .= 'Mida ma nüüd edasi teen?';                            
                        break;
                    case 
'fail':
                        if (isset(
$_GET['kuva']))
                            
$this->lehele .= $this->fail($_GET['kuva']);
                        break;
                    default: 
                        
$this->lehele .= 'Ei oska avada!';
                } 
// switch($_GET['ava']) 
            

        }
    } 
    function 
leht($id)
    {
        return 
'Mingi supertore leht numbriga '.$id;
    } 
    function 
fail($id)
    {
        return 
'Ja mingi huvitav fail, mis ma küll selle '.$id.' peale hakkan?';
    } 

$leht = new lehed();
echo 
$leht->lehele;
echo 
'<font color="red">'.$leht->vead.'</font>';
?>

Viimati muudetud: 29-10-2004 12:55:59
Muutja: mrq
Põhjus:

RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: dumba 2004-10-29 18:12:49
TSITEERITUD:

Vot ütlen ausalt, et see küsimus käib isegi mulle üle jõu, sest varjante on palju aga milline kõige parem ei oskagi öelda. Et seda teada saada peaksid kogu lehe n.ö. valmis progema kogu täiega ja siis hakkad lihtsustama ja otsima kohti, mis kattuvad ning seal kasutad funktsioone!


see on küll imelik lähenemine -> et kõigepealt teeme maja valmis ja siis hakkame vaatama kust seinu maha võtta.

Kõigepealt tuleks endale ikka eesmärk selgeks teha ja siis püüda seda lahendada.

switchi alternatiiv ->
turvaliselt ja dünaamiliselt saab lehekülgede lahenduse teha nii:
teed mingi kataloogi , nt nimega LEHED (kuhu paned oma lehekülgede PHP failid)
ja lehed inlude'id nii:

if($_GET['PAGE'])
{
$page=$_GET['PAGE']
}
else
{
$page='avaleht';
}

$location='LEHED/'.basename($_GET['page']).'.php';

if(!file_exists($location))
{
$location='LEHE/ERROR404/ASUKOHT/error404.php';
}

require_once($location);


NB! kataloogi LEHED alla ei tasu midagi sellist panna, mis ei ole kliendile includei'miseks mõeldud! Ja kui soovid, et ei saaks kataloogile LEHED niisma (mööda URLi) ligi, tee see veebiväliseks või kaitse .htaccessiga

Formide kohapealt soovitan jalgratast mitte leiutada ja tõmmata mõni olemas olev class
RE: Lehe jagaminie div'iga ja exit() funktsioon
Postitaja: mrq 2004-10-29 18:15:45
TSITEERITUD:


see on küll imelik lähenemine -> et kõigepealt teeme maja valmis ja siis hakkame vaatama kust seinu maha võtta.

Kõigepealt tuleks endale ikka eesmärk selgeks teha ja siis püüda seda lahendada.



Mitte, et nii peaks lähenema, sest see võtaks lihtsalt liiga mõtetult palju aega aga lihtsalt see, et mõtled funktsionaalsuse valmis ja siis hakkad neid objektideks laotama ja lammutama!

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.10119509697