Jump to content
Sign in to follow this  
kjetil_b

Hvordan finne felter du ikke vet navnet på

Recommended Posts

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.

Share this post


Link to post

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";

Share this post


Link to post

Tusen takk for gode forslag. Lurer litt på hvordan jeg skal gjøre det videre.

Jeg kan jo da også ha samme navn på alle pris feltene, og status, men hvordan skal jeg få lest de av slik at riktig pris, navn og status kommer sammen, slik at jeg kan få sjekket dem?

Share this post


Link to post

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 :)

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...