/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Bedste måde at gøre dette på
Fra : Stig Sørensen


Dato : 16-08-09 12:24

Beklager først overskriften, jeg kunne simpelthen ikke finde på noget
bedre.


Jeg har en PHP side (hus.php), som jeg gerne vil bruge til flere ting.
Feks: Et brugerlogin-site, hvor man kan oprette/ændre og slette et
hus. (hus er blot som eksempel).
Alt dette vil jeg gerne have brugeren skal kunne gøre fra hus.php

Man kunne selvfølgelig dele det op, med feks: opret_hus.php,
aendre_hus.php, slet_hus.php

Men når nu gerne jeg vil have det hele på én og samme side, hvordan
gøres dette så nemmest? Er der nogle retningslinier at gå ud fra?


Opret hus og Ændre hus - ligner jo meget hinanden. Begge består af
samme form med det samme felter. Ved Opret hus skal felterne bare være
tomme og så tilføje til database (efter validering).
Ved Ændre hus skal felterne selvfølgelig indeholde det data man
allerede har udfyldt da man oprettede huset, og efter noget validering
så update til databasen.

Men så er spørgsmålet så hvordan det strukturmæssigt er bedst at bygge
det sammen på.

Har lavet to eksempler:
http://pastebin.com/f626a0a22

- Kan I komme med nogle gode idéer? Hvordan gør i selv i dette
tilfælde?

Beklager begynder-spørgsmålet, men ellers bliver jeg jo aldrig klogere
hvis ikke jeg vover pelsen ;)

Mvh
Stig

 
 
Bertel Lund Hansen (16-08-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-08-09 22:43

Stig Sørensen skrev:

> Jeg har en PHP side (hus.php), som jeg gerne vil bruge til flere ting.
> Feks: Et brugerlogin-site, hvor man kan oprette/ændre og slette et
> hus. (hus er blot som eksempel).
> Alt dette vil jeg gerne have brugeren skal kunne gøre fra hus.php

Du kan godt samle al koden i én side hvor du så bare har
forskellige formularknapper til opret, ændr, slet osv.
Formularens action skal så bare kalde samme side igen, og
$_POST-arrayet indeholder så de nødvendige oplysninger der
reageres på.

Hvis du kun er ude på at spare kode, kan det også laves med
forskellige, små indgangsfiler som hver for sig inkluderer den
samme blok hvor alle funktionerne ligger.

> Men når nu gerne jeg vil have det hele på én og samme side, hvordan
> gøres dette så nemmest? Er der nogle retningslinier at gå ud fra?

<form action='#' method='post'>
<input type='submit' name='opret' value='Opret et nyt hus'>
<input type='submit' name='slet' value='Slet et hus'>
</form>

og et andet sted på siden:

if (isset($_POST['opret'])) {
   kode til oprettelse ...
}
if (isset($_POST['slet'])) {
   kode til sletning ...
}

Osv. Der er sådan set ingen grænser for hvor mange handlinger der
kan håndteres i én fil.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Dan Storm (17-08-2009)
Kommentar
Fra : Dan Storm


Dato : 17-08-09 11:09

Stig Sørensen skrev:
> Men når nu gerne jeg vil have det hele på én og samme side, hvordan
> gøres dette så nemmest? Er der nogle retningslinier at gå ud fra?

Af ren nysgerrighed; hvad er årsagen til at du vil alle de ting i én og
samme fil?


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Stig Sørensen (17-08-2009)
Kommentar
Fra : Stig Sørensen


Dato : 17-08-09 05:21

On Aug 17, 12:09 pm, Dan Storm <shadyz@_REMOVETHIS_err0r.dk> wrote:

> Af ren nysgerrighed; hvad er årsagen til at du vil alle de ting i én og
> samme fil?

For at genbruge så meget kode som muligt.

Der vil jo feks. være ens validering på POST felterne fra både 'add'
og 'edit'.


- Og så fordi jeg synes det er flottere med: file.php?add & file.php?
edit=3782
end: file_add.php & file_edit.php?id=3782

Har du et par gode eksempler til hvordan du ville gøre?
Så vil jeg meget gerne se dem ;)


Dan Storm (17-08-2009)
Kommentar
Fra : Dan Storm


Dato : 17-08-09 17:26

Stig Sørensen skrev:
> On Aug 17, 12:09 pm, Dan Storm <shadyz@_REMOVETHIS_err0r.dk> wrote:
>
>> Af ren nysgerrighed; hvad er årsagen til at du vil alle de ting i én og
>> samme fil?
>
> For at genbruge så meget kode som muligt.

'Genbrug af kode' er vist ikke det sted du kommer hen med den løsning -
jovist, du slipper nok for at genskrive noget kode, men Bertel er et
skridt i den rigtige retning.

> Der vil jo feks. være ens validering på POST felterne fra både 'add'
> og 'edit'.

Det kan også sagtens foregå centralt fremfor flere steder. Din
tilføj/opret/slet funktionalitet bør du smide i en klasse, som dine
filer benytter sig af istedet. Her skal du tænke i retning af noget
polymorfi.

> - Og så fordi jeg synes det er flottere med: file.php?add & file.php?
> edit=3782
> end: file_add.php & file_edit.php?id=3782

Ja, det er jo så en smagssag. For mig skaber det ramme om en større
usikkerhed i koden.

> Har du et par gode eksempler til hvordan du ville gøre?
> Så vil jeg meget gerne se dem ;)

Tja, personligt ville jeg nok lave et objekt der kunne kunne klare
funktionaliterne for dig.

og så lave noget ala:

<?php
   $allowedMethods = array("add", "edit", "delete");
   $method = strtolower($_GET["method"]);

   if(!in_array($method, $allowedMethods))
      $method = "add"; //default er måske add

include("hus.obj.php");

   $obj = new Hus();

   if(isset($_POST))
      $obj->handlePost();

   $obj->$method();


?>

Men altså, der kan jo gøres mange forskellige ting - måske gå over i
noget url rewrites for at gøre det pænt?

example.org/houses/add
example.org/houses/edit/3782
example.org/houses/delete/3782


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

N/A (17-08-2009)
Kommentar
Fra : N/A


Dato : 17-08-09 18:16



N/A (17-08-2009)
Kommentar
Fra : N/A


Dato : 17-08-09 17:26



Stig Sørensen (17-08-2009)
Kommentar
Fra : Stig Sørensen


Dato : 17-08-09 11:05

On Aug 17, 6:26 pm, Dan Storm <shadyz@_REMOVETHIS_err0r.dk> wrote:
> Stig Sørensen skrev:
[snip]

Hej Dan og Bertel. Mange tak for jeres eksempler. Det har givet mig
idé til at komme videre.


> Men altså, der kan jo gøres mange forskellige ting - måske gå over i
> noget url rewrites for at gøre det pænt?
>
> example.org/houses/add
> example.org/houses/edit/3782
> example.org/houses/delete/3782

Uha, jeg googlede på ovenstående, men fandt ikke noget brugbart.
Hvis du har et link til hvordan ovenstående gøres, så vil jeg blive
meget glad.

Mvh


Dan Storm (17-08-2009)
Kommentar
Fra : Dan Storm


Dato : 17-08-09 18:16

Stig Sørensen skrev:
> Uha, jeg googlede på ovenstående, men fandt ikke noget brugbart.
> Hvis du har et link til hvordan ovenstående gøres, så vil jeg blive
> meget glad.
>

Du kan kigge her:
<url: http://www.phpro.org/tutorials/Model-View-Controller-MVC.html>

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste