PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Link aus Bild


Jürg
27.10.2003, 15:30:09
Guten Tag
Ich möcht was ganz einfaches: (Uff, wie so frage ich?)
Immer wen auf das Bild ($bildlink) geclickt wird, zählt es in der DB eines hoch.
In einer aus einer DB generierten Tabelle steht folgendes.

<a href="$bildlink"><img src="../zeichnungen/$row[verzeich]/$bild_nr[0].gif"></a>

Wie bringe ich den Link dazu, auf das Script zu gehen?

xabbuh
27.10.2003, 16:06:56
Also habe ich richtig verstanden, dass du auf das Bild klicken möchtest und anschließend ein Feld in einer Datenbanktabelle um 1 erhöht wird?

Wenn ja, probier es mal so:


//SO ÄHNLICH MUSS DEIN LINK AUSSEHEN
echo "<a href"" . $bildlink . "?klick=ja"><img src="../zeichnungen/" . $row['verzeich'] . "/" . $bild_nr[0] . ".gif"></a>";


Sobald auf diesen Link geklickt wird, wird die Datei aufgerufen, die in der Variablen $bildlink gespeichert ist. Außerdem wird die Variable $klick, die hier den Wert "ja" hat, übergeben. Der php-Code in der Datei, die nun aufgerufen wird, muss dann in etwa so aussehen:


if($klick=="ja"){
$result=mysql_query("UPDATE tabelle SET feld=feld1");
}

Jürg
28.10.2003, 12:06:39
Vielen Dank xabbuh
Nur, das geht so leider nicht! Die aufgerufene Datei ist ein Bild, da kann ich kein "if" hineinstellen.
Bei einem Link zu einer php-Datei müsste auch keine Ergänzung in Form von "...?klick=Ja" hinein, da könnte einfach in eine Zeile ein "mysql_query UPDATE" hineingeschrieben werden.

xabbuh
28.10.2003, 14:11:43
Okay, bei einem Bild sieht das anders aus. Dann müsstest du das ungefähr so machen:


echo "<a href="" . $PHP_SELF . "?link=" . $bildlink . ""><img src="../zeichnungen/" . $row['verzeich'] . "/" . $bild_nr[0] . ".gif"></a>";


Der Link verweist also auf die Seite, auf der er sich befindet.

Und dann so:


if(isset($link)){
header("Location: " . $link);
}



Die Ergänzung in Form von ?klick=ja wäre in meinem Beispiel nicht unbedingt erforderlich gewesen. Ich war nur davon ausgegangen, dass nicht bei jedem aufruf der Datei um 1 erhöht werden soll, sondern nur, wenn die Datei über diesen Link aufgerufen wird.

Jürg
29.10.2003, 15:17:08
Vielen Dank für den Ideeninput.
Nun noch die Endversion:
<?php
if(isset($link)){
header("Location:".$link);
include ("../open.inc.php");
$result = mysql_query("UPDATE Tab_down SET anz_down = anz_down + 1 WHERE id = $id");
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
........
<?
echo "
<a href="".$PHP_SELF."?link=".$bildlink."&id=".$row[id]."">
<img src="../zeichnungen/$row[verzeich]/$bild_nr[0].gif" alt="Bild: $row[ort]"></a>";
?>
Wchtig: Der "hader" muss zu aller oberst stehen, danach in der DB hochzählen. Der "include" muss nochmals in "if" angegeben werden.
Das "exit" muss da stehen, sonst wird der "head" mit eingelesen und führt zu Fehlermeldungen.

Nev
30.10.2003, 14:35:10
Hi @ll

die letzte Lösung gefällt mir schon recht gut.

Anderer Vorschlag
Ist aber nur geschmack sache ;-)

Man könnte es auch so machen.
du hast eine Datei: show_img.php

der Link schaut dan so aus:
show_img.php?imgID=5555

Inhalt der show_img.php
<?
$sql = "SELECT img, img_width, img_height, img_ext FROM Tab_down
WHERE imgID = ".$_GET["imgID"];
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
if ($row) {
$width = $row["img_width"] + 11;
$height = $row["img_height"] + 28;
$image = $PFAD.$row["img"].".".$row["img_ext"];
}
$sql = "UPDATE Tab_down SET anz_down = anz_down + 1 WHERE imgID = $imgID");
$res = mysql_query($sql);
}
if ($image) {
echo "<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<body leftmargin="0" topmargin="0">
<script language="JavaScript">window.resizeTo($width, $height)</script>
<table width="100%" height="100%"><tr><td align="center" valign="middle"><img src="$image" onclick="opener.focus();window.close();" border="0"></td></tr></table>
</body>
</html>";
} else {
echo "<html><body leftmargin='0' topmargin='0' onload='opener.focus();window.close();'></body></html>";
}
?>

Warum das ganze
wenn du das ganze in einen POPUP öffnest, stellt sich das Fenster so ein, das es genau die selbe Größe hat
Zusätzlich hat es die Funktion das wenn du auf das Bild klickst, das Fenster wieder zu macht.

Zusätzlich kann man dann einen netten schutz einbaun, wenn man will
die zu anzeigende Grafik in einen TD-Tag einbetten (hintergrungs-Grafik)
und ein Blank-Gif in der Orginal-Größe des Bildes zwischen den TD-Tags angeben.
So kann er ned direkt das Bild herunterladen.

Zusätzlich kann man noch einen Htaccess schutz einbau, so das er es ned herunterladen kann.

Möglichkeiten gibt es da viele.

Ah jetzt weiß ich was mich so gestört hat, und warum ich das ganze schreibe.
Du machst es im selben Fenster auf.
das finde ich ned hübsch