Christian Bliß: QL / Perl -Auslesen von Zeilen-

Hallo,

bin vor ein neues Problem gestoßen:
Habe immer noch eine MySQL-Datenbank mit 5 Spalten:

name - hersteller - datum - sonstiges - id

Mit Perl gebe ich die Zeileninhalte tabellarisch aus, das mache ich so:

---------------------------------------------------
$q = "SELECT name AS '1:Name', hersteller AS '2:Hersteller', datum AS '3:Datum', sonstiges AS '4:Sonstiges' FROM film";

$sth = $dbh->prepare($q);
$sth->execute;

$zeile = 1;

my (%hash, @keys, $key, $value);
print "<table width=96% border=0 cellpadding='2' cellspacing='2'>";
print "<tr bgcolor=#D0D0D0>";
print "<th bgcolor='#C0C0C0'>Nr.</th>";
my $href = $sth->fetchrow_hashref;
%hash =  %$href;

Tabellenkopf

@keys =sort (keys %hash);  # Schlüssel sortieren
foreach $key (@keys) {
  #Regex entfernt 1: 2: 3: aus $key
  $key=~ tr/0-9://d;
  print "<th bgcolor='#C0C0C0'><font size='3'>$key</font></th>";
}
print "</tr>";

erste Tabellenzeile

print "<tr>";
print "<td bgcolor='#E8E8E8'>$zeile</td>";
$zeile++;
@keys =sort (keys %hash);  # Schlüssel sortieren
foreach $key (@keys) {
  $value = $hash{$key};
  print "<td bgcolor='#E8E8E8'><font size='-1'>$value</font></td>";
}
print "</tr>";

Tabellenbody Rest

print "<tr>";
while (my $href = $sth->fetchrow_hashref) {
  %hash =  %$href;  # Schlüssel sortieren
  @keys =sort (keys %hash);
  print "<td bgcolor='#E8E8E8'>$zeile</td>";
  foreach $key (@keys) {
    $value = $hash{$key};
    print "<td bgcolor='#E8E8E8'><font size='-1'>$value</font></td>";
  }
  print "</tr>";
  $zeile++;
}
print "</table>";
---------------------------------------------------

Nun möchte ich bei der Spalte "Namen" einen dynamischen Link erzeugen. Also jeder Name hat einen eigenen Link. Für den Link benötige ich den Inhalt der bestimmten Zelle "Namen". Dann soll natürlich auch zwischen <A href="..."> und </A> der Namen ausgegeben werden.

Beispiel:

  • Name sei "Testname"
    Ausgabe:
  • <A href="http://www.link.de/search.pl?string=Testname">Testname</A>
    der Rest der Tabelle soll unverändert bleiben.

Wie mache ich das?

MfG Christian Bliß

  1. Servus,

    also im Prinzip wie hier:

    foreach $key (@keys) {
      $value = $hash{$key};
      print "<td bgcolor='#E8E8E8'><font size='-1'>$value</font></td>";

    Nur mit dem unterschied, das Du den Wert aus dem Array geziehlt ermitteln must

    $value = keys[0];
    So als Beispiel.

    Gruss Matze ich hoffe das hat geholfen.

    1. Hallo,

      OK! Danke!

      MfG Christian Bliß

    2. print "<td bgcolor='#E8E8E8'><font size='-1'>$value</font></td>";

      Das ist nicht dein Ernst?

      Struppi.

      1. Hi,

        es war als Beispiel an sein Script angelehnt.

        print "<td bgcolor='#E8E8E8'><font size='-1'>$value</font></td>";

        Das ist nicht dein Ernst?

        Und warum nicht? Ich habe die Antwort auf seine Frage gegeben.
        Das klappt so mit Perl.

        Gruss Matze

        1. Hi,

          es war als Beispiel an sein Script angelehnt.

          print "<td bgcolor='#E8E8E8'><font size='-1'>$value</font></td>";

          Das ist nicht dein Ernst?

          Und warum nicht? Ich habe die Antwort auf seine Frage gegeben.
          Das klappt so mit Perl.

          Die Formatierung mit <font> ist depreciated und in Zeiten von CSS auch nicht mehr sinnvoll, ebenso wie die Hintergrundfarbe eines Elementes mit bgcolor zu definieren. Kann sein, das der Tipp für das Perl Skript richtig war, aber gleichzeitig solch ein HTML Code anzubieten solltest du vermeiden.

          Struppi.

          1. Servus,

            es war als Beispiel an sein Script angelehnt.

            print "<td bgcolor='#E8E8E8'><font size='-1'>$value</font></td>";

            Das ist nicht dein Ernst?

            Und warum nicht? Ich habe die Antwort auf seine Frage gegeben.
            Das klappt so mit Perl.

            Ich habe sein Beispiel dafür hergangezogen. Und was up to date ist oder nicht bezüglich HTML lasse ich andere bewerten ich weiss das nicht.

            Gruss Matze