+ Antworten
Ergebnis 1 bis 4 von 4

Thema: [PHP] fehlerhaftes Mysql Tabellen query

  1. #1
    Neu an Board
    Registriert seit
    02.02.2010
    Beiträge
    45
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard [PHP] fehlerhaftes Mysql Tabellen query

    Hallo,
    ich habe mir einen Url Klickcounter gebaut. Konnte den Fehler schon soweit lokalisieren, dass ich weiss, er irgendwo hier steht :
    PHP-Code:
            if (isset($query)){

            
    $query "UPDATE $table SET count = count + 1 WHERE url = '$url'";

                
    $result = @mysql_query($query); 
    Was habe ich falsch gemacht?
    Ist das eine schlechte Abfrage? Das Tabellen Update wird garnicht ausgeführt.
    Bin noch PHP Anfänger.

    EDIT
    Hier der gesamte Quellcode
    PHP-Code:
    <?php
    ob_start
    ();
    error_reporting(E_ALL);
    ini_set('display_errors'true);
    $host     =    "localhost";
    $user     =    "xxxxx";
    $pass     =    "xxxxxx";
    $datab    =    "xxxxxxx";
    $table    =    "urlcounttab";
    $db = @mysql_connect($host$user$pass);
    $aktiv 1;
    // Zeit der Reloadsperre in Minuten
    $zeit 1;
    $ipdatei "ips.txt";
    function 
    pruf_IP($rem_addr) {
        global 
    $ipdatei,$zeit;
        @
    $ip_array file($ipdatei);
        
    $reload_dat fopen($ipdatei,"w");
        
    $this_time time();
            for (
    $i=0$i<count($ip_array); $i++) {
                list(
    $ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
                if (
    $this_time < ($time_stamp+60*$zeit)) {
                    if (
    $ip_addr == $rem_addr) {
                    
    $gefunden=1;
                } else {
                    
    fwrite($reload_dat,"$ip_addr|$time_stamp");
                }
            }
    }
    fwrite($reload_dat,"$rem_addr|$this_time\n");
    fclose($reload_dat);
    if (isset(
    $gefunden))
    return (
    $gefunden==1) ? 0;
    }
    if (
    $db==TRUE && $aktiv==&& pruf_IP($_SERVER['REMOTE_ADDR'])==0) {
        if (@
    mysql_select_db($datab$db))
        {
            if (isset(
    $query)){
            
    $query "UPDATE $table SET count = count + 1 WHERE url = '$url'";
                
    $result = @mysql_query($query);
                
    $einheit mysql_result(0,0,$result);
            }else{
            echo 
    "query funktioniert nicht"."\n";}
            }else{
        echo 
    "wird nichts";
        }
    }
    if (isset(
    $_GET['url'])) {
    header("Location:".$url);
    $url $_GET['url'];}
    else {echo 
    "location";}

      
    // $url = addslashes($_GET['url']);
    //Header("Location: " . $_GET['URL']);

    mysql_close($db);
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta **********="Content-Type" content="text/html; charset=utf-8" />
    <title>Count</title>
    <style type="text/css">
    .link {color:red;}
    .zahl {color:green;}
    img {border:0;}
    </style>
    </head>

    <body>
    <!--//bild1-->
    <?php
    @$db = new mysqli($host,$user,$pass,$datab);
    if (
    mysqli_connect_errno()){
    printf("Verbindung fehlgeschlagen:%s\n",mysqli_connect_error());
    exit();
    }
    $sql_befehl "SELECT * FROM urlcounttab WHERE id=1";//Spalte!!!
    if ($resultat $db->query($sql_befehl)){
    $datensatz $resultat->fetch_array();
    printf("<a target=\"_blank\" href=\"index.php?url=".$datensatz[1]."\"><img src=\"../200scropi_schatten.png\" width=\"200\" height=\"200\" alt=\"sdf\" class=\"link\" /></a>");
    printf"<div class=\"zahl\">".$datensatz["count"]."</div>");
    $resultat->close();
    }else{

    echo 
    "zugriff fehlgeschlagen";}
    $db->close();
    ?>
    <!--//bild2-->
    <?php
    @$db = new mysqli($host,$user,$pass,$datab);
    if (
    mysqli_connect_errno()){
    printf("Verbindung fehlgeschlagen:%s\n",mysqli_connect_error());
    exit();
    }
    $sql_befehl "SELECT * FROM urlcounttab WHERE id=2";//Spalte!!!!
    if ($resultat $db->query($sql_befehl)){
    $datensatz $resultat->fetch_array();
    printf("<a target=\"_blank\" href=\"index.php?url=".$datensatz[1]."\"><img src=\"../200scropi_schatten.png\" width=\"200\" height=\"200\" alt=\"sdf\" class=\"link\" /></a>");
    echo 
    "<div class=\"zahl\">".$datensatz["count"]."</div>";
    $resultat->close();
    }else{

    echo 
    "zugriff fehlgeschlagen";}
    $db->close();
    ?>
    <!--//bild3-->
    <?php
    @$db = new mysqli($host,$user,$pass,$datab);
    if (
    mysqli_connect_errno()){
    printf("Verbindung fehlgeschlagen:%s\n",mysqli_connect_error());
    exit();
    }
    $sql_befehl "SELECT * FROM urlcounttab WHERE id=3";//Spalte!!!!
    if ($resultat $db->query($sql_befehl)){
    $datensatz $resultat->fetch_array();
    printf("<a target=\"_blank\" href=\"index.php?url=".$datensatz[1]."\"><img src=\"../200scropi_schatten.png\" width=\"200\" height=\"200\" alt=\"sdf\" class=\"link\" /></a>");
    echo 
    "<div class=\"zahl\">".$datensatz["count"]."</div>";
    $resultat->close();
    }else{

    echo 
    "zugriff fehlgeschlagen";}
    $db->close();
    ?>
    </body>
    </html>
    Geändert von 0815Andreas (25.01.2011 um 08:39 Uhr)

  2. #2
    Kommt häufiger vorbei Avatar von Robstar
    Registriert seit
    09.01.2005
    Ort
    Wetzlar, Hessen
    Beiträge
    325
    Bedankte sich
    25
    Erhielt 57 Danksagungen
    in 50 Beiträgen

    Standard

    Wahrscheinlich hast Du selber, den Wald vor lauter Bäumen nicht mehr gesehen...
    Du fragst ob $query existiert, aber definierst es erst eine Zeile später...
    PHP-Code:
    if ($db==TRUE && $aktiv==&& pruf_IP($_SERVER['REMOTE_ADDR'])==0) {
        if (@
    mysql_select_db($datab$db)) {
            if (isset(
    $query)){ // hier kann $query noch nichts beinhalten, wird ja erst in der nächsten Zeile definiert
            
    $query "UPDATE $table SET count = count + 1 WHERE url = '$url'"// $q
            
    $result = @mysql_query($query);
            
    $einheit mysql_result(0,0,$result);
            }else{
            echo 
    "query funktioniert nicht"."\n";}
        }else{
        echo 
    "wird nichts";
        }

    So müsste es gehen...

    PHP-Code:
    if ($db==TRUE && $aktiv==&& pruf_IP($_SERVER['REMOTE_ADDR'])==0) {
      if (@
    mysql_select_db($datab$db)) {
        
    $query "UPDATE $table SET count = (count+1) WHERE url = '$url'";
        
    $result = @mysql_query($query);
        
    $einheit mysql_result(0,0,$result);
        if(
    mysql_errno()){
            echo 
    mysql_errno() . ": " mysql_error() . "\n";
        }else{
            echo 
    "Update erfolgreich"."\n";
           }
      }

    Grüße Robstar

    Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.

  3. #3
    Neu an Board
    Registriert seit
    02.02.2010
    Beiträge
    45
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    danke, funktioniert.man denkt immer zu kompliziert.
    wie bekomm ich die ip sperre dahin, dass er erst nachdem eine url angeklickt wurde anfängt zu sperren? wenn ich die seite aufrufe sperrt der schon.

  4. #4
    Kommt häufiger vorbei Avatar von Robstar
    Registriert seit
    09.01.2005
    Ort
    Wetzlar, Hessen
    Beiträge
    325
    Bedankte sich
    25
    Erhielt 57 Danksagungen
    in 50 Beiträgen

    Standard

    Wo hast Du denn das Script her, es sieht wirklich sehr wirr aus. So wie ich das sehe wird die Text-Datei mit den IP-Adressen, sowieso bei jedem Aufruf überschrieben. Richtig sollte doch sein, dass eine neue IP-Adresse angehangen werden sollen. Und wieso arbeitest Du denn überhaupt mit einen Datei, für die IP-Adressen? Leg Dir eine Tabelle in der Datenbank an mit id, zeitpunkt und ip. Und dann nutze die Datenbank..

    PHP-Code:

    $ip             
    $_SERVER['REMOTE_ADDR'];
    $zeit            3600// Zeit in Sekunden für die IP-Sperre
    $jetzt        time();

    function 
    pruf_IP($ip) {        
        
    $query mysql_db_query($datab"SELECT id"
            
    "\n FROM ipadressen"
            
    "\n WHERE ip = '$ip'"
        
    );
        
    $iprow mysql_fetch_array($queryMYSQL_ASSOC);
                
        if(!
    $iprow['id']) {        
          
    $insert mysql_db_query($datab"INSERT INTO ipadressen"
              
    "\n SET ip = '$ip'"
              
    "\n ,zeitpunkt = '$jetzt'"
          
    );      
          
    $update mysql_db_query($datab"UPDATE urlcounttab"
              
    "\n SET count = (count+1)"
              
    "\n ,WHERE  = '$url'"
          
    );                        
        }    
        
    $freigabe $jetzt-$zeit;
        
    $delet mysql_db_query($datab"DELETE FROM ipadressen"
            
    "\n WHERE zeitpunkt <= '$freigabe'"
        
    );
        
        
    mysql_free_result($query);
        
    mysql_close($db);

    Grüße Robstar

    Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.

+ Antworten

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein