MySQL+PHP (podmienka)
-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
MySQL+PHP (podmienka)
ahojte, no ako Vám nastolím problém.
Potrebujem spraviť podmienku, že ak príkaz v MySQL vyhlásy TRUE, čiže našlo niečo, tak nech spraví niečo, to niečo už ja doplním, len neviem ako spraviť ten začiatok. Presnejšie stým TRUE!
V ľudskom jazyku:
If....tu viem doplniť.....SELECT * FROM `pocitadlo_log` WHERE `Visited` = ''2007-07-01 00:00:00'' AND `ip_addr` LIKE CONVERT(_utf8 ''213.160.163.70'';....vyhlásy(tu potrebujempomôcť).... TRUE....ďalej pokračovať už viem.
Dúúúúúfam, že ste pochopili, no teraz to mám len tka nahádzané bez hlavy a pety, ale potom ten MySQL príkaz dám do nejakého premenného atď, len to neviem, že ako mám napísať, že keď vyhlásy TRUE.
Ja viem, že mne sa ťažko dá pomáhať, lebo rozmýšlam trošku svojvoľne.
V skratke chcem spraviť takúto podmienku:
Ak nájde riadok v tabulke pocitadlo_log, kde Visited je 2007-07-01 00:00:00 a ip_addr 213.160.163.70 tak blablabla
tie hodnoty si nevšímajte
Potrebujem spraviť podmienku, že ak príkaz v MySQL vyhlásy TRUE, čiže našlo niečo, tak nech spraví niečo, to niečo už ja doplním, len neviem ako spraviť ten začiatok. Presnejšie stým TRUE!
V ľudskom jazyku:
If....tu viem doplniť.....SELECT * FROM `pocitadlo_log` WHERE `Visited` = ''2007-07-01 00:00:00'' AND `ip_addr` LIKE CONVERT(_utf8 ''213.160.163.70'';....vyhlásy(tu potrebujempomôcť).... TRUE....ďalej pokračovať už viem.
Dúúúúúfam, že ste pochopili, no teraz to mám len tka nahádzané bez hlavy a pety, ale potom ten MySQL príkaz dám do nejakého premenného atď, len to neviem, že ako mám napísať, že keď vyhlásy TRUE.
Ja viem, že mne sa ťažko dá pomáhať, lebo rozmýšlam trošku svojvoľne.
V skratke chcem spraviť takúto podmienku:
Ak nájde riadok v tabulke pocitadlo_log, kde Visited je 2007-07-01 00:00:00 a ip_addr 213.160.163.70 tak blablabla
tie hodnoty si nevšímajte
-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
Spravil som to takto
Len neviem ako to zapísať, bo moc toho ešte neviem a vidíš hore, že som to jak skúšal.
PS: Mám otázku, ak chcem aby sa tento kód vykonal tak stačí čeknúť adresu súboru kde je ten kód, nie?
Lenže vždy mi píše<?
$day_visit=date("Y-m-d");
$ip_visit=$REMOTE_ADDR;
$conn=mysql_connect("mysql","uzivatel","heslo");
mysql_select_db("db");
$sql="SELECT * FROM counter WHERE visited='$day_visit' AND ip_addr='$ip_visit'";
$result=mysql_query($sql);
if (mysql_num_rows($result)==0):
$sql="INSERT INTO counter (day_visit,ip_visit) VALUES ($day_visit,$ip_visit)";
mysql_query($sql);
endif;
?>
Nevedel by si mi napísať ten jeden riadok, lebo potrebujem tú podmienku, že keď $result vráti prázdný výsledok tak zapíš do ...Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...
Len neviem ako to zapísať, bo moc toho ešte neviem a vidíš hore, že som to jak skúšal.
PS: Mám otázku, ak chcem aby sa tento kód vykonal tak stačí čeknúť adresu súboru kde je ten kód, nie?
skusFata! ChaoS napísal:Spravil som to takto
Lenže vždy mi píše Nevedel by si mi napísať ten jeden riadok, lebo potrebujem tú podmienku, že keď $result vráti prázdný výsledok tak zapíš do ...
Len neviem ako to zapísať, bo moc toho ešte neviem a vidíš hore, že som to jak skúšal.
PS: Mám otázku, ak chcem aby sa tento kód vykonal tak stačí čeknúť adresu súboru kde je ten kód, nie?
Kód: Vybrať všetko
$riadky = mysql_num_rows($sql);
if ($riadky != "")
{
...
}mysql_num_rows vracia int takze takto asi nieturtlak69 napísal:skusKód: Vybrať všetko
$riadky = mysql_num_rows($sql); if ($riadky != "") { ... }
-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
Pre skúšku som spravil, len tak aby platila podmienka
potom najdem na adresu .../pocitadlo.php, a chybu už nepíše, ale nezapíše sa do db nič! Ako mám vycieliť aby sa zapísalo do db?
PS: V databáze tie tabuľky day_visit a ip_visit mám varchar(20)
Kód: Vybrať všetko
<?
$day_visit=date("Y-m-d");
$ip_visit=$REMOTE_ADDR;
$conn=mysql_connect("mysql","","");
mysql_select_db("");
$sql="SELECT * FROM counter WHERE visited='$day_visit' AND ip_addr='$ip_visit'";
$result=mysql_query($sql);
$i="2007-07-01";
if ($i == $day_visit):
$sql="INSERT INTO counter (day_visit,ip_visit) VALUES ($day_visit,$ip_visit)";
mysql_query($sql);
endif;
?>PS: V databáze tie tabuľky day_visit a ip_visit mám varchar(20)
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
ale pani. ved optimalizujme trosku. ak potrebujes vediet ci je v databaze aspon jeden zaznam ktory vyhovuje tvojej podmienke a nepotrebujes udaje toho zaznamu tak pouzi toto
Kód: Vybrať všetko
SELECT 1 FROM tabulka WHERE tvoja_podmienka LIMIT 1A keď budete niekedy potrebovať počet vyhovujúcich záznamov, môžete použiť kombináciu SQL_CALC_FOUND_ROWS + FOUND_ROWS() (je to v príkladoch k funkcii mysql_num_rows)
-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
Kód: Vybrať všetko
<?
$last_visit=date("Y-m-d H:i:s");
$day_visit=date("Y-m-d");
$ip_visit=$REMOTE_ADDR;
$conn=mysql_connect("mysql","***","***");
mysql_select_db("***");
$reload = mysql_query("SELECT 1 FROM counter WHERE day_visit='$day_visit' AND ip_visit='$ip_visit' LIMIT 1");
$count = mysql_num_rows($reload);
if ($count == 0):
$sql="INSERT INTO counter (counter_name,Visits,day_visit,ip_visit,last_visit) VALUES ($counter_name,0,$day_visit,$ip_visit,$last_visit)";
mysql_query($sql);
endif;
?>toto s chybou zrejme suvisiet nebude, ale chyba ti tam tusim:

Kód: Vybrať všetko
mysql_close();To tam byť môže, ale nemusí.ppt napísal:toto s chybou zrejme suvisiet nebude, ale chyba ti tam tusim:Kód: Vybrať všetko
mysql_close();
takto ti poradim ...
skus si tie tvoje query dat do phpMyAdmina co on na ne povie ... ak ti vyhodi chybu tak ti presne napise v com je problem a potom to lahko opravis ...
predpokladam ze prave tam je problem (zle query; "SELECT 1 ..." vyzera velmi cudne)
a este : v dotazoch skus zatvarat stringove hodnoty do apostrofov alebo uvodzoviek
skus si tie tvoje query dat do phpMyAdmina co on na ne povie ... ak ti vyhodi chybu tak ti presne napise v com je problem a potom to lahko opravis ...
predpokladam ze prave tam je problem (zle query; "SELECT 1 ..." vyzera velmi cudne)
a este : v dotazoch skus zatvarat stringove hodnoty do apostrofov alebo uvodzoviek
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
Jj, chyba bola v dotaze, díky Vám za pomoc.
premenné tam mali byť v úvodzovkách
Kód: Vybrať všetko
INSERT INTO counter (counter_name,Visits,day_visit,ip_visit,last_visit) VALUES ($counter_name,0,$day_visit,$ip_visit,$last_visit)Kód: Vybrať všetko
INSERT INTO counter (counter_name,Visits,day_visit,ip_visit,last_visit) VALUES ('$counter_name',0,'$day_visit','$ip_visit','$last_visit')-
Fata! ChaoS
Star
- Príspevky: 650
- Registrovaný: 12 apr 2006, 20:23
- Bydlisko: Tvrdošovce
- Kontaktovať používateľa:
No teraz som to celkom prerobil a už som s tým hotový, lenže mi tam píše chybu v syntaxe, ale tam žiadnú chybu nevidím a ešte k tomu vyššie je to isté a tam to nepíše chybu.
PS:
Kde je v tom riadku chyba alebo čo tam mám zle?<?
$ip_addr=$REMOTE_ADDR;
$itstime=date("H:i");
$Last_visit=date("Y-m-d H:i:s");
$day_visit=date("Y-m-d H");
$day_time=date("Y-m-d");
$Conn=mysql_connect("***","***","****");
mysql_select_db("***");
$sql="SELECT * FROM Ncounter WHERE counter_name='$counter_name'";
$result=mysql_query($sql);
if (mysql_num_rows($result)==0):
$Visits=1;
$sql="INSERT INTO Ncounter (counter_name,visits,last_visit) VALUES ('$counter_name',$Visits,'$Last_visit')";
mysql_query($sql);
$sql="INSERT INTO Ncounter_log (counter_name,visiter,visit_time,ip_visiter,day_visit) VALUES ('$counter_name',$Visits,'$Last_visit','$ip_addr','$day_visit')";
mysql_query($sql);
$sql="INSERT INTO Ncounter_day (counter_name,visits,day_time) VALUES ('$counter_name',$Visits,'$day_time')";
mysql_query($sql);
endif;
$sql="SELECT * FROM Ncounter WHERE counter_name='$counter_name'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$CVisits=++$row["visits"];
$reload=mysql_query("SELECT 1 FROM Ncounter_log WHERE day_visit='$day_visit' AND ip_visiter='$ip_addr' LIMIT 1");
$count = mysql_num_rows($reload);
if ($count == "0"):
$sql="INSERT INTO Ncounter_log (counter_name,visiter,visit_time,ip_visiter,day_visit) VALUES ('$counter_name','$CVisits','$Last_visit','$ip_addr','$day_visit')";
mysql_query($sql);
$sql="UPDATE Ncounter SET Visits=$CVisits,Last_visit='$Last_visit' WHERE CounterName='$counter_name'";
mysql_query($sql);
endif;
$sql="SELECT * FROM Ncounter_log WHERE day_time='$day_time'";
$Tcount=mysql_num_rows($sql);
if ("23:59" == $itstime):
$sql="INSERT INTO Ncounter_day (counter_name,visits,day_time) VALUES ('$counter_name','$Tcount','$day_time')";
mysql_query($sql);
endif;
?>
PS:
Parse error: syntax error, unexpected T_STRING in ... on line 20