Autor Zpráva
Venushja
Profil
Zdravim..
mam problem snazim se udelat nejakj script kterej by ti zkontroloval pokud v db bude id 1 ze se ukaze clanek ale kdyz tam nebude id 1 tak se ukaze hlaska Ze clanek neexistuje zkousel jsem to pres podminku $db[id]==$db[id] ale nefunguje to mam delanej vypis pres ?id=x (x == cislo) ale kdyz tam treba dam id 2 a v db neni tak se normalne ukaze prazdnej obsah na strance ale ja chci aby se tam ukazala ta hlaska ze clanek neexistuje... Nemuzete prosim nejak pomoci ? Dekuji
Yur4Y
Profil
Máte to rozbité.
Bez celého kódu a zrozumiteľného popisu vám nemôžeme pomôcť.
Mastodont
Profil
Načíst data dotazem, když bude počet záznamů nulový, vypsat hlášku.
Venushja
Profil
No ja nevim jak to lip vysvetlit ale pokusim se...
Takze mam script kterej mi podle id vypisuje z db nejaky texty atd no a proste chci udelat kdyz mam napr jenom 1 zaznam v Db s id 1 a do adresy se napise ?id=1 tak se ten text atd zobrazi ale co kdyz tam nekdo napise misto jednicky dvojku? a kdyz se tam teda napise ta 2 tak se nezobrazi zadnej text a nic tak chci udelat nejak aby se proste ukazalo ze Clanek Neexistuje...Jde to nejak udelat pres podminku?nebo nejak jinak ?
Venushja
Profil
Mastodont
No ale nevim jak to udelat prave...
Nox
Profil
zjistíš počet získaných záznamů pomocí mysql_num_rows, pokud bude 0, tak to nic nenašlo
Mastodont
Profil
$result = mysql_query("...", $link);
$num_rows = mysql_num_rows($result);
if ( $num_rows ) {
   ... vypsat článek
} else {
 ....
}
Venushja
Profil
Mastodont
$result = mysql_query("...", $link);
Co patri do toho $link ?
Jan Tvrdík
Profil
Venushja:
Výsledek funkce mysql_connect, ale klidně to smaž. Ten parametr je nepovinný.
Venushja
Profil
Nejak to nefunguje Nevite proc?
Edit Clanek to vypise ale neukaze to ze clanek neexistuje...
Jan Tvrdík
Profil
Venushja:
A máš v else větvi nějaké oznámení neexistence článu?
Venushja
Profil
Davam sem script aby jste se koukli jestli to mam vubec dobre....(Prosim nekomentujte jak mam napsanej script ale jenom tu funkci c me nejde:-d)
    case $db[id] :
    $result = MySQL_Query("SELECT * FROM clanky ORDER BY id Desc");
    $num_rows = mysql_num_rows($result);
    if ( $num_rows ){
    echo"<title> $stranka >> $db[nazev]</title>
    <center><br><table border='1' bordercolor='white' cellpadding='5' cellspacing='0' width='70%'>
    <tr>
    <td colspan='2'><center><font size='4'>$db[nazev]</center></td></tr>
    <tr>
    <td width='35%'><center><font size='2'>Přidal $db[autor]</td>
    <td width='35%'><center><font size='2'>Přidáno $db[datum]</td>
    </tr>
    <tr>
    <td colspan='2'><center><font size='2'>$db[text]</center></td></tr>
    </tr>";
    $bbb = MySQL_Query("SELECT * FROM admsetting ORDER BY id Desc");
    $uuu = MySQL_Query("SELECT count(*) FROM admsetting");
    $ttt = MySQL_Fetch_Array($uuu);
   while ($db= MySQL_Fetch_Array($bbb)):
    $ipadresa = $db[ip];
    $ip = $_SERVER["REMOTE_ADDR"];
    $pass = $db[heslo];
   endwhile;
   if($ip == $ipadresa){
   echo"<form method='post' action='admin.php?upravit=$idecko&pass=$pass'>
   <td width='35%'><center><font size='2'><input type='submit' value='Upravit Článek ($nazevcl)'></td></form>
   <form method='post'>
  <td width='35%'><center><font size='2'>
  <input type='submit' class='input' name='vymaz' value='Vymazat Článek ($nazevcl)'>
  <input type='hidden' class='input' name='vymaz' value='vymazano'>
  <input type='hidden' class='input' name='id' value='$idecko'></td></form>
   </table><br>";
   }else{
   echo"
   </table><br>";
   };
   if($vymaz=="vymazano"){
  MySQL_Query("DELETE FROM `clanky` WHERE `clanky`.`id` = $idecko LIMIT 1;");
  echo"Mažu Přesměrovávám";
  Header("Location: index.php");};
  }else{
  echo"Tento Článek Neexistuje";
  };
    break;
Mastodont
Profil
Venushja
Ve správné větvi to máš, ale ty načítáš všechny články, ne jen jeden.
$result = MySQL_Query("SELECT * FROM clanky ORDER BY id Desc");

A v této části
   while ($db= MySQL_Fetch_Array($bbb)):
    $ipadresa = $db[ip];
    $ip = $_SERVER["REMOTE_ADDR"];
    $pass = $db[heslo];
   endwhile;

načítáš záznamy z admsetting, ale ukládáš je pořád do stejných proměnných, takže ti tam nakonec zůstanou hodnoty z posledního záznamu (a tudíž je zbytečné načítat vše).
Venushja
Profil
Mastodont
while ($db= MySQL_Fetch_Array($bbb)):
$ipadresa = $db[ip];
$ip = $_SERVER["REMOTE_ADDR"];
$pass = $db[heslo];
endwhile;

U tohoto me to je jedno ale spis jak to nacist podle 1 zaznamu?
Mastodont
Profil
No musíš si tam doplnit WHERE ...
Hele, nic ve zlém, ale studuj (to jsme tu museli všichni) :-)
http://www.linuxsoft.cz/mysql
http://www.linuxsoft.cz/php/
Venushja
Profil
No musíš si tam doplnit WHERE ...
Jo tak na Todle to where funguje :-D a na proc to mam u vypisu na strankovani
Edit No tak jsem tam dal where id='$db[id]' a porad to nefaka :-(
Venushja
Profil
Nevite co s tim kdyz tam to where mam a nefaka to ?
Venushja
Profil
Prosim uz fakt nevim jak to jinak vyresit...:-(
Munchen
Profil *
case $db[id] :
$result = mysql_query("SELECT * FROM clanky ORDER BY id Desc WHERE id = '$id' ");
$data= mysql_fetch_array($result);
if ( $data['text'] != ""){
echo"<title> $stranka >> $db[nazev]</title>
<center><br><table border='1' bordercolor='white' cellpadding='5' cellspacing='0' width='70%'>
<tr>
<td colspan='2'><center><font size='4'>$db[nazev]</center></td></tr>
<tr>
<td width='35%'><center><font size='2'>Přidal $db[autor]</td>
<td width='35%'><center><font size='2'>Přidáno $db[datum]</td>
</tr>
<tr>
<td colspan='2'><center><font size='2'>$db[text]</center></td></tr>
</tr>";
$bbb = MySQL_Query("SELECT * FROM admsetting ORDER BY id Desc");
$uuu = MySQL_Query("SELECT count(*) FROM admsetting");
$ttt = MySQL_Fetch_Array($uuu);
while ($db= MySQL_Fetch_Array($bbb)):
$ipadresa = $db[ip];
$ip = $_SERVER["REMOTE_ADDR"];
$pass = $db[heslo];
endwhile;
if($ip == $ipadresa){
echo"<form method='post' action='admin.php?upravit=$idecko&pass=$pass'>
<td width='35%'><center><font size='2'><input type='submit' value='Upravit Článek ($nazevcl)'></td></form>
<form method='post'>
<td width='35%'><center><font size='2'>
<input type='submit' class='input' name='vymaz' value='Vymazat Článek ($nazevcl)'>
<input type='hidden' class='input' name='vymaz' value='vymazano'>
<input type='hidden' class='input' name='id' value='$idecko'></td></form>
</table><br>";
}else{
echo"
</table><br>";
};
if($vymaz=="vymazano"){
MySQL_Query("DELETE FROM `clanky` WHERE `clanky`.`id` = $idecko LIMIT 1;");
echo"Mažu Přesměrovávám";
Header("Location: index.php");};
}else{
echo"Tento Článek Neexistuje";
};
break;
Venushja
Profil
Munchen
To je sice pekny ze mi opravis script ale nefunguje to....Proste to id co neni v db tak se proste neukaze obsah...kdyz ale tam tu podminku dam obracene tak se na tom rpispevku co existuje objevi clanek nenalezen ... Ale nevim no jak to udelat...
Venushja
Profil
No vykaslal jsme se na to a udelal jsme v tabulce sloupec vymazano (Ano-Ne) a tedka chci aby podle toho zda to je vymazany aby me to ukazovalo na strance ale rpoblem je v tom ze ja uz mam na strance ve strahnovani Where obcazeno takze nevim jakto udelat aby sem mohl podle Where z menu a where z vymazano jak to udelat prosim?
Majkl578
Profil
ztraceny pripad......

nauc se zaklady a psat syntakticky bezchybny kod.
$db[id] je co? prasarna! asi jsi preskocil tuto kapitolu: http://cz.php.net/manual/en/language.types.array.php
mysql_query('...;'), to jsi preskocil toto: http://cz.php.net/manual/en/function.mysql-query.php
logicke pojmenovavani promennych, katastrofa.
osetreni vstupnich dat vkladanych do sql dotazu, taky jsi preskocil, viz: http://cz.php.net/manual/en/function.mysql-real-escape-string.php


ted k [#21]
videl jsi uz nekdy v php podminku tohoto tvaru:
if($a && $b)
? jestli ne, taky chyba. pokud ano, tak to zkus logicky aplikovat i v mysql ne?
... WHERE `a` = 'neco' && `b` > 11
Mastodont
Profil
case $db[id]

To je špatně, tam musí být apostrofy:
case $db['id']
Venushja
Profil
Majkl578
... WHERE `a` = 'neco' && `b` > 11
Dik to sem bohuzel nevidel ale budu si to pamatovat...Dik moc lidi tedka me to funguje podle mych predstav... :-)

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