• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Counter

djfabi

Mitglied
Hallo leute :D

Ich steh mal wieder vor einem Problem -.-

Unzwar hab ich hier ein Counter der mir aber immer diese Fehlermeldung ausgibt: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\tests\counter123.php on line 80

So erstmal zum SCript:


index.php :

PHP:
<html><head>

<title>TEST!!!</title>


<script>http_request = false;
        if (window.XMLHttpRequest) { //Abfragen ob die Klasse im Namespace "window" zu Verfügung steht.            http_request = new XMLHttpRequest(); //Erzeugen des Objekts für Mozilla, Opera, Safari...        } else if (window.ActiveXObject) { //Gibt es die Möglichkeit zum Erzeugen von ActiveX Objekten? -> IE            try { //Versuch zum erzeugen des neueren Objekts                http_request = new ActiveXObject("Msxml2.XMLHTTP");            } catch (e) { //Wenn die erzeugung fehlgeschlagen ist. Älteres Objekt versuchen.                try {                    http_request = new ActiveXObject("Microsoft.XMLHTTP");                } catch (e) {}            }        }	//Ist http_request noch immer false	//Konnte kein XMLHTTP Objekt erzeugt werden. Jede weitere Arbeit mit dem Objekt führt unweigerlich zum Fehler.        if (!http_request) {            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');        }
function vnumber(){    http_request.open("GET", "script.php?get=visits", true);    http_request.send(null);    http_request.onreadystatechange = function(){         if(http_request.status == 200 && http_request.readyState == 4){             document.getElementById("visits_today").innerHTML = http_request.responseText;         }    }  window.setTimeout("vnumber();", 1000);

}

</script>
</head><body onload="vnumber();">



<?php
if(!mysql_connect("localhost", "root")){    echo "FEHLER!";} else {    if(!mysql_select_db("test1")){        echo "FEHLER!";    }}
$get_visits = mysql_query("select * blog1-counter order by id desc limit 1");
while($into = mysql_fetch_assoc($get_visits)){    $new_visits = $into["visitors"] + 1;    $new_date = date("j.n.Y");    $new_time = date("H:i:s");    $update_vnumber = mysql_query("INSERT INTO blog1-counter(visitors, date, time) VALUES('$new_visits', '$new_date', '$new_time')");    if($update_vnumber == true){        echo "<p><i>Vielen Dank, dass Sie diese Seite besucht haben!<br />Sie sind der</i><b> $new_visits. Besucher</b></p>";    }}





 ?>


<h1>Statistiken</h1>


<p><b>Besucher heute:</b>&nbsp;<span id="visits_today">0</span></p>

</body></html>

hier die script.php:

PHP:
<?php
if(!mysql_connect("localhost", "root")){    echo "FEHLER!";} else {    if(!mysql_select_db("test")){        echo "FEHLER!";    }}
if(!empty($_GET['get'])){    $get_visits = mysql_query("select * from blog1-counter order by id desc limit 1");    while($into = mysql_fetch_assoc($get_visits)){        echo $into['visitors'];    }}


?>





So jz bekomme ich folgenden Ausgabe:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\tests\counter123.php on line 62
[h=1]Statistiken[/h]Besucher heute:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\tests\script.php on line 14




So, was ist falsch?

Danke im Vorraus ;)
 
Werbung:
Hallo,

hast du bei deinem mysql_connect() auch ein Passwort verwendet? Das fehlt in deinem Code-Haufen.

Bevor dir geholfen werden kann, solltest du besser das wirr-warr da in einzelne Zeilen umwandeln und die betroffene Zeile einzeln Posten, da keiner anfangen wird die Zeilen zu zählen (was bei dem Skript sowieso fast unmöglich und zeitaufwendig wäre).

Zeig uns mal die Zeile 14, 62 und 80 in deinem Skript bitte.


lascaux
 
bei mysql_connect() brauch ich keins, weil es NOCH im localhost ist.

Dieser Code-Haufen existiert in meinem Editor nicht, alles ist mit Absätzen, aber hier bei html.de leider schon :/

ok hier erstmal Zeile 62:

PHP:
while($into = mysql_fetch_assoc($get_visits)){

Zeile wo $get_visits definiert wird:
PHP:
$get_visits = mysql_query("select * blog1-counter"    . " order by id desc limit 1");

Zeile 14:
PHP:
 while($into = mysql_fetch_assoc($get_visits)){

Und wieder die definition:
PHP:
$get_visits = mysql_query("select * from blog1-counter"    . " order by id desc limit 1");


SO das war alles,

Bitte helft mir *bettel*bettel*

Gruß djfabi
 
Werbung:
Selbst wenn mysql_connect() eine Verbindung zur Datenbank herstellen sollte, kann immer noch das danach folgende SQL-Statement fehlerhaft sein weshalb in $get_visits dann auch keine SQL-Resource ist.

Ändere

PHP:
$get_visits = mysql_query("select * blog1-counter"    . " order by id desc limit 1");

zu

PHP:
$get_visits = mysql_query("select * blog1-counter order by id desc limit 1");
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";

Dann solltest Du beim Aufruf auch eine Fehlerausgabe sehen, sollte es hier einen geben. Wenn es einen Fehler gibt, prüfe das Statement. Dazu brauchst Du es einfach im phpmyadmin ausführen.
 
Ach egal, hab jz alles in eine .txt datei geschrieben!

War ja eh ein bisschen Server-lastig, bzw. die DB wäre zu gr0ß wenn da 1000 Hits sind.

​ERLEDIGT!
 
Datenbanken sind gerade für solche hohen Zugriffszahlen gedacht. Eine Textdatei wird dir eher und viel schneller Probleme bereiten, nicht nur was die Verwaltung der Einträge angeht.
 
Werbung:
In der Textdatei steht nur eine Zahl, also bei 35 Zugriffen eine 35 und bei jedem Zugriff wird die Zahl ausgelesen, um 1 erhöht und wieder reingeschrieben, nix weiter großes
 
dann hast du einen zähler der alle besuche zählt egal wer es ist wenn das dein wunsch ist dann spar dir die arbeit. ich denke das die meisten hoster eine besucherstatistik führen. dort siehst du wieviele besucher die seite hatte mit datenvolumen usw.

also ich kann das zumindest von meinem hoster sagen, da ist es so.
 
Genau damit hast Du aber ein Problem. Was ist wenn 1000 Nutzer gleichzeitig darauf zugreifen. Der Server kann auf die Datei aber nur 1 Mal zum selben Moment zugreifen. Dadurch wäre die Zählung unzuverlässig, weil nicht alle Besucher tatsächlich erfasst werden könnten.

Das kann bei Verwendung einer Datenbank nicht passieren, da die die Update-Statement jeweils nacheinander in der Datenbank speichert. Du musst Dir in dem Fall keine Gedanken über die Zuverlässigkeit der Zählung machen, weil das Datenbanksystem dies bereits für dich übernimmt.
 
Werbung:
Zurück
Oben