Avatar billede webcreator Nybegynder
14. december 2003 - 21:34 Der er 31 kommentarer og
1 løsning

Vurdering ønskes af min kode (Book-Mark system)

Hej eksperter.

Jeg har brugt dagen i dag på, at lave et system, som jeg kan opbevare min bogmærker/favorites/bookmarks i.

Jeg har lavet dette lille projekt af flere grunde. Dels for at have noget, som jeg kunne bede jer om at vurdere (og fejlrette, så jeg bliver bedre til PHP/MySQL), og dels fordi jeg selv skulle bruge systemet. Yderligere har jeg tænkt mig at frigive den endelig version til fri download.

Jeg vil gerne bede jer kigge på koden der ligger bag, og give mig input til forbedringer eller fejlrettelser.

Koden kan hentes her : www.powerzone.dk/bm.php

og systemet kan ses i brug her : www.powerzone.dk/bookmark
Username : test
Password : test

På forhånd mange tak.
Avatar billede webcreator Nybegynder
14. december 2003 - 21:36 #1
Installation :

- Smid filerne op i en mappe på dit webhotel
- Rediger i filen config.php, så den passer til dit webhotel.
- Kør filen configure.php fra din browser (dette vil sætte databasen op)

Så er dén klaret :-)
Avatar billede webcreator Nybegynder
14. december 2003 - 21:58 #2
Ups. Koden kan hentes her :
www.powerzone.dk/bm.zip
Avatar billede detox Nybegynder
14. december 2003 - 23:32 #3
Jeg har kigget lidt på det og testet lidt. Der er bestemt nogle gode aspekter. Fx kan jeg godt lide at den opretter et par enkle og velfungerende tabeller i min database uden nogen dikkedarer.
Det er dog svært at teste den ordentlig, da der dukker en masse notices op rundt omkring, ved variabler og indeks der ikke er sat. Bare lige et eksempel: linie 27 i maneger.php: unset($name,$desc,$cate,$addr,$func);
og så bruger du senere variablerne i en form?
Avatar billede webcreator Nybegynder
14. december 2003 - 23:35 #4
Se unset'erne er netop en af de ting, jeg ikke fik kigget færdig på. Den blev faktisk brugt til at fjerne $id på et tidspunkt. Dette blev gjort for, at punktet "Delete category" ikke blev vist efter at en kategori var blevet slettet.
Avatar billede webcreator Nybegynder
14. december 2003 - 23:35 #5
Og så skal du i øvrigt have mange tak fordi du tager dig tid til at kigge på min kode. Og jeg vil straks kigge på den nævnte fejl :)
Avatar billede webcreator Nybegynder
14. december 2003 - 23:40 #6
.. skal siges at jeg også har fundet nogle fejl selv. Men det var primært HTML fejl. Det skal jo gerne følge W3C standarden for både HTML og CSS. Og det skulle den gøre nu :)
Har også fået tilføjet logoer og lidt mere teksten under "About"
Avatar billede detox Nybegynder
14. december 2003 - 23:42 #7
Det med de mange notices skyldes selvfølgelig at jeg kører med E_ALL error_reporting. Den nemme, men mindre kønne løsning er at sætte:
error_reporting(E_ALL ^ E_NOTICE);
øverst på dine sider. Den "rigtige" måde at undgå dem på er fx:
$name = isset($_REQUEST["name"]) ? $_REQUEST["name"] : "";
istedet for:
$name = $_REQUEST["name"];
Avatar billede detox Nybegynder
14. december 2003 - 23:43 #8
Altså i højere grad benytte isset() for at tjekke variabler og indeks inden de bruges.
Avatar billede webcreator Nybegynder
14. december 2003 - 23:44 #9
Ok. Det var mere advanceret. Har slet ikke hørt om den slags. Må jeg straks sætte min ind i så.
Avatar billede detox Nybegynder
14. december 2003 - 23:47 #10
Hvorfor bruger du i øvrigt $_REQUEST til at hente dine variabler. Er det fordi de både kan komme fra $_POST og $_SESSION?
Avatar billede webcreator Nybegynder
14. december 2003 - 23:50 #11
Ja - delvist. Nogle af mine variabler kommer fra URL'erne (fx. når der skal slettes/redigeres et link). Andre gange er den fra en form.

Det er en ting jeg ofte bliver spurgt over, og jeg undre mig en egentlig en smule. Er det en dårlig måde at gøre det på ? Folk siger fx. at jeg skal bruge $_GET i stedet.
Avatar billede webcreator Nybegynder
14. december 2003 - 23:53 #12
Sikke jeg staver og formulerer mig. Beklager. Har ikke fået så meget søvn. Kom i seng kl. 6 i morges. Har jo arbejdet på det her system :-)
Avatar billede webcreator Nybegynder
15. december 2003 - 00:39 #13
http://www.powerzone.dk/bm2.php  - Ny version

Så fik jeg rettet nogle fejl. Jeg tror at den er ved at blive helt god nu.

Jeg har ryddet lidt op i mine "Unset"'er. Jeg bruger dem bla. fordi, jeg ikke vil have, at der ligger noget i min form efter at jeg har submittet det, og det er blevet tilføjet til databasen.

Yderligere bruger jeg det under "posts.php", for at tømme $id. Dermed vises delete-linket ikke mere.

Endelig har jeg rettet en del dumme fejl. Men der er muligvis flere :-)

Jeg har ikke kigget på muligheden for at benytte noget andet end $_REQUEST["var"]; Det hører jeg gerne mere om.

Det med error_reporting(E_ALL ^ E_NOTICE); og $name = isset($_REQUEST["name"]) ? $_REQUEST["name"] : ""; har jeg heller ikke fået kigget på endnu.

/Webcreator [jimmy@powerzone.dk]
Avatar billede webcreator Nybegynder
15. december 2003 - 00:39 #14
http://www.powerzone.dk/bm2.zip - Ny version
(Ved ikke, hvorfor jeg absolut _vil_ kalde mine zip-filer for PHP-filer :-)
Avatar billede webcreator Nybegynder
15. december 2003 - 15:20 #15
http://www.powerzone.dk/bm3.zip - Endnu engang ny version.
Menuen er ændret en smule, teksterne er ændret lidt mm. Primært mindre detaljer.
Avatar billede detox Nybegynder
15. december 2003 - 16:33 #16
Jeg har kigget lidt på din nyeste version. Den fungerer for så vidt udemærket, når jeg tilføjer:
error_reporting(E_ALL ^ E_NOTICE);
øverst på siderne. Det kunne sikkert være nok at tilføje den i 'config.php', da den bliver kaldt fra de andre sider.
Der er et par småting omkring tabellerne. Jeg synes fx det kunne være en idé at lave "bookmarks.address" og "categories.category" UNIQUE. Så undgår man at det samme link eller kategori bliver lagt ind flere gange (hvilket fx er tilfældet hvis man reloader siden). Du vil så skulle bruge: "INSERT IGNORE INTO tabelnavn osv..." istedet, når der tilføjes nyt til tabellerne.
Avatar billede detox Nybegynder
15. december 2003 - 16:40 #17
En anden ting: på 'posts.php' viser den navnet på den der har postet linket, samt beskrivelsen (når man holder musen over navnet). Det kunne være rart at se selve linket osse.
Avatar billede webcreator Nybegynder
15. december 2003 - 19:03 #18
Endnu en ny version - www.powerzone.dk/bm4.zip

Flg. ændringer foretaget :

- AutoLogin tilføjet (angives i config.php, og "behandles" i index.php).

- Ved klik på en kategori, vises kategori-navnet nu over listen med links. Dermed kan
  man lettere overskue, hvilken kategori man befinder sig i. Yderligere vises også
  en beskrivelse af kategorien, hvis en sådan er angivet

- Ved slet af bookmark udskrives navnet på bookmark'en, så man ikke risikerer
  at slette den forkerte.

- Det er blevet muligt at redigere i kategorierne (kategori-navn og beskrivelse).
  Dette har betydet at edit.php er lavet en hel del om.

Systemet er så vidt jeg kan se, ved at opfylde de krav jeg satte til det i starten.
Jeg håber derfor at du/I vil tage endnu et kig på filerne, og se om jeg har fået smidt
en fejl ind et eller andet sted. Jeg kan ikke umiddelbart få øje på nogen.

Efterfølgende må det så være tid til en Final Release :)
Avatar billede dhunters Nybegynder
16. december 2003 - 00:05 #19
ser godt ud...
Avatar billede detox Nybegynder
16. december 2003 - 02:17 #20
Jeg havde misforstået det med navnet. Jeg brugte sådan en autofill ting som lagde mit navn i feltet istedet for et navn på linket.
Det med autologon er en fin feature. Måske kunne det laves med en lille checkbox ved første login, med 'husk mig fremover'.
Her kan du faktisk spare et kald til din database (search.php):

    $hits = mysql_query("SELECT COUNT(*) AS total FROM bookmarks WHERE name LIKE '%$word%' OR description LIKE '%$word%'") or die(mysql_error());
    $alto = mysql_result($hits,0);
   
    $return = mysql_query("SELECT * FROM bookmarks WHERE name LIKE '%$word%' or description LIKE '%$word%' ORDER BY name LIMIT $from,$max") or die(mysql_error());

Kunne laves sådan:

    $return = mysql_query("SELECT * FROM bookmarks WHERE name LIKE '%$word%' or description LIKE '%$word%' ORDER BY name LIMIT $from,$max") or die(mysql_error());
    $alto = mysql_num_rows($return);
   
Ellers alt i alt et fint lille system du har fået banket op der ;o)
Avatar billede webcreator Nybegynder
16. december 2003 - 19:19 #21
Hej igen.

Så burde det være absolut sidste version. De sidste fejl skal rettes hvis der er nogen, og så udgiver jeg systemet på div. script-sider.

- Jeg har add'et en logout-funktion (logout.php)
- index.php er ændret så den passer til auto-logon
- check.php er ændret og optimeret
- config.php er ændret en smule
- menu.php har fået tilføjet punktet "logout", der kun vises når man er logget ind.
- Search.php er optimeret (MySQL - forslag fra detox)

Jeg skulle ikke mene, at der er foretaget ændringer i de resterende filer.

Den sidste nye version er at finde her : www.powerzone.dk/bm5.zip

- Smid venligst feedback som et svar denne gang :-)
Avatar billede detox Nybegynder
17. december 2003 - 01:14 #22
Jeg er ked af at sige at den rettelse jeg foreslog i 'search.php' nu giver problemer når der er flere resultater en $max (fra config.php). Så jeg bliver nødt til at foreslå dig at vende tilbage til din oprindelige måde at finde antal hits på:

$alto = mysql_result(mysql_query("SELECT count(*) FROM bookmarks WHERE name LIKE '%$word%' or description LIKE '%$word%'"),0);

En lille detalje er, hvis man søger på "" (et tomt felt) siger den fx:
"Search for gave 7 hits". Derfor vil jeg foreslå at du enten fjerner muligheden for at søge på et tomt felt eller ændrer output til fx:
echo "<div class=\"text\">Search for \"$word\" gave $alto hits</div>";
så man fx får:
"Search for "" gave 7 hits".
Ellers synes jeg det fungerer fint (særlig efter 10'øren ang. navnet faldt).
m.v.h. c",)
Avatar billede webcreator Nybegynder
17. december 2003 - 09:29 #23
Hej igen, detox. Lækkert at du kommentere så meget :)

Jeg ser lige på det med MySQL'en senere i dag. Jeg har for øvrigt fundet et andet problem, som du nok også har opdaget, da du medvirker i den diskution også. Nemlig at jeg får problemer ved brug af "-tegn. Dette vil jeg ligeledes se på i dag.
Avatar billede webcreator Nybegynder
18. december 2003 - 21:16 #24
www.powerzone.dk/bm6.zip

Hej igen igen :)

Så er koden endnu engang blevet forbedret - og dermed risiko for nye fejl.

Det er primært funktionerne stripslashes(), nl2br() og htmlentities() som jeg nu har gjort brug af. Dette er for at sikre, at det korrekte indhold fra databasen blev udskrevet, og at folk ikke pludselig kom frem til nogle mærkelige resultater i deres input-felter efter submit af data.

Jeg håber at du/i vil gennemgå koden endnu engang.

- Mange tak :)
Avatar billede webcreator Nybegynder
18. december 2003 - 21:16 #25
Jeg er lidt i tvivl om hvorvidt, at jeg har brugt funktionerne korrekt. Men det glæder jeg mig så til at høre, om jeg har.
Avatar billede detox Nybegynder
20. december 2003 - 01:22 #26
Jeg kan ikke finde nogle fejl i de forskellige funktioner. Jeg tror din brug af: stripslashes(), nl2br() og htmlentities() er helt fin. Spørgsmålet er om nl2br() gør nogen forskel i det her tilfælde, men den skader jo ikke.
Personligt har jeg forsøgt mig med en lille tilføjelse, der gør at kategorien osse bliver forvalgt i 'edit.php'. Det synes jeg nemlig er lidt rarere ;o).
Jeg har brugt:

      while ($cat = mysql_fetch_array($categories)) {
        echo "<option value=\"".$cat["id"]."\"";
        if ($cat["id"] == $bookmark["category"]) echo " selected='selected'";
        echo ">".nl2br(htmlentities($cat["category"]))."</option>";
      }

og det fungerer lige efter hensigten.
Ellers kan jeg ikke finde andet jeg vil ændre c",)
Avatar billede webcreator Nybegynder
20. december 2003 - 11:00 #27
Hej Detox. Det lyder helt perfekt. Jeg kigger lige på dit forbedringsforslag, når jeg kommer hjem fra juleindkøbene. Og så skal jeg jo gerne have et svar. Du har været yderst behjælpelig. Tak for det :-)
Avatar billede webcreator Nybegynder
20. december 2003 - 18:52 #28
Nej, du har forresten ret i, at nl2br ikke har nogen nytte her. Man kan jo ikke lave tekst med linieskift. Så den fjerner jeg da igen. Godt set :-)

Hvad angår automatisk valg af kategori under Edit, så giver jeg dig ret. Den funktion manglede faktisk. Var bare for doven til at tilføje den. Men nu har jeg ingen undskyldning for ikke at gøre det, så det gør jeg :)

Og så vil jeg gerne bede dig om et svar. Be be :-)
Avatar billede webcreator Nybegynder
20. december 2003 - 20:03 #29
Btw - til interesserede. Hvis nogen vil have systemet, så hold øje med www.powerzone.dk - her vil mine fremtidige kreationer være tilgængelige. Jeg skal dog liige have et nogen lunde site op at stå først.

Indtil videre kan den tilrettede og forhåbentlig fejlfrie version hentes her :
www.powerzone.dk/bm.zip
Avatar billede detox Nybegynder
21. december 2003 - 00:48 #30
Jamen jeg ber da osse c",)
Avatar billede webcreator Nybegynder
21. december 2003 - 00:51 #31
Værs'go. Du har fortjent dem. Igen, tak for hjælpen. Og glædelig jul :-)
Avatar billede detox Nybegynder
21. december 2003 - 00:53 #32
Selv tak og glædelig jul til dig osse *;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester