Gå til innhold

[PHP + MySQL] Hvordan kunne jeg forbedret koden min?


Gjest

Anbefalte innlegg

Hei folkens!

Da har jeg kodet noe greier! :)

 

Dette lille prosjektet går ut på å legge ut hva du ønsker deg til jul iår.

Ganske enkelt og jeg vil ha tips til hva jeg han gjøre annerledes i koden min :)Alt er kodet i PHP med OOP forresten.

 

How to install:

Pakk ut alt.

Opprett en database kalt:

jul09

Ta så å kjør følgende MySQL kode:

 

-- phpMyAdmin SQL Dump

-- version 3.2.0.1

-- http://www.phpmyadmin.net

--

-- Vert: localhost

-- Generert den: 29. Okt, 2009 13:34 PM

-- Tjenerversjon: 5.1.37

-- PHP-Versjon: 5.3.0

 

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

 

--

-- Database: `jul09`

--

 

-- --------------------------------------------------------

 

--

-- Tabellstruktur for tabell `ønsker`

--

 

CREATE TABLE IF NOT EXISTS `ønsker` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`ønske` varchar(255) NOT NULL,

`rekkefølge` varchar(255) NOT NULL,

`dato` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=19;

 

--

-- Dataark for tabell `ønsker`

--

 

INSERT INTO `ønsker` (`id`, `ønske`, `rekkefølge`, `dato`) VALUES

(6, 'bok6', '8', '29-10-2009'),

(7, 'bok7', '9', '29-10-2009'),

(1, 'bok1', '3', '2009-09-14'),

(2, 'bok2', '2', '2009-09-14'),

(3, 'bok3', '1', '2009-09-14'),

(4, 'Bok4', '7', '29-10-2009'),

(5, 'bok5', '6', '29-10-2009');

 

 

Åpne config.php som du finner i includes< mappen her kan du endre mysql connect info til database.

 

Prosjekter:

 

* Uten passord * Versjon 0,1

 

 

* Uten passord * Versjon 0,2

 

 

EDIT:

<b>Online eksempel:</b>

 

 

EDIT2:

Bugs funnet i versjon 0,1:

 

Bugs funnet i versjon 0,2:

* Flytte bugs om det er mange mellomrom, f.eks: id 2, id 5 og id 6 skal bytte plass da tar den bare å teller fra id 0 til id 3

 

EDIT3:

Er nå mulighet for å overskrive! :)

Endret av Gjest
Lenke til kommentar
Videoannonse
Annonse

OOP i PHP er en spøk, litt over grensen til det morbide. Hadde du bare visst hvor mye minne OOP i PHP sluker, så hadde du latt være. PHP er ikke et objektorientert programmeringsspråk; det er et scriptspråk!

 

Ye gods..

Endret av KVTL
Unødvendig quote fjernet
Lenke til kommentar
OOP i PHP er en spøk, litt over grensen til det morbide. Hadde du bare visst hvor mye minne OOP i PHP sluker, så hadde du latt være. PHP er ikke et objektorientert programmeringsspråk; det er et scriptspråk!

 

Ye gods..

 

Spøker du nå eller? - Hva mener du er et "OOP språk" ? - Og hva mener du med scriptspråk? Et script kan da skrives i OOP det da?

Lenke til kommentar
OOP i PHP er en spøk, litt over grensen til det morbide. Hadde du bare visst hvor mye minne OOP i PHP sluker, så hadde du latt være. PHP er ikke et objektorientert programmeringsspråk; det er et scriptspråk!

 

Ye gods..

Ja, jøss, når du sier det sånn så må jo det virkelig stemme! :roll: Seriøst, kan du dokumentere påstanden, eller skal vi bare avskrive det her som ren og skjær bullshit først som sist? Jeg vil anta en klassedefinisjon tar maks et par kB ekstra minne i forhold til en funksjon, og du skal ha alvorlig lite minne for at det skal ha noe å si i det heltatt.

 

Forøvrig, at PHP tildels er en vits når det kommer til OOP skal jeg ikke argumentere mot, men at PHP er et scriptspråk har ingenting med hvorvidt det kan ha OOP eller ei.

Lenke til kommentar

Du bør se litt på hvordan du sorterer ønskene, nå sorterer den ikke numerisk men alfabetisk.

 

Kunne vært greit også å få lov å legge inn et ønske som nummer 2, selv om det er et ønske med den prioriteten fra før. Kan bare flytte alle ønskene fra 2 og ned ned ett hakk

Lenke til kommentar

Kikket på siden og det første som slo meg var at hele løsningen hadde vært veldig mye mer smooth dersom ønskelisten lå i en DIV og du brukte jQuery sin ajax-funksjonalitet til å sende "opp/ned/slett" og oppdatere innholdet i DIV'en.

 

Så kikket jeg raskt på sort.php, og svarte mann... in the name of all that is holy, bytt ut

<meta http-equiv="refresh" content="0;URL=index.php">

med

header('Location: index.php');

 

Når du bruker løsningen du har nå vil webserveren gjøre seg ferdig med å prosessere sort.php, sende siden (selv om den er tom) til nettleseren, nettleseren vil vise siden og sende deg tilbake dit du kom fra. Det er derfor man får et veldig merkbart avbrudd hver gang man trykker på noe.

 

Bruker du Header()-funksjonen i php vil ikke webserveren sende sort.php, den vil "redirecte" webrequestet til index.php uten at brukeren merker noe og brukeren slipper det hvite "hakket" hver gang man trykker på noe.

Lenke til kommentar

Takk for svar PlasBox, skal titte på jQuery, har du noe forslag for meg hvordan jeg kan oppdatere hele innholdet i div'en til MySQL databasen?

Hva er MySQL koden?

Lenke til kommentar
Takk for svar PlasBox, skal titte på jQuery, har du noe forslag for meg hvordan jeg kan oppdatere hele innholdet i div'en til MySQL databasen?

Hva er MySQL koden?

 

Altså, det er ikke bare-bare å gå over til jQuery, det krever en ganske stor overgang. Du må først og fremst laste ned nyeste jQuery-fil og lage en fil til din egen javascript-kode (f.eks. myscript.js). Begge disse includes i index.php med:

<script src="jquery-whateverfilnavn.js" type="text/javascript"></script>
<script src="myscript.js" type="text/javascript"></script>

 

sort.php må du skrive om slik at den kan få tilsent hva den skal gjøre ($_GET['do'] == up/down/delete) og $_GET['id'] er ID på raden som skal flyttes/slettes. Til slutt i sort.php genereres ønskelista.

 

I stedefor å linke til sort.php?id=32&do=up bruker du ajax til å kalle denne filen. Pseudokode blir:

function doStuff(rowid, action)
{
 $.get("sort.php", { id: rowid, do: action }, function(data)
 {
$("#list").html(data);
 });
}

 

Når du trykker "Opp" på en item i listen må du kjøre javascript-funksjonen doStuff(28, 'up'). $.get() henter da inn sort.php?id=28&do=up og hva enn denne filen ellers ville printet på skjermen (altså ønskelisten) blir returnert til variabelen data.

 

$("#list").html(data); setter innholdet i et html-object med id="list" til det sort.php returnerer (altså ønskelisten).

 

 

Ok, dette er vanskelig å forklare men..

 

1. sort.php genererer ønskelisten med knapper som kjører doStuff(id, "up/down/delete");

2. når du trykker på en knapp kjøres funksjonen doStuff med verdier for den raden/knappen, f.eks. doStuff(13, 'down')

3. sort.php?id=13&do=down hentes, og rad med id 13 flyttes ned. Kode for ønskeliste genereres og returneres til javascriptet, i variabelen "data"

4. innholdet i <div id="list"> settes til variabelen "data"

 

Get it? xD

Lenke til kommentar

Hei!

Da var en ny versjon på nettsiden.

Pakket til *.rar

 

 

EDIT:

Bugs funnet:

* Flytte bugs om det er mange mellomrom, f.eks: id 2, id 5 og id 6 skal bytte plass da tar den bare å teller fra id 0 til id 3

 

Noen andre som kan hjelpe meg? :)

 

EDIT2:

Det er lagt til debug update.

 

EDIT3:

0,2 bug rettet.

 

EDIT4:

Mulighet for å overskrive.

Endret av Gjest
Lenke til kommentar

- Bruk skikkelig identering

- Bruk engelsk overalt

- Det du har nå er en salig blanding av PHP4 og PHP5, gå for PHP5 all over

- Ikke bland HTML og PHP på den måten du nå gjør. Lag egne template-filer for HTML.

- Dropp bruken av global, titt heller på Dependency Injection

- Vurder å droppe mysql_ til fordel for PDO eller MySQLi

- <font> er dritt-html

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...