Autor Zpráva
qteck
Profil
ahoj, mám takový problém s kontrolou pole.
Z počátku jsem si říkal, půjdu na to od lesa, vezmu to přes explode a pak porovnám pomoci funkce in_array, bohužel, nejde to! :(. Nevím proč, pote jsem sepsal toto. Což taky nejde.

Pro přiblížení, snažim se z proměnné $_SESSION[visit] (2#58#99#24), v závorce vidíte tvar, rozdělit záznamy a porovnat s proměnnou id. Pokud se shodují, funkce hodí obsah pole.

To co sem sepsal nefunguje, ne že by to házelo chybu, spiš jde o problém samotné konstrukce.

díky za reakce-:-)


   function visitf() 
   {

     
     $pole = explode("#", $_SESSION[visit]);

     for($i; count($pole)  > $i; $i++) {
       if($pole[$i++]==$id) 
       {
         break;
       
              return $pole[$i];
       }
         else return "false";
     }
   }
   

   echo visitf();
   
   if(!visitf()) { 
     $_SESSION[visit] .= $id.'#';
     
     
     $sql = mysql_query("UPDATE article SET visitors = visitors+1 WHERE id= '$id'");
     echo $sql?'ok':'err';
     
   } 
tiso
Profil
qteck: vo funkcii visitf() porovnávaš prvok poľa s premennou $id, ale túto vo funkcii nepoznáš. Predávaj ju cez parameter. Okrem toho tam máš niekoľko ďalších chýb.
qteck
Profil
jakých dalších?
tiso
Profil
qteck: napríklad:
-chýbajúce úvoodzovky/apostrofy v $_SESSION[visit]
-dvojitá inkrementácia $i (raz vo for, druhýkrát v if)
-pokiaľ sa $id nerovná prvému kľúču, tak sa vráti false, inak sa nevráti nič.
qteck
Profil
   function visitf($id) 
   {

     
     $pole = explode("#", $_SESSION[visit]);

     for($i; count($pole)  > $i; $i++) {
       if($pole[$i] == $id) 
       {
         break;
       
              return $pole[$i];
       }
         else return "false";
     }
   }


- toz, uvozovky byt nemusi, nebo proc ? je to vyhodnejsi? naopak se mi zda ze vyhodnejsi je bez uvozovek, protože je kratší. nebo ide o něco jiného?

return $pole hodi obsah pole, co je brano jako true, protoze hazi nejaky obsah. nebo vo co de?
__construct
Profil
qteck:
toz, uvozovky byt nemusi, nebo proc ? je to vyhodnejsi? naopak se mi zda ze vyhodnejsi je bez uvozovek, protože je kratší. nebo ide o něco jiného?
Pozri si toto
   function visitf($id) 
   {

     
     $pole = explode("#", $_SESSION["visit"]);

     for($i; count($pole)  > $i; $i++) {
       if($pole[$i] == $id) 
       {
         break;
       
              return $pole[$i];
       }
         else return false;//boolean hodnoty sa píšu bez úvodzoviek a apostrofov
     }
   }
tiso
Profil
qteck: „return $pole hodi obsah pole, co je brano jako true, protoze hazi nejaky obsah. nebo vo co de?
tak si to vyskúšaj: var_dump(visits(2)); //sem dosad prvy prvok zo session
qteck
Profil
oka:-), opravim si to

k cemu se pouziva funkce var dump? casto ji potkávam, ale zatim jsem ji nikdy nepoužil.

prosim vas, me ten kod stale nefunguje, ja nevim, kde je chyba. jsem se do tohoto vyvojového stadia dostal nedavno a dnes poprve pracuju s poli takovýmto zpusobem.

$_SESSION ma obsah "75#75#75#75#75#75#75#75#" a potrebuju overit jestli se mezi temi zaznamy naleza hodnota z $id ktera je jen obyc. cislo.

   function visitf($id) 
   {   
     $pole = explode("#", $_SESSION["visit"]);

     for($i; count($pole)  > $i; $i++) {

       if($pole[$i] == $id) 
       {
         break;
       
              return var_dump($pole[$i], true);
       }
         else return false;
     }
   }
    
   if(!visitf($id)) { 
     $_SESSION["visit"] .= $id.'#';
     
     $sql = mysql_query("UPDATE article SET visitors = visitors+1 WHERE id= '$id'");
     echo $sql?'ok':'err';
     
   } 


pouzil jsem var_dump, spravne?
__construct
Profil
qteck:
pouzil jsem var_dump, spravne?
Nie - var_dump nevracia žiadnu hodnotu - tzn. funkcia visitf() bude vždy FALSE
   function visitf($id) 
   {   
     $pole = explode("#", $_SESSION["visit"]);

     for($i = 0; count($pole)  > $i; $i++) {

       if($pole[$i] == $id) 
       {
         break;
       
              return var_dump($pole[$i], true);
       }
         else return false;
     }
   }
    
   if(!visitf($id)) { 
     $_SESSION["visit"] .= $id.'#';
     
     $sql = mysql_query("UPDATE article SET visitors = visitors+1 WHERE id= '$id'");
     echo $sql?'ok':'err';
     
   }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0