Autor Zpráva
Philber
Profil
Ahoj zkusil sem si napsat takovou věc co ukládá ip uživatelů vloží je do _db a ověřuje jestli tam už nejsou a když tam sou tak jen aktualizuje čas,. asi to není upe košer no, ale budiž...

jenže mi to pořád píše supplied argument is not a valid i když hodnoty se aktualizujou takže to funguje ale furt to hází ten error nevíte kde je chybka.

Děkuji

toto je výstup:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\***\***\counter.php on line 12
127.0.0.1 1240166897


<?php
// pripojeni k databazi
include ('connect.php');

$user_ip = $_SERVER['REMOTE_ADDR']; 
$user_time = time();
$unikatni = 1;

$dotaz = "SELECT ip_ip FROM ip";
$vysledek = mysql_query($dotaz) or die(mysql_error());

while (($radek = mysql_fetch_array($vysledek)) and ($unikatni!=0)) {
extract ($radek);
  if ($user_ip != $ip_ip) {
      $unikatni = 1; 
  } else {
    $unikatni = 0;
    $dotaz = "UPDATE ip SET
              ip_time = '$user_time'
              WHERE ip_ip = '$ip_ip'";
    $vysledek = mysql_query($dotaz) or die (mysql_error() );
  }
}  
if ($unikatni == 1) {
$user_id = $ip_id + 1;
$dotaz = "INSERT INTO ip (ip_id, ip_ip, ip_time) 
          VALUES ('$user_id', '$user_ip', '$user_time')";
$vysledek = mysql_query($dotaz) or die (mysql_error());
}


// tahle funkce funguje 
// netreba ji venovat pozornost
function vypis () {
$dotaz = "SELECT * FROM ip";
$vysledek = mysql_query($dotaz) or die(mysql_error());
while ($radek = mysql_fetch_array($vysledek) or die (mysql_error())) {
extract ($radek);
echo $ip_ip; 
echo "&nbsp;";
echo "$ip_time";
}}
vypis();

?>
yFang
Profil
Philber
Máš chybu v sql dotazu.
Philber
Profil
yFang hm v tomhle?
$dotaz = "SELECT ip_ip FROM ip";

já to tam nevidím jestli by to nešlo upřesnit, mě to nepřijde špatně.
nightfish
Profil
na řádku 21 si přepisuješ obsah proměnné $vysledek, což zřejmě není dobře
yFang
Profil
Philber
Prostě v proměnné $vysledek nemáš správný mysql výsledek. Buď je chyba v dotazu, nebo v tom, že si tu proměnnou přepisuješ.
Philber
Profil
yFang pravda, ono se to přepisuje,.. funguje to ale jak dojde ve while v if k false tak se tam provede ten UPDATE a vznikne nový $výsledek (řádek 21) a to není dotaz z databáze ale příkaz k vložení do _db. While cyklus v tu chvilu eště neskončil $unikatni (radek 17)se nastavila na 0, jenže se to musi ešte ve while ověřit a tam je ten problem,.. 1 je
$radek = mysql_fetch_array($vysledek)
a až pak
$unikatni!=0
stačí to otočit a jak while zjisti že první podmínka neplatí tak automaticky skončí


tedy s tímto na radku 12
while (($unikatni!=0) and ($radek = mysql_fetch_array($vysledek) )) {

to bude fungovat normalně xd
AM_
Profil
Má vůbec nějaký důvod, že výsledek query na řádku 21 a 28 přiřazuješ proměnné $vysledek?
Odpověď: nemá a to je ta chyba. Výsledek UPDATE a INSERT určitě nebudou řádky DB jako u SELECTu.
Philber
Profil
AM_ děkuju za postřeh, máš pravdu to sem si nějak neuvědomil
Toto téma je uzamčeno. Odpověď nelze zaslat.