[PHP] siteontwerp netter maken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44
Excuses voor de vage titel, ik probeer het in de TS beter te doen :)

Ik zit hier met een vrij slecht uitbreidbare site. Een beheeromgeving waarbij verschillende beheerders voor hun klanten rechten kunnen toekennen e.d., heeft vaak dezelfde gegevens nodig. Dus kom je, nadat je bij index.php op een van de links hebt geklikt, eerst bij klantkeuze uit. Daarna ga je soms verder naar kies gebruiker om iets te doen.

structuur is dus als volgt:
code:
1
2
3
4
5
6
7
8
9
10
voegtoe verwijder keuze3 keuze4
    |       |        |        |
     -------------------------
                |
           kies klant
                |------------ 
            kies gebruiker   |
     ---------------         |
    |       |       |        |
voegtoe verwijder keuze3 keuze4


Hoe kan ik dat overzichtelijk maken? In de code is het nog een geweldige if-else ladder, omdat er niet 4 maar 20 knoppen zijn die langs 'kies klant' gaan, en sommige ook langs 'kies gebruiker'. Case-structuur lijkt mij een verbetering, maar ook niet geweldig. Heeft iemand een beter idee?

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Zo zonder code en ontwerp vraag ik me af waarom je een 'geweldige if-else ladder' hebt :?

Desnoods geef je ze eerst de keuze om een klant te kiezen, zodat je nog maar 4 opties hebt na stap 1?

Maar ik blijf erbij dat het veel simpeler kan, mits je wat meer info hier neerplempt :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44
ok, ik zal even wat meer info verzamelen in de vorm van code. Mij lijkt dat alleen niet zo noodzakelijk, omdat het om de structuur gaat.
een gedeelte van kiesklant.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
if ($_GET['action'])=delete)
{
   $next="kiesgebruiker.php";
   $nexturl="delete.php";
}

if ($_GET['action'])=add)
{
   $next="kiesgebruiker.php";
   $nexturl="add.php";
}
....
?>
<form target="<?php echo $next;?>" method="POST">
<input type="hidden" name="nexturl" value="<?php echo $nexturl; ?>" />
<select name="usercode">
<?
while (mysql_fetch_array($fp))
{
......
}
?>
</select>
</form>

De werkelijke code zou de opmaak erg verpesten :)

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Waarom doe je die selectie zo, kan het niet in een scherm? Wat beheer je enz

Ik zou een geheel ander structuur toepassen en veel meer actie/module gericht gaan werken. Je logt in en kiest een actie, klant of gebruiker. Vanwaar je weer naar andere stappen kan enz enz. Meer kan ik er op het moment ook niet van maken :o

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

MBV schreef op 19 april 2004 @ 15:44:
ok, ik zal even wat meer info verzamelen in de vorm van code. Mij lijkt dat alleen niet zo noodzakelijk, omdat het om de structuur gaat.
een gedeelte van kiesklant.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
if ($_GET['action'])=delete)
{
   $next="kiesgebruiker.php";
   $nexturl="delete.php";
}

if ($_GET['action'])=add)
{
   $next="kiesgebruiker.php";
   $nexturl="add.php";
}
....
?>
<form target="<?php echo $next;?>" method="POST">
<input type="hidden" name="nexturl" value="<?php echo $nexturl; ?>" />
<select name="usercode">
<?
while (mysql_fetch_array($fp))
{
......
}
?>
</select>
</form>

De werkelijke code zou de opmaak erg verpesten :)
PHP:
1
if ($_GET['action'])=delete)


Gebruik twee keer == en aanhalingstekens om delete. :)

Verder kan je een switch statement gebruiken, dat is al een stuk overzichtelijker.

[ Voor 15% gewijzigd door Verwijderd op 19-04-2004 16:10 ]


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Waarom niet met een array werken en die uitlezen, nadat je keurig een isset hebt gedaan op die get variabele :P

Dat werkt imho veel makkelijker, krijg je veel kortere code door :)

|>


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44
@ripexx: ik wil graag een 'wizard' interface houden, dus je kiest een gegeven, en gaat door naar de volgende. Ik weet niet precies hoe je mijn situatie wilt doen, aangezien klant afhankelijk is van gebruiker.
@dannyhaak: sorry, ik heb net even dat voorbeeldje ingetypt. niet gecopy-paste ofzo, even uit mijn blote hoofd. Typovoutje is snel gemaakt :)
@Simon: ik vat jouw niet helemaal. Bedoel je een array met constanten, die ik dan in een aparte include zou stoppen? Dat zou iig een stuk inzichtelijker zijn.
array['delete'] = kiesgebruiker.php;
array['voegtoe'] = kiesgebruiker.php; enz....
edit:
post gerust door, maar ik kan de komende paar uur niet reageren. vanavond laat pas weer :)

[ Voor 12% gewijzigd door MBV op 19-04-2004 16:41 ]


Acties:
  • 0 Henk 'm!

  • JochemK
  • Registratie: Maart 2003
  • Laatst online: 20-09 15:34
Kun je niet mbv een listbox een klant kiezen, waarna je bepaald of een user verificatie nodig is zo ja -> ga je dat doen -> zo nee iets anders.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44
Dat zit er nu dus in. Het gaat niet om verficatie, maar om beheerstaken. Je kan bijvoorbeeld een klant verwijderen, of een gebruiker van een klant. Ik zoek een manier om dat netjes op te lossen, en dat idee van de array lijkt mij (tot nu toe) het beste. Maar andere ideeën hoor ik graag :)

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Ik had gister een voorbeeld je voor je, maar die was ik vergeten te posten :P

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$paginas['delete'] = 'delete.php';
$paginas['omfg']   = 'omfg.php'  ;

if (isset($_GET['action']) AND isset($paginas[  $_GET['action']  ]))
{
   include_once ($paginas[  $_GET['action']  ]);
}
else
{
   echo 'Error: pagina niet gevonden';
}
?>

[ Voor 32% gewijzigd door simon op 20-04-2004 08:54 ]

|>


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
misschien een beetje algemene opmerking, maar het gebruik van een template engine als templatePower of Smarty geeft wel veel meer structuur in je code ;)

Icons are overrated


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44
ik zat aan iets anders te denken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$paginas['add']    = array("kiesgebruiker.php","add.php");
$paginas['delete'] = array("kiesgebruiker.php","delete.php");

if (isset($_GET['action'] && isset($pagina[$_GET['action'])
{
   $next    = $pagina[$_GET['action']][1];
   $nexturl = $pagina[$_GET['action']][2];
}
else error("Index.php","foutje"); //error is een functie met een redirect enzo...
....
?>
<form target="<?php echo $next;?>" method="POST">
<input type="hidden" name="nexturl" value="<?php echo $nexturl; ?>" />
<select name="usercode">
<?
while (mysql_fetch_array($fp))
{
......
}
?>
</select>
</form>

edit:

en over template engines: Dat staat los van mijn vraag. Daarmee zou ik het form los kunnen koppelen (en ja, ik zou willen dat degene die met dit project is begonnen dat ook had gedaan), maar dat heeft niets met een slimmere, onderhoudbare structuur te maken voor navigeren door forms heen.

[ Voor 36% gewijzigd door MBV op 20-04-2004 09:29 ]

Pagina: 1