MySQL Problem (set Spalte=Spalte+1)

COOLover

Programmierer
ID: 66135
L
25 April 2006
191
10
Hallo zusammen,
ich hoff ihr könnt mir helfen.
Ich habe ein Script, welches Bilder aus einem Ordner läd und diese ausgibt.
Beispiel: pic.php?type=jpg&f=dateiname

Doch jetzt zu meinem Problem.
Ich habe eine funktion eingebunden (imgcount s.u.) dieser soll in der db wert++ machen. doch er zählt beim direkt aufruf der php file +2 ruf ich die via <img auf, zählt er richtig +1

Beispiel: pic.php?... = +2
index.php mit <img src="pic.php..."> = +1

leider bin ich mit meinem latein am ende.

hoffe ihr könnt mich verstehen und mir helfen.


hier die codes:

pic.php
Code:
<?php
require("config.inc.php");

$imgname = $_GET['f'];
$type = $_GET['type'];

$dateiname = $_GET['f'].".".$_GET['type'];
imgcount($dateiname);

$groesse = getimagesize("./uploads/".$imgname.".".$type); 
$width = $groesse[0];
$height = $groesse[1];

if($_GET['type'] == 'gif')
{
	if (file_exists("./uploads/".$imgname.".gif"))
	{
		Header("Content-type: image/gif");
		$im = imagecreatefromgif("./uploads/".$imgname.".gif");
		ImageGif($im);
		ImageDestroy($im);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
}
elseif($_GET['type'] == 'jpeg')
{
	if (file_exists("./uploads/".$imgname.".jpeg"))
	{
		Header("Content-type: image/jpeg");
		$im = imagecreatefromjpeg("./uploads/".$imgname.".jpeg");
		Imagejpeg($im);
		ImageDestroy($im);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
}
elseif($_GET['type'] == 'jpg')
{
	if (file_exists("./uploads/".$imgname.".jpg"))
	{
		Header("Content-type: image/jpeg");
		$im = imagecreatefromjpeg("./uploads/".$imgname.".jpg");
		Imagejpeg($im);
		ImageDestroy($im);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
}
elseif($_GET['type'] == 'png')
{
	if (file_exists("./uploads/".$imgname.".png"))
	{
		Header("Content-type: image/png");
		$im = imagecreatefrompng("./uploads/".$imgname.".png");
		Imagepng($im);
		ImageDestroy($im);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
}
else
{
	Header("location: ".$domain);
	exit();
}
?>

Code:
function imgcount($pic)
{
  $sql = "update imghoster set IMGCount=IMGCount+1 where imgname='$pic';";
  mysql_query($sql);
}
 
vielleicht jetzt n doofer ansatz von mir, aber kanns sein, dass sich die php datei doppelt aufruft? (a´la header location)

vielleicht wär da die prüfung via switch/case günstiger, und du wirfst die funktion halt dann da rein ? das header location dann halt als default.

versuch macht klug. n direkten fehler kann ich persönlich da jetzt jedenfalls nicht finden.
 
hmmm, doppelt aufrufen, nur wenn IE und FF zu dumm sind ;) und das bild doppelt läd.
jedoch danke für die Idee, werd es nachher mal testen (wenn ich wieder wach bin ;) - nachtschicht schlaucht :D)
 
so habs jetzt mit case probiert, doch auch dort das selbe problem. hier der code mit case's (und SQL-Injection Bug entfernt)


Code:
<?php
require("config.inc.php");

$imgname = $_GET['f'];
$imgname=preg_replace("/[^A-Za-z0-9\s]/",'',$imgname);
$type = $_GET['type'];
$type=preg_replace("/[^A-Za-z\s]/",'',$type);

$dateiname = "$imgname.$type";

switch ($type) {
	case "gif":
	if (file_exists("./uploads/".$imgname.".gif"))
	{
		Header("Content-type: image/gif");
		$im = imagecreatefromgif("./uploads/".$imgname.".gif");
		ImageGif($im);
		ImageDestroy($im);
		imgcount($dateiname);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
	break;
case "jpeg":
	if (file_exists("./uploads/".$imgname.".jpeg"))
	{
		Header("Content-type: image/jpeg");
		$im = imagecreatefromjpeg("./uploads/".$imgname.".jpeg");
		Imagejpeg($im);
		ImageDestroy($im);
		imgcount($dateiname);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
	break;

case "jpg":
	if (file_exists("./uploads/".$imgname.".jpg"))
	{
		Header("Content-type: image/jpeg");
		$im = imagecreatefromjpeg("./uploads/".$imgname.".jpg");
		Imagejpeg($im);
		ImageDestroy($im);
		imgcount($dateiname);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
	break;

case "png":
	if (file_exists("./uploads/".$imgname.".png"))
	{
		Header("Content-type: image/png");
		$im = imagecreatefrompng("./uploads/".$imgname.".png");
		Imagepng($im);
		ImageDestroy($im);
		imgcount($dateiname);
	}
	else
	{
		Header("location: ".$domain);
		exit();
	}
	break;

default:
		Header("location: ".$domain);
		exit();
}

?>
 
krass, bin da echt ratlos ^^, und leider keiner der hier noch was tippelt 8O


find da immer noch keinen fehler, aber versuch mal das imgcount bissl höher zu setzen, und (is ja eh nur für bild, oder?) dann am ende nen die();
quasi:

PHP:
switch ($type) {
	case "gif":
	if (file_exists("./uploads/".$imgname.".gif"))
	{
                imgcount($dateiname);
		Header("Content-type: image/gif");
		$im = imagecreatefromgif("./uploads/".$imgname.".gif");
		ImageGif($im);
		ImageDestroy($im);
		die();
	}

ich könnt echt schwören dass da bei dir kein fehler drin ist ^^, oder ich bin zu doof den zu sehen :evil:

oder mal so?
PHP:
<?php
require("config.inc.php");

$imgname = $_GET['f'];
$imgname=preg_replace("/[^A-Za-z0-9\s]/",'',$imgname);
$type = $_GET['type'];
$type=preg_replace("/[^A-Za-z\s]/",'',$type);

$dateiname = "$imgname.$type";
if (file_exists("./uploads/".$dateiname))
	{
switch ($type) {
	case "gif":
    imgcount($dateiname);
		Header("Content-type: image/gif");
		$im = imagecreatefromgif("./uploads/".$imgname.".gif");
		ImageGif($im);
		ImageDestroy($im); die();
	break;
case "jpeg":
		imgcount($dateiname);
		Header("Content-type: image/jpeg");
		$im = imagecreatefromjpeg("./uploads/".$imgname.".jpeg");
		Imagejpeg($im);
		ImageDestroy($im); die();
	break;

case "jpg":
		imgcount($dateiname);
		Header("Content-type: image/jpeg");
		$im = imagecreatefromjpeg("./uploads/".$imgname.".jpg");
		Imagejpeg($im);
		ImageDestroy($im); die();
	break;

case "png":
		imgcount($dateiname);
		Header("Content-type: image/png");
		$im = imagecreatefrompng("./uploads/".$imgname.".png");
		Imagepng($im);
		ImageDestroy($im); die();
	break;

default:
		Header("location: ".$domain);
		exit();
}

}
	else
	{
		Header("location: ".$domain);
		exit();
	}
	

?>

aaaah, noch ne (vielleicht hirnrissige idee, aber die verzweiflung treibt mich :D *g) kanns sein dass das skript bei "jpg" und "jpeg" zickt?
also dass der fehler wenn explizit mit gif´s oder png´s testet nicht vorkommt/vorkam?
 
Zuletzt bearbeitet:
habe jetzt mal deinen kompletten code genommen, und mit gif und jp(e)g probiert.

Sowohl bei dem einen als auch bei dem anderen +2

ja die verzweiflung kenne ich :D bin scho seit knapp 1 woche am fehler suchen. und fixen aber den bekomm ich einfach net weg
 
So problem endlich nach fast 1,5 Wochen gefunden.
Ruf ich es via localhost auf, bekomme ich +2 rufe ich es normal via Domain (z.B. DynDNS) auf, erhalte ich ++.

Merkwürdige geschichte aber läuft ;)

Danke nochmal an delicious der mir sozusagen die richtige richtung gezeigt hatte :D (mehr oder weniger)
 
wenn das deine lösunt ist, hast du die lösung nicht gefunden.. das darf keinen unterschied machen ob das script local oder über domain aufgerufen wird. fehlersuche ist halt das schlimmste von allen..
 
wenn das deine lösunt ist, hast du die lösung nicht gefunden.. das darf keinen unterschied machen ob das script local oder über domain aufgerufen wird.

[OT]ach, echt? hast du da jetzt einen gefunden?
klugscheissen kann jeder -.-, und man findet in jedem code sachen die man hätte optimaler machen können/schneller/besser/risikobefreiter.

wenn jemand nach hilfe fragt, hilf...., oder lass es bleiben.

sry, vergeb keine roten... da musste das grad sein -.- [/OT]
 
wenn das deine lösunt ist, hast du die lösung nicht gefunden.. das darf keinen unterschied machen ob das script local oder über domain aufgerufen wird. fehlersuche ist halt das schlimmste von allen..

Hi Scar, es muss ja irgendwie damit zusammen hängen, das er bei localhost 2x die Datei aufruft und bei domain nur 1x so kann man es auch laut access log von apache ablesen.

das es normal kein unterschied geben darf ob local oder nicht weiß ich, aber da muss der fehler ja liegen.
kannst mich ja im ICQ anschreiben und ich geb dir das script mal bzw. kannst via VNC auf meinen PC schauen... aber ein bug im count script halt ich sehr sehr sehr unwarscheinlich. zwar wie delicious sagt, man kanns besser machen, aber selber dann weiß man ja nicht, ob da der fehler auch ist.

selbst damit ist es nicht geholfen gewesen bei localhost anstatt der funktion
Code:
 if(@$count<1){ 
 $sql = "update imghoster set IMGCount=IMGCount+1 where imgname='$dateiname';"; 
 @mysql_query($sql); 
 $count++; 
 }
 
um das script selbst auf einen fehler zu prüfen fehlt mir die zeit. wenn du den fehler aber nicht im script finden kannst, dann ist eine idee vielleicht deinen localen webserver zu ersetzten. vermutlich nutzt du xammp für die locale entwickelung? das ist zwar auch nur eine idee, aber vielleicht liegt der fehler dann im webserver.
 
OMG, xammp wenn ich das schon höre ;) nein den nutz ich nicht.
Habe eine selbst Apache & Co "Roh" Installiert habe zu 99% Standartconfig.

Aber die Vermutung habe ich auch das es an Apache oder config liegt.

Mit den neuen PC kommt auch ein der Webserver neu von daher. Aber trotzdem danke und bitte meinen beitrag falls er dich angegriffen haben sollte nicht persönlich nehmen ;).
 
Was hast du gegen XAMPP? 8O
Außerdem: Standard.

NIIIIIIICHT.png
T: Heißt dein Nick eigentlich coo-lover oder cool-over.. ersteres wäre durchaus witziger. :mrgreen:
 
Aber trotzdem danke und bitte meinen beitrag falls er dich angegriffen haben sollte nicht persönlich nehmen ;).

das passt schon. wenn überhaupt ärgern mich solche meinungen ala: "kannst was anderes als rumspammen?", die scheinbar den sinn eines forums nicht verstehen ;)

weiter zum problem: wenn du deinen eigenen apache&co nutzt. dann versuch trotzdem nur mal zum test xampp zu nutzen, für nen test kannst du den in weniger als 5min zum laufen bringen. das gibt dir zumindest die sicherheit ob der lokale apache net ganz mitspielen mag *wer weiss..
 
das passt schon. wenn überhaupt ärgern mich solche meinungen ala: "kannst was anderes als rumspammen?", die scheinbar den sinn eines forums nicht verstehen ;)
ärgert dich dass ^^?

was sagt man zu leuten die sagen "das wasser ist nass"

etwa: "ach, echt? hurra, du bist der held. warte ich überweis dir 50 mios für den supertollen einfall!" ?? *fg


dass der fehler nich gefunden worden is, is glaub jedem klar ;)
soll ich dich jetzt heldenhaft feiern weil dir das aufgefallen is ? *fg
weiss gar nich. wie definiert man spam?

ne unaufgeforderte/inhaltlose sache? (ka, hab den wortlaut nich im kopf und zu faul zum googlen *g)
das kommt dem schon sehr nahe :? :mrgreen:

und wenn dann danach sogar noch was sagst (bei ner konkreten aufforderung mal zu gucken)
Scar schrieb:
um das script selbst auf einen fehler zu prüfen fehlt mir die zeit.
.....
was erwartest n da als reaktion ^^? :ugly:

DAS ist dann spam ^^ oder bist anderer meinung?

wenn, dann konstruktiv. oder halt gar nicht ;) dir fehlt doch eh die zeit :)

und genau DAS is der sinn von nem thread in nem thread, wo jemand n problem hat.
(ich weiss dass ich demnach grad selbst offtopic bin, aber ich konnte nicht widerstehen :evil:)

kannst aber auch gern weiterhin newsletter verschicken, wo den leuten sagst dass wasser nass ist *g

(sry, bin grad frustriert, und dein posting hats geradezu herausgefordert. und behaupte jetzt nich du hättest nicht meine person gemeint -.-)

is nich so böse gemeint wie sichs evtl. anhört. trotzdem klick ich auf abschicken ^^

btw: er kennt wohl offensichtlich xampp (nein, ich weiss nicht was er gegen den hat *fg, nutz den ja auch ^^) aaaaber...
wozu ihm das noch mal erzählen? spam?
 
Zuletzt bearbeitet:
scheinbar fühlt sich da jemand angegriffen.. diese zeile wurde auf nen anderen beitrag von mir als bewertung abgegeben. manchmal gibt es eben keine direkten antworten, alternative ideen-ansätze wollen manche leute halt nicht hören.

was erwartest n da als reaktion ^^? :ugly:
ich bin kein schüler mehr und habe auch noch nen paar andere interessen.
 
sry, hab das mit
klugscheissen kann jeder -.-
gleichgesetzt :oops:

und halte dich mom ehrlich gesagt auch eher für nen spammer.... :oops: steht ja oben...

bin da mom n bissl empfindlich. und in beiträgen die ich bisher gelesen hab (kann ja täuschen) aber da hast jedenfalls so wirklich nix konstruktives gebracht.

nein, ich halt mich nich für besser *fg, aber ich reg mich auch nicht über renos auf ^^
die grünen die ich bekomme sind eh meistens grau (ka, wahrscheinlich sollte man keinem neuen antworten ^^, stört mich aber nich, weil bin ja selber n newbie :D *fg)
und die roten hauen dann richtig rein :D *fg... von daher... who care´s *fg

solange die fast-grünen in der mehrzahl sind is mir das schnurz :D

und bitte schön, was hatn dein letztes zitat von mir, mit deiner letzen aussage zu tun o_O?!

lol...
btw: ich glaub die wenigsten schüler haben an schule interesse ^^, wenn das bei dir erst jetzt so ist... okay :)
 
Zuletzt bearbeitet: