Gå til innhold

Hvordan finne felter du ikke vet navnet på


Anbefalte innlegg

Lager et perl script som skal fungere nesten som et kasseapparat. Det jeg sliter med nå er å få lagt inn varene via et skjema inn i systemet. Altså ikke kjøpsprosessen, men rett og slett innlegging av varer. Databasen skal være i orden.

 

Varene vises slik:

 

matliste.JPG

 

Feltnavnene er slik:

Produkt 1 navn: prod1-1

Produkt 1 pris: prod1-2

Produkt 1 status: prod1-3

 

Produkt 2 navn: prod2-1

osv...

 

Det siste feltet blir laget slik i dette tilfellet.

prod3-1, prod3-2 osv...

Altså siste vare + 1.

 

Men nå klarer jeg ikke å finne ut hvordan jeg kan få sjekket om feltene er tomme o.l.

Scriptet må jo kunne kjøres uansett om det er 2 eller 10 varer.

 

Det jeg tenkte at kunne fungere, var å sjekke de eksisterende varene opp mot databasen slik:


my $sth = $dbh->prepare("select * from matliste order by id DESC") or feilmelding("Kan ikke velge fra tavle: ",$dbh->errmsg);
$sth->execute();
while(my ($id, $produkt, $pris, $status) = $sth->fetchrow_array()) {

# Så få fram alle feltene i formen og finne om det eksisterer noen som passer med $id


foreach $key (keys(%FORM)) {
($prod,$felt) = split(/-/,$key);
$prod =~ s/prod/ /;
if ($prod == $id) {
# gjøre noe fornuftig
}
}

 

Men nå vet jeg ikke hvordan jeg skal gjøre dette videre. Vi vil sjekke om feltene er tomme, og i såfall slette varen. Samtidig må jeg sjekke om en ny vare er lagt inn.

 

Kult hvis noen kunne gitt noen råd. Står litt fast her.

Lenke til kommentar
Videoannonse
Annonse

du kan gi alle felter samme navn og hente dem ut som et array, demo html:

 

<form method="post">

<input name="produkt" value="Pizza"><br>
<input anme="produkt" value="Iskrem"><br>
<input type="submit">

</form>

 

og i cgi-sriptet

 

#!/usr/bin/perl

use strict;
use CGI;
my $cgi = new CGI;

my @produkter = $cgi->param('produkt');

print $cgi->header;

print "Følgende prdukter ble funnet:<br>";

print $_, "<br>\n" for @produkter;

print "<i>håper det smaker!</i><br>\n";

Lenke til kommentar

Må innrømme at jeg rett og slett sliter med checkboxer til dette scriptet. Har kommet til varekjøp-biten, og der skal jeg ha en checkbox om hvorvidt en vare er levert eller ikke.

 

while(my ($id, $produkt, $pris, $status) = $sth->fetchrow_array()) {

print checkbox(-name=>'levert',
                          -checked=>0,
                          -value=>$id,
                          -label=>'levert');
}

 

Jeg får det rett og slett ikke til å fungere ut av dette. Resultatet stemmer ikke med

det jeg krysser av.

 

Slik prøver jeg å hente ut informasjonen:

 

my @markert = $cgi->param('levert');

foreach $x (@id) {
$x = $x - 1;

if ($markert[$x] == $x) {
print qq(Ja <input type="hidden" value="Ja" name="levert" /><br \>);
}
else {
print qq(Nei <input type="hidden" value="Nei" name="levert" /><br \>);
}
}

 

Tror jeg er litt på villspor, så håper noen kan få meg på rett spor igjen :)

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å
×
×
  • Opprett ny...