checkbox perl

kames

Grünschnabel
Hallo,

vielleicht hab ich eine Denkblockade aber ich komme nicht drauf.

Ich hole mir aus einer MySQL Datenbank 2 Felder raus und will dies als checkbox abbilden.

while (($1, $2) = $sth1->fetchrow_array) {
print "

<input type=\"checkbox\" name=\"checkbox\" value=\"$1\"> $2<br>";
}

Das geht auch. Nun möchte ich aber die ergebnis per POST übergeben und wieder in eine Datenbank schreiben, hier aber nur ein Datenbank Feld mit komma sollen die Werte getrennt werden.

Danke
 
Bitte beschreibe mal genauer was Du willst. Dein Post ist etwas wirr.

Außerdem solltest Du $1 und $2 nicht als Variablennamen verwenden, sondern etwas aussagekräftiges. $1,$2,... sind für die Matches von Regulären Ausdrücken gedacht.

Wie sieht Deine Datenbank aus und wo liegt genau Dein Problem?
 
Okay ist ein wenig schwirig.

Ich hab hier ein Materialliste und eine Gruppe Listen. Beides Tabellen in der Datenbank.

Wenn ich bei der Materialliste ein Flag auf Ja erscheint die material_id und der material_name bei der Gruppe als checkbox.

Also so:


$statement = "SELECT mat_id,mat_bezeichnung FROM material where mat_flag='Ja'";
$sth = $dbh->prepare($statement) || die $dbh->errstr;
$sth->execute ();


while ((mat_id, mat_bezeichnung) = $sth1->fetchrow_array) {
print "

<input type=\"checkbox\" name=\"checkbox\" value=\"$mat_id\"> $mat_bezeichnung<br>";
}

Das soll dann per Post weitergeben werden.

$statement = "insert into gruppe (gruppe_name,gruppe_beschreibung,gruppe_mat,gruppe_archiv) values ('$FORM{'gruppe'}','$FORM{'beschreibung'}','$FORM{'mat_id'}' ,0)";
$sth = $dbh->prepare($statement) || die $dbh->errstr;
$sth->execute ();

Aber $FORM{'mat_ud'} ist ja variable ......

und das ist mein Problem
 
Zuletzt bearbeitet:
Wiso geht das nicht ?



$a=$FORM{'anzahl'};
while ($a > 0) {
print "$FORM{'kal$a'}";
$a=$a-1;
}


Kann man $FORM keine Variable reinschreiben ?
 
Doch geht, aber Du verwendest ' , woduch die Variableninterpolation asugeschaltet wird.

Ein
Code:
$a=$FORM{'anzahl'};
while ($a > 0) {
  print $FORM{"kal$a"},"\n";
  --$a;
}

sollte funktionieren.

In deinem SQL-Statement sind Fehler drin. Außerdem solltest Du die ?-Notation von DBI verwenden, um SQL-Injections zu vermeiden.

Code:
$statement = "insert into gruppe (gruppe_name,gruppe_beschreibung,gruppe_mat,gruppe_archiv) values (?,?,?,0)";
$sth = $dbh->prepare($statement) || die $dbh->errstr;
$sth->execute ($FORM{'gruppe'},$FORM{'beschreibung'},$FORM{'mat_id'}) or die $dbh->errstr;

Zusätzlich solltest Du Dir mal use strict; anschauen...
 
Okay das Problem hab ich gelöst. Jetzt tut sich ein neues auf. Ich weiss das ich dies schonmal gelöst habe, aber das letzte mal das ich was in perl gemacht hab ist mehr als 3 Jahre her, also bitte die doofen fragen verzeihen.

Ich hab jetzt die Werte in die Datenbank geschreiben

also z.B. 3 12 8 10

Diese hole ich mir jetzt wieder aus der Datenbank raus, und schreib die in ein neues Array.

Dann möchte ich dieses array mit einem anderen Datenbankfeld vergleichen und bei ein Treffer was ausgeben.

Code:
while (($pruef_id, $pruef_bezeichnung) = $sth1->fetchrow_array) {
foreach $bla (@gruppearray) {

if ($bla eq $pruef_id) {

print "<input type=\"checkbox\" name=\"mat\" value=\"$pruef_id\" checked >  $pruef_bezeichnung<br>";
}
else {

print "<input type=\"checkbox\" name=\"mat\" value=\"$pruef_id\" >bla1  $pruef_bezeichnung<br>";
}

Problem ist nur das "if" und "else" matchen.
 
Zurück