Gå til innhold

Anbefalte innlegg

Har laget dette scriptet jeg kaller Games Pages.

Det fungerer slik at du kan legge til linker/spill til forskjellige kategorier.

Fungerer egentlig som et vanlig FFA links system.

Folk kan legge til navn, adresse, beskrivelse, bildelink, kategori, rating og antall klikk det skal begynne med(har ikke ordnet noe system for klikk linkene enda, men det kommer.).

I flat-file databasen ligger det slik:

 

2|Counter-Strike|http://www.counter-strike.net|http://www.counter-strike.net/pics/ct2.gif|Best online game ever! |10|39|Action|Saturday September 27 2003. 20:23:43

 

 

10|39 er altså 10=rating gitt og 39 klikk til å starte med.

 

 

Til nå så har jeg kunne redigert all innlegg over nett. Laget dette scriptet som printet hvert innlegg i en egen rute/tekstfelt, og gjorde dette til et sjema.

 

Men dette blir veldig uoversiktlig.

Se for deg en laaaaaaaaaaaaaaaaaang tekst rute med innhold slik vist over.

 

Så jeg gjorde slik at hver enkelt element nummer,navn,url,bilde..osv får en rute hver.

 

 <input type="text" name="name2" size=23 value="Counter-Strike"> <input type="text" name="link2" size=25 value="http://www.counter-strike.net"> <input type="text" name="picture2" size=20 value="http://www.counter-strike.net/pics/ct2.gif"> <input type="text" name="picture2" size=30 value="Best online game ever!"> <input type="text" name="rating2" size=2 value="10"> <input type="text" name="clicks2" size=2 value="39"> <input type="text" name="cat2" size=10 value="Action"> <input type="text" name="date2" size=30 value="Saturday September 27 2003. 20:23:43"> <b>Counter-Strike</b> <br>

 

Slik ble de inndelt. Litt mer oversiktlig i hvertfall. Men hvordan jeg skal få dette til å lagres i en fil, lurer jeg på. Og hvis jeg vil slette et innlegg, kanskje jeg burde lagt på en checkbox ved siden av kalt delete?

 

Jeg fikk noen til å hjelpe meg med denne oppgaven(untatt checkboxen), de kom fram til at jeg burde bruke cgi-lib.pl for å gjøre dette enklere. Noe jeg gjorde fra da av.

 

Skal vises scriptet slik det er nå. Fila er kalt sort2.cgi. Sort.cgi innehold sjemaet.

 

#!/usr/bin/perl
#  Games pages  

print "Content-type:text/html\n\n";

require "cgi-lib.pl";  # Require the add on cgi-lib.pl.
&ReadParse(*input);  # get the inputs
# The copyright notice. Do not remove this!
$copyright = "Games pages (C) Copyright 2003. All rights reserved.";
# Copyright notice finish.


# Start file sorting. ########################################################

  open(INFO, "data.db") or error("Can't open data.db: $! \n");
  @info = <INFO>;
  close(INFO);

@sorted = sort @info;
open(INFO, ">data.db") or error("Can't open data.db: $! \n");
flock(INFO,2);
print INFO @sorted;
close(INFO);




$i = 0;
while ($input{'name' . $i}) {
 push (@names, $input{'name' . $i} );
 push (@urls, $input{'url' . $i} );
push (@picture, $input{'picture' . $i} );
push (@description, $input{'description' . $i} );
push (@rating, $input{'rating' . $i} );
push (@clicks, $input{'clicks' . $i} );
push (@date, $input{'date' . $i} );
$i++;
}

open (FILE, ">>data.db");
$i = 0;
foreach $line (@names) {
 print FILE "$line|$urls[$i]|$picture[$i]|$description[$i]|$rating[$i]|$clicks[$i]|$date[$i]|\n";
 $i++;
}
close FILE;



print "<html><head><title>Edited Games</title></head>\n";
print "<body><h3>Edited Games</h3>\n";
print "Below here you will find the name of the games you deleted. If you deleted none, no one will be displayed.<p>\n";

print "<I>Deleted games:</I><br>";

foreach $key (keys(%input)) {
if ($input{$key} eq "") {
print "$key = <strong>Deleted</strong><br>\n"; }
else {
print "$key = Not deleted<br> \n";
}
}

print "<center><table width=\"450\" border=\"0\" bgcolor\"#000000\">";

open (DATABASE, "data.db") or error("Could not open data.db. Reason:$! \n");
my @data = <DATABASE>;
close(DATABASE);

my @datasorted = sort {$a <=> $b} @data;

foreach my $data (@datasorted) {
print "<tr><td bgcolor=#DFDFDF> <font size=2>$data  </font></TD></TR>\n";
}

print "</table></center>";
print "</body></html>\n";




  sub error {
    my($msg) = @_;
    print "<h2>Error</h2>\n";
    print $msg;
    exit;
}

 

 

Før jeg gjorde noe med dette scriptet. Altså før jeg gjorde om slik at alle elementene fikk eget felt virket dette perfekt. Hvis noen fjernet et helt felt ble det slettet og en beskjed om dette ble vist.

Men nå er alt bare tull. Han som hjelpet meg med dette var ikke særlig flink til å forklare og det var litt synd. Mista kontakt med han etterhvert, noe som gjorde prossessen betydelig vanskeligere.

 

Det scriptet gjør når jeg trykker på knappen er å slette alt, vise sida nesten som jeg vil at den skal, og alt ellers er bare tull. Alt slettes altså. :(

 

Jeg har gitt dette litt opp nå. Vet ikke helt hva jeg skal gjøre. Hadde orden på fila, men nå er alt bare tull. :dontgetit:

 

Noen som kan hjelpe.

 

Takk i alle fall.

Endret av kjetil_b
Lenke til kommentar
Videoannonse
Annonse
$i = 0;

while ($input{'name' . $i}) {

 push (@names, $input{'name' . $i} );

 push (@urls, $input{'url' . $i} );

push (@picture, $input{'picture' . $i} );

push (@description, $input{'description' . $i} );

push (@rating, $input{'rating' . $i} );

push (@clicks, $input{'clicks' . $i} );

push (@date, $input{'date' . $i} );

$i++;

}

Her er jeg litt usikker (da dette er rotete som fy),men:

push (@names, $input{'name' . $i} );

 

Du sier altså at innholdet i hashen $input, identifisert ved {'name' . $i} skal legges til @names?

 

Hvor tar du {'name' . $i} ifra? Har den hash-nøkkelen blitt opprettet?

 

En hash er ingen array, vettu.

 

EDIT:

 

Kanskje du mener å referere til et array lagret i hash-nøkkelen 'name'?

Da blir det:

push @names, $input{'name'}[$i];

Eller hvis det er en referanse til et array som ligger i hash-nøkkelen:

push @names, $input{'name'}->[$i];

 

Med forbehold om feil.

Endret av DrDoogie
Lenke til kommentar

Takker for deres svar.

Jeg vet dette scriptet er bare tull.

Jeg har jo ikke gjort så mye med dette selv. Jeg skjønte det heller ikke helt.

 

Men det jeg vil scriptet skal gjøre er å lagre informasjonen som blir sendt via sjemaet. Hver enkelt element har et eget felt og disse vil jeg skal bli samlet til en linje igjen og lagt inn i fila.

 

Alle elementene i link 5, for eksempel, blir lagt i forskjellige felter:

name5, url5, rating5..osv..

Jeg vil ha muligheten til å lagre dette helt vanlig i ei fil, data.db.

 

Dette kunne vært gjort enklere med mySQL, men jeg har ikke støtte for dette. :(

Før lå alle linkene fordelt i hver sitt felt.

 

 

<input type="text" name="link1">   
<input type="text" name="link2"> 
<input type="text" name="link3">    

 

Og de ble lagret. Men nå jeg vil jeg ha dem seperert. Slik at det blir enklere å redigere. Så hvordan skal jeg få lagret hver enkelt felt som hører sammen i en array, og lagret alle arrayene i filen(overwrite). ??

 

Skjønte du nå?

 

Dette er bare en del av et større script. Hvor jeg kan redigere de inputtene som blir lagt inn i andre deler av scriptet.

 

Takk for all hjelp. :w00t:

 

- Kjetil

Lenke til kommentar
Okey, den var ganske enkel. Visste det faktisk, ja.

Men hvordan skal jeg få lagret de som hører sammen i hver enkelt arrays da?

Altså url1,name1,rating1 i en array og url2,name2,rating2 i en annen...osv. ??

Jeg er litt usikker på om du vil ha hjelp til perl, eller om du vil at folk skal gjøre en jobb for deg.

 

Tror det ville vært bedre om du delte koden din opp i funksjoner,

sub func {...}; 

, prøvde deg litt frem, og stilte spesifikke spørsmål til koden som du selv skriver ettersom det er ting du ikke får til.

Endret av DrDoogie
Lenke til kommentar

Okey, jeg vil ha det litt klart her:

Dette er ingen jobb. Jeg har ikke tenkt å gi ut dette scriptet. Jeg har ikke tenkt å tjene penger på det. Faktisk er det minimalt med baktanker bak dette.

Jeg satte meg ned for et par måneder siden og tenkte:

Jeg har lært en del cgi/perl nå, kanskje jeg skal se om jeg kan lage et litt heftig script, for å se hvor flink/dårlig jeg er, kanskje jeg lærer litt på veien til et bra script. Og at kanskje jeg kan se på scriptet i ettertid å tenke: Dette var ikke så veldig dårlig. Men jeg har liksom ikke lyst å gi det ut. For dårlig konsept til det. Og jeg er ingen proff.

 

Dette var kanskje å overdrive, men det var slik jeg tenkte. Og fortsatt tenker.

 

Du kan jo få se scriptet hvis du vil. Hadde jo egentlig ikke tenkt å vise det til noen da. Jeg har jo lagt inn copyright og sånt da. For sikkerhetsskyld.

 

Der, nå har jeg vist det meste.

Jeg vil bare få dette til å virke. Og senere sette det opp med litt design så det skjer tøft ut. Kanskje jeg en gang kan vise det til noen, men aldri utgi det. I noen form. Jeg vil bare lære meg mer om perl. :dontgetit:

 

Så hvis du kunne hjelpe meg litt med dette og fortalt hvordan jeg skal gjøre dette, slik at jeg lærer det, samtidig som jeg får dette til å virke, da skal du ha stor kreditt altså.

 

 

Uansett om du hjelper meg litt eller ikke så sier jeg takk for at du svarte.

Og jeg hadde opprinnelig delt opp scriptet sort2.cgi i subroutines, men jeg var ikke sikker på om det funkte så bra. Men jeg trenger altså hjelp med å få hvert enkelt felt som passer samme i samme array. :ermm:

 

- Kjetil

Endret av kjetil_b
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...