Counterproblem...

Hi CommZ,

Ich möchte auf meiner Hp für jeden angeklickten Link diese Klicks mitzählen und absppeichern für einen "Hitfame" oder Counter.

Nun verstehe ich allerdings nicht mwas ich falsch mache...

Code:
echo "
<tr>
    <td> $counter</td>
    <td ><a href=\"$link\" target=\"_blank\" onclick='$counter++'>$link</a></td>";
    												  
echo "
  </tr>
      echo "hier ----> $counter";


Oben erkennt man das bei OnClick der Counter um einen Raufgezählt erden soll wenn der Link geklickt wurde.
Allerdings mag er nicht und auch nciht in anderen formen alla
onclick=\""; <?php blablabla ?> echo ">

Hellllp Plz

MfG,

euer Tko?
 
onClick ist JavaScript und damit kannst du keinen php code starten.

was du machen musst, ist eine seite ala "weiterleitung.php" welcher du eine id uebergibst. anhand von dieser id kannst du dann den entsprechenden counter bei der seite mit der gleichen id erhoehen. am schluss machst du dann noch eine automatische weiterleitung mit z.b. den http headern.
 
Hi

ich versteh nicht ganz was du mit dem code denn du dort hast gemeint hast, aber wie willst du das dort eigentlich speichern?
also soweit ich weiss musst du (wenn du es mit php machst) beim öffnen einer Seite zaehlen, nicht wenn man auf einen link drückt, denn soweit ich weiss geht das gar nicht.
Du könntest allerdings mit JS machen.
"onclick" kann man auch nich bei php benutzen sonder nur für JS.

Jonny
 
Hi,

Das mit der Weiterleitung ist ganz gut ich denke so werd ich es machen.
Für die anderen, Javascript in PHPfunktioniet ganz gut, bsp:

echo "
<a href=\"blabla\" onclick=\"javascript:window.alert('JavaScript in Php')\">";

Ich danke mal für die weiterleitungsidee und komm vll. nochmal drauf zurück...

MfG,

euer Tko?
 
nicht wenn man auf einen link drückt, denn soweit ich weiss geht das gar nicht.

Warum sollte das nicht gehen?

@TeeKayo2

Du musst schon unterscheiden zwischen JavaScript in PHP und PHP in JavaScript!!
PHP ist eine Serverseitige Scriptsprache welche immer zurerst ausgeführt wird. Und JS ist Clientseitig!

Du könntest Dein Problem auch recht schön mit Ajax lösen!
 
Da ich auf die schnelle kein gutes Tutorial kenne, hab ich schnell mal selbst eines geschrieben. :D
Die meisten Tutorials über Ajax sind nicht gerade gut.

Ich lasse jetzt mal die Erklärung was Ajax genau ist weg, wer es wissen will soll doch mal google fragen.

Als erstes müssen wir ein XMLHttpRequest() Objekt erzeugen, da aber jeder Browser es anders händelt brauchen wir auch eine Unterscheidung.

Code:
var xmlHttp = null;

function ajaxTest()
{
			
	if(window.ActiveXObject) // Für den IE
	{
		try 
		{
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); // XMLHttp Objekt erzeugen!
		}
		catch (e)
		{
			try
			{
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // Und nochaml für den IE 
			}
			catch (e)
			{
				xmlHttp = null;
			}
		}
	}
	else if(window.XMLHttpRequest) // Die anderen Browser
	{
		try
		{
			xmlHttp = new XMLHttpRequest(); // Objekt erstellen
		}
		catch (e)
		{
			xmlHttp = null;
		}
	}
	else
	{
		alert("Was für einen Browser haben Sie den?");
	}
	
	if(xmlHttp) // Falls Objekt erzeugt werden konnte
	{
		xmlHttp.open('GET','ajaxTest.php' , true); 
		xmlHttp.onreadystatechange = data;
		xmlHttp.send(null);
	}
	else
	{
		alert("Es konnte kein Objekt erzeugt werden!");
	}
}

So hier ist mal eine fertige Funktion die einen HttpRequest absetzt!
Kommen wir nun zu den drei wichtigsten Zeilen Code:
Code:
                xmlHttp.open('GET','ajaxTest.php' , true); 
		xmlHttp.onreadystatechange = data;
		xmlHttp.send(null);

Die erste Zeile öffnet eine Verbindung zum Server! Der erste Parameter gibt die Übertragungsmethode an, in diesem fall GET (es gibt auch noch POST, PUT, HEAD). Der zweite Parameter gibt das Script an, welches den Request bekommt und einen Response zurück gibt. Der letzte Parameter gibt an welche Verbindungsmethode benutzt werden soll. Bei "true" handelt es sich um eine Asynchrone Übertragung, und bei false um eine Synchrone welche wir aber nicht wollen. Erklär ich jetzt auch mal nicht näher, da eigentlich jeder wissen sollte was der Unterschied zwischen Asynchron und Synchron ist!

In der zweiten Zeile gibt man den Funktionsnamen der Funktion an, die auf der Clientseite den Response empfängt und weiterverarbeitet.

Die dritte Zeile dient für die Übergabe von POST Variablen.

Den oberen können wir in eine Datei auslagern z.B. ajax.js!
Jetzt erstellen wir den Code für die Clientseite. Was brauchen wir alles? Wir zum einen die vorher angegebene Funktion data() und einen bereich wo wir den Response anzeigen.
Fangen wir mal an, damit das nicht zu lange dauert hab ich da mal was vorbereitet.

Code:
<html>
<head>
<title>Ajax Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript" src="ajax.js"></script>
<script language="javascript" type="text/javascript">

function data()
{
	if(xmlHttp.readyState == 4) // hier wird überprüft ob der Response schon komplett ist!
	{
		daten = xmlHttp.responseText; //den Response an die Variable daten übergeben, es gibt auch die Funktion responseXML welche aber nur für XML Dateien ist!!
		if(daten != "") // wurden daten übertragen?
		{
		   document.getElementById('daten').innerHTML = daten; // übertragenen Daten in den Div Container schreiben zum anzeigen. 
		}	
	}
}
</script>
</head>
<body>
       <a href="#" onClick="ajaxTest();">Klick mich an!</a> // den Request auslösen!
       <div id="daten">
       </div>
</body>
</html>

Ok, die Clientseite ist somit fertig!
Erstellen wir jetzt die Serverseite:

PHP:
$intZahl1 = 5;
$intZahl2 = 6;
$intSum = $intZahl1 + $intZahl2;

echo 'Dies ist ein Ajax-Test: ', $intSum;
exit();

Den code speichern wir unter ajaxTest.php ab! Man könnte jetzt z.B. auch eine Datenbankabfrage usw. einbauen!

So, Ihr könnt das Script nun testen! Es sollte eigentlich gehen, hab es aber selber nicht getestet. Also habt nachsicht falls es nicht geht.

Ich weiss das es jetzt einige offene Fragen gibt, also fragt mich!

Hier mal ein weiterführender Link
 
Hi,

Zuersteinmal die Weiterleitung ist fertig un funktioniert! :)

@Basic:

Hatte es noch so im Gedächniss das es um Javascript in Php ging als ich geantwortet habe,sorry.

Allerdings geht auch PHP in Javascript denke ich zu wissen ;)
Bsp.:

document.write('<?php echo "hi ich bin ne PHP Ausgabe"; ?>')

Sollte auch funktionieren, probiert habe ich es nicht.

Wegen deiner "ausführlichen" Ajax Möglichkeit.

Also Sie recht lang, nicht zu vergleichen mit den 15 Zeilen die jetzt die Weiterleitungsseite gekostet hat.
Dazu kommt das ich bisher gerade mal ein Tut mit Ajax mitgemacht habe, und daher nur die "google-suggest" Vorteile von Ajax kenne, will heißen ich kenn mich null damit aus :)

Und wie du unten noch angefügt hast "jetzt könnte man noch ne Datenbankabfrage starten", heißt ja nur und es gibt nochmehr Text zu schreiben wobei das jetzt schon das 4 fache meiner weiterleitungsseite ist ;)

Danke für eure Hilfe und Anregungen,

euer Teekayo2
 
Du kannst JavaScript mit PHP generieren, aber nicht andersrum. Was der Client bekommt, kann nur der Client ausführen, nicht mehr der Server.

Und BTW, meint ihr net, AJAX für einen Counter ist mit Kanonen auf Spatzen geschossen? Soox' Vorschlag ist da weitaus praktikabler.
 
Zurück
Oben