Autor Zpráva
Dědeček
Profil *
Zdravim,

Jak zjistím, že je daná položka v databázi? Mám tuto funkci, jak docilit toho kdyz $hodnota nebude v databazi aby se vypsala chyba, nebo se presmerovalo. Dekuju

function page($hodnota){
  $get=mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE url='$hodnota'")) or die (mysql_error());
  $text=$get["text"];
  echo $text;
}
Nox
Profil
$get = mysql_query("SELECT * FROM pages WHERE url='$hodnota'");
if( mysql_num_rows($get) > 0 ){ /* ok .. $get  = mysql_fetch_assoc($get); ...*/ }
else{ /* nenalezeno */ }


Mj. pokud je potřeba jen 1 položka z DB tak se nemusí hned brát celý řádek, stačilo by "SELECT text FROM..."
a místo mysql_fetch_assoc použít mysql_result
Dědeček
Profil *
Kde mám chybu? Upravil jsem podle tvého doporučení, jenže nefunguje :/
  function page($hodnota){
    $get = mysql_result(mysql_query("SELECT text FROM pages WHERE url='$hodnota'")) or die (mysql_error());
    if( mysql_num_rows($get) > 0 )
    { echo $get; }
    else
    { echo 'Nenalezno!'; }
  }
Mastodont
Profil
Proč tam přidáváš mysql_result() ?
Dědeček
Profil *
Protože Nox napsal že místo mysql_fetch_assoc mám použít mysql_result, tak sem to přepsal :)
Joker
Profil
Dědeček:
Nox napsal že místo mysql_fetch_assoc mám použít mysql_result, tak sem to přepsal :)
No ale ne takhle :)

Když už mysql_result, tak (například):
   function page($hodnota){
    $res = mysql_query("SELECT text FROM pages WHERE url='$hodnota'")) or die (mysql_error();
    $get = $res ? mysql_result($res) : false; 
    if($get > 0 )
    { echo $get; }
    else
    { echo 'Nenalezno!'; }
  }
Dědeček
Profil *
Heh :) bral sem to doslova, ale když použiji tu tvoji funkci, tak se mi ta stránka kde ta fce je ani nenačte ..
Dědeček
Profil *
Už .. měl jsi tam chybu v závorce :) .. ale i tak to píše
Warning: Wrong parameter count for mysql_result() in /home/www/******/test/include/functions.php on line 10
Nenalezno!
Mastodont
Profil
To je správně, protože ta funkce má dva povinné parametry, druhým je číslo řádku.
Nox
Profil
Dědeček
Joker tam má drobnou chybku ->
mysql_result($res, 0);
Dědeček
Profil *
A má to naopak :) vypsani proměne měla byt až v else :) ne?
Dědeček
Profil *
Tak se v tom ztracim uplně .. funguje to parádně až po tu podmínku ..
Dědeček
Profil *
To mi prostě nefunguje :( nevim kde dělám chybu, ale prostě se vypíše u příkladu Jokera 'Nenalezeno!' ikdyž tam je a když tam není tak se ukáže prázdná stránka, udělal jsem si něco takovyhodle, akorat ted nevim .. musel bych znovu dat dotaz abych to vypsal ze?
function page($hodnota){
  if (mysql_result(mysql_query("SELECT count(*) FROM pages WHERE url='$hodnota'"),0))
  {
  echo 'je tam!';
  }
  else
  {
   echo '<meta http-equiv="refresh" content="0;url=/404/" />'; 
  } 
  }
Nox
Profil
Dědeček
Jediné co mě u Jokerova příkladu napadá... nevím jak se přesně PHP vypořádá s if( "" > 0 ) ... nechce se mi to teď všechno pouštět, takže zkoušet nebudu, je tu šance že to vyhodnotí jako 0>0 a vypíše "Nenalezeno" v případě, že buňka text prázdná...což by stačilo jen drobně upravit, ale vypadá to dobře

Nechápu dotaz u tvého posledního příspěvku, jinak to přesměrování přes meta ... raději použij funkci header

Aha, už asi chápu...no tak ono to jde zapsat tak, aby se to dalo použít, proč tedy se ptáš na count, když jsme vždy měli v příkladech rovnou výběr hodnoty, sám jsem ti psal funkci mysql_num_rows...mj. to moje nefunguje?

function page($hodnota){
$get = mysql_query("SELECT text FROM pages WHERE url='$hodnota'");
if( mysql_num_rows($get) > 0 ){
  $page = mysql_result($get, 0);
  echo $page; /* nebo jen echo mysql_result($get,0); */
  return true;
  }
else{
  ...
  return false;
  }
}


Mj. funkce se jmenuje anglicky a argument česky...chtělo by to sjednotit, pokud to anglické není termín, co se používá převážně v angličtině, což není
Dědeček
Profil *
Dobře, dík za radu ohledně sjednoceni jazyka, to tvoje funguje, ale nedaří se mi vypsat vysledek, bud to vypise array, nebo #Resource id9 .. ale to posledni funguje .. takže děkuju moc :) zase jsem se něco přiučil
Nox
Profil
Dědeček
Já v tom prvním taky nepsal nikde echo $get, ale "$get = mysql_fetch_assoc($get);" a pak až echo, v tom případě to bude funkční...no nic, jdu spat ;)

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: