2017-02-03 4 views
1

Ich benutze PHP, um die Zeiten zu zählen, die ein Link geklickt wird.PHP: Wie man Wert aus mySQL-Datenbank druckt

Jetzt möchte ich diese Nummer anzeigen, aber ich bin mir nicht sicher, wie.

Die Datenbank ist wie folgt strukturiert:

CREATE TABLE IF NOT EXISTS `count_clicks` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `url` varchar(250) NOT NULL, 
    `clicks` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2; 

die URLs in der Datenbank gespeichert sind, und mit ihrer ID wie folgt aufgerufen:

<a href="click.php?id=1">Click me</a> 

Dann leitet es an die URL.

click.php:

// get url details based on ID 
$sql = "SELECT * FROM " . $SETTINGS["data_table"] . " WHERE id='" . intval($_REQUEST["id"]) . "'"; 
$sql_result = mysql_query($sql, $connection) or die('request "Could not execute SQL query" ' . $sql); 

// check if ID exists 
if (mysql_num_rows($sql_result) > 0) { 

    $item = mysql_fetch_assoc($sql_result); 

    // increase clicks count by one 
    $sql = "UPDATE " . $SETTINGS["data_table"] . " SET clicks=clicks+1 WHERE id='" . intval($_REQUEST["id"]) . "'"; 
    $sql_result = mysql_query($sql, $connection) or die('request "Could not execute SQL query" ' . $sql); 

    header("Location: " . $item["url"]); 

} else { 
    echo "Item is missing."; 
} 

Es funktioniert perfekt. Aber wie erstelle ich eine PHP-Funktion, die es mir erlaubt, die Anzahl für jeden Link zu wiederholen? Ich denke wie eine Funktion, wo das Argument die ID ist - es wird die Zählung zurückgeben ...

+0

Sie können nicht nur 'Wählen Klicks von count_clicks' und Echo das Ergebnis? Oder vermisse ich etwas? –

+0

Hallo. Als erstes sollten Sie mysqli_ * oder PDO_ * anstelle der Erweiterung mysql_ * verwenden, da mysql veraltet ist und nicht mehr unterstützt wird. Um Ihr Problem zu lösen, werfen Sie einen Blick auf die mysql 'count' Funktion (http://www.w3schools.com/sql/sql_func_count.asp). Ein bisschen alt, aber sollte noch funktionieren. Außerdem sollten Sie prüfen, welche vorbereiteten Anweisungen verwendet werden und diese verwenden, um Ihre Anwendung sicherer zu machen. – Twinfriends

Antwort

0
<?php 
//new mysql connection 
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); 

//select 
$sql = "SELECT clicks FROM count_clicks"; 
foreach ($pdo->query($sql) as $row) { 
    echo "Klicks: ".$row['clicks']."<br />"; 
} 
?> 
+0

Danke. Aber wie kann ich die Anzahl für jeden Link anzeigen - ihre ID? – Meek

+0

'SELECT klickt FROM count_clicks WHERE id = '1'' oder Sie sortieren es per URL wie folgt' SELECT klickt FROM count_clicks WHERE url =' http: // myURL'' – fcb1900

+0

Das hilft mir weiter, danke. Kann dies in eine Funktion umgewandelt werden, in der ich die ID einfach als Argument übergebe und dann die Zählung für diese ID zurückgebe? Etwas wie: 'Funktion displayHits ($ id) { $ sql =" SELECT klickt FROM count_clicks WHERE id = $ id "; foreach ($ pdo-> Abfrage ($ sql) als $ Zeile) { echo "Klicks:". $ Row ['clicks']; } } ' – Meek

0

wie ich sehe, machen Sie eine Umleitung, wenn tou eine Zählung hinzufügen, und Sie können zuerst vergleichen, wenn ein ist hinzufügen und eine Umleitung machen, und wenn nicht den Zählerwert von der Datenbank erhalten. Erwarten, dass es hilft

Verwandte Themen