Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
marco
Kreisi kasutaja

liitunud: 18.04.2006
|
25.10.2009 17:44:34
mysql php päring, mis ei prindiks tühjasid välju. |
|
|
On tabel kus on sissekanded kujul:
nimi, vanus
peeter, 22
toomas |
ja php kood:
while($row = mysql_fetch_array($result ))
{
echo "Nimi: ";
echo $row['nimi'];
echo "<br>";
echo "Vanus: ";
echo $row['vanus'];
echo "<br>";
} |
mis kuvab kõik tabelis oleva info järgnevalt:
Nimi: peeter
Vanus: 22
Nimi: Toomas
Vanus:
kuidas php'ga nii teha, et tühja sissekande puhul jätaks selle vahele. Selle näite puhul siis jätaks Toomase vanuse lahtri trükkimata.
Nimi: peeter
Vanus: 22
Nimi: Toomas
_________________ Does "genuine" mean "with the real bugs"? |
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
9 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
wk
HV vaatleja
liitunud: 22.05.2007
|
25.10.2009 19:54:32
|
|
|
Mõistlik oleks juba mysqlile päring nii esitada, et vastuseks ei saagi ilma vanuseta ridu.
_________________ Kõike hääd,
WK |
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
25.10.2009 20:05:00
|
|
|
wk, aga kuidas sa selle näite puhul seda teeksid? iga kord ju trükitakse Vanus: jne....
ikka peab seal while sees ütlema, millal kuvada ja millal mitte!
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
limp
HV Guru

liitunud: 11.08.2003
|
25.10.2009 20:06:50
|
|
|
noo võiks teha juba "where nimi not null or vanus not null"
või kuidas iganes see not syntaks oli
_________________ Ärgake lapsed, maailm on hädaohus
Windows keskkond on nagu li*s - kõik teda ke*ivad aga keegi teda ei armasta! |
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
52 |
|
tagasi üles |
|
 |
wk
HV vaatleja
liitunud: 22.05.2007
|
25.10.2009 20:11:55
|
|
|
SELECT nimi, vanus FROM tabel WHERE vanus > 0 |
_________________ Kõike hääd,
WK |
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
25.10.2009 20:18:35
|
|
|
wk, printida on vaja kõigi isikute nimed, mitte ainult nende omad kel vanus olemas.
_________________ Mõistus otsas? Pane pinusse... |
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
limp
HV Guru

liitunud: 11.08.2003
|
25.10.2009 20:25:09
|
|
|
siis:
if($row['vanus']>0) {
echo "Vanus: ";
echo $row['vanus'];
echo "<br>";
}
|
_________________ Ärgake lapsed, maailm on hädaohus
Windows keskkond on nagu li*s - kõik teda ke*ivad aga keegi teda ei armasta! |
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
52 |
|
tagasi üles |
|
 |
Deadlock
Kreisi kasutaja
liitunud: 16.07.2004
|
25.10.2009 20:25:42
|
|
|
if($row['vanus'] > 0){
echo 'vanus: '.$row['vanus'];
}
|
Midagi sellist võibolla?
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
wk
HV vaatleja
liitunud: 22.05.2007
|
25.10.2009 20:31:31
|
|
|
nene kirjutas: |
wk, printida on vaja kõigi isikute nimed, mitte ainult nende omad kel vanus olemas. |
Nojah, seda ma imestasin, kus see probleem siin on. Aga sedagi saaks lahendada päringu tasemel, iseasi on optimaalsus.
_________________ Kõike hääd,
WK |
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
marco
Kreisi kasutaja

liitunud: 18.04.2006
|
25.10.2009 20:31:59
|
|
|
mikk36'e lingitud manuaalid aitasid mind niikaugele, et sain töötava koodijupi:
while($row = mysql_fetch_array($result ))
echo "Nimi: ";
echo $row['nimi'];
echo "<br>";
if(empty($row['vanus']))
{
echo "";
}
else
{
echo "Vanus: ";
echo $row['vanus'];
echo "<br>";
} |
pole kindel kas see nüüd kõige targem lahendus on, aga vähemalt töötab.
_________________ Does "genuine" mean "with the real bugs"? |
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
9 |
|
tagasi üles |
|
 |
wk
HV vaatleja
liitunud: 22.05.2007
|
25.10.2009 20:35:26
|
|
|
Üks lõpetav kapsaraud on puudu ja teistpidi oleks mõistlikum:
if($row['vanus'] > 0)
{
echo "Vanus: ";
echo $row['vanus'];
echo "<br>";
} |
_________________ Kõike hääd,
WK |
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
25.10.2009 20:38:57
|
|
|
Nüüd oleneb kas tahad, et see Vanus ka puuduks või sobiks ka selline väljund
Peeter Vanus 22
Ants Vanus
Sellisel juhul pole üldse mõtet midagi ifida siin, kuna $row['vanus'] ongi tühi ning visuaalselt ei ole midagi näha.
Sinu pakutu peaks ka selliselt toimima.
echo""; pole mõtet teha vist nagu.
if($row['vanus'])
{
echo "Vanus: ";
echo $row['vanus'];
echo "<br>";
} |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
marco
Kreisi kasutaja

liitunud: 18.04.2006
|
25.10.2009 20:46:46
|
|
|
limp, Bluebull, wk,
andrusny, "Vanus" peaks ka puuduma.
_________________ Does "genuine" mean "with the real bugs"? |
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
9 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
25.10.2009 21:08:28
|
|
|
IF pole siinkohal ainus võimalus. Päris loetava koodi saab ka ?: operaatori abil:
while ($row = mysql_fetch_array($result)) {
echo "Nimi: $row[nimi]<br>";
echo $row["vanus"] ? "Vanus: $row[vanus]<br>" : "";
} |
&& operaatori abil saab minna veel lühemaks, aga siis tuleb echo asemel kasutada print-i, sest echo pole funktsioon:
while ($row = mysql_fetch_array($result)) {
print("Nimi: $row[nimi]<br>");
$row["vanus"] && print("Vanus: $row[vanus]<br>");
} |
marcol soovitaks jääda siiski IF-ide juurde
_________________ Mõistus otsas? Pane pinusse... |
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
25.10.2009 21:16:39
|
|
|
nene, viitsiksid seda seletada? mis seal tehakse...
$row["vanus"] && print("Vanus: $row[vanus]<br>"); |
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
25.10.2009 21:59:56
|
|
|
keevitaja kirjutas: |
nene, viitsiksid seda seletada? mis seal tehakse...
$row["vanus"] && print("Vanus: $row[vanus]<br>"); |
|
See on selline mõneti advanced kasutus võrdlusoperaatoritele. Point on siin selles, et php arvestab $row[vanus] väärtuseks false juhul, kui see on null, kui ei ole null loeb selle true väärtust omavaks. Nüüd, kuna && operaator kokku tagastab true ainult juhul, kui mõlemad pooled on true, siis kui esimene pool on null, ehk false, siis teistpoolt ei ole mõtet üldse vaadata ja php jätab selle lause teise poole käivitamata ja väljundi välja trükkimata.
Märksõna mille alt infot peaks netist leidma on "logical operator short circuiting", kui on huvi rohkem teada saada.
PHP gurud võivad nüüd paremini seletada, PHP pole mu igapäevaleib siiski
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
25.10.2009 23:17:55
|
|
|
class PR
{
function output()
{
echo 'ahaa';
}
}
$pr = new PR;
$kala = '';
$kala && $pr->output(); |
kas selliselt on siis selle && kasutamine ok ja mõttekas? selle asemel et teha if(!empty($kala))
ja pärast && saab ainult panne ühe funktsiooni?
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
25.10.2009 23:53:27
|
|
|
Ma isiklikult ei soovitaks sellist stiili väga kasutada. Põhimõtteliselt on see täpselt sama mis:
if ($kala) $pr->output(); |
Ja see on mu meelest märksa loeatavam ja kergemini mõistetav.
See &&-stiil on rohkem mu meelest nagu kompenseerimaks seda, et PHP ei võimalda selliseid konstruktsioone nagu Perl:
Või nagu Ruby:
Samas maitse asi. Kui kõik meeskonnas on nõus, et see &&-värk on arusaadav, siis miks mitte. Eks ta ole rohkem harjumise värk.
_________________ Mõistus otsas? Pane pinusse... |
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
25.10.2009 23:56:33
|
|
|
mul siin hetkel meeskond suht väike. koos minuga 1 liige meeskonnas
kas seda siis üldiselt ei kasutata?
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
26.10.2009 00:03:36
|
|
|
keevitaja kirjutas: |
mul siin hetkel meeskond suht väike. koos minuga 1 liige meeskonnas
kas seda siis üldiselt ei kasutata? |
Kõige suurem miinus minuarust on sel asjal see, et see ei ole nii intuitiivselt mõistetav ehk koodi loetavus kannatab. Samas on ta ka ilmselgelt piiratum siiski, kui if lause, sest reaalselt saad sa kontrollida ainult väärtuse null olemist. Kui on kokkupuuteid paralleelselt erinevate keeltega, siis võivad olla ka keelte vahel erinevused. Kasvõi sama näite puhul tekib küsimus, kas tühi string on true või false. Pole küll katsetanud, aga intuitiivselt ma arvan, et java näiteks võtab tühja stringi väärtuseks true ning false on ainult null, samas siinsest diskussioonist jääb mulje, et php tõlgendab false'ks nii null kui tühja stringi.
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
26.10.2009 00:18:13
|
|
|
keevitaja kirjutas: |
kas seda siis üldiselt ei kasutata? |
Ma pole näinud, et eriti kasutataks.
Tavaliselt kui ma sellist asja näen, siis hetkeks peatun ja mõtlen, et kas ma saan ikka õigesti aru, mis toimub. Lihtsalt mu aju parsib IF-i kiiremini läbi kui &&-i. Pealegi on kirjutamisvaeva vähenemine seeläbi õite napp, seega minu jaoks ei kaalu plussid miinuseid üle.
Küll on aga teisi sarnaseid konstruktsioone, mida ma kasutan. Näiteks JavaScriptis parameetritele vaikimisi väärtuste andmine, mis if-idega käiks nõnda:
function sum(a, b) {
if (!a) a = 0;
if (!b) b = 0;
return a + b;
} |
Aga || abil saab kirja panna nii:
function sum(a, b) {
a = a || 0;
b = b || 0;
return a + b;
} |
Või veelgi lühemalt:
function sum(a, b) {
return (a||0) + (b||0);
} |
Antud stiil on vähemasti JavaScriptis üpris levinud.
_________________ Mõistus otsas? Pane pinusse... |
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
27.10.2009 01:00:31
|
|
|
ma nüüd küll teemas mööda, aga veel sellest kuidas oleks mõttekas kirjutada. kui ma tahan $dir_id anda $_REQUEST['dir_id'] väärtust aga ainult siis kui tegemist on numriga. juhul kui väärtus puudub või on tühi või string vms, siis annan väärtuseks 0 kas nii on mõttekas kirjutada?
@$dir_id = (int) $_REQUEST['dir_id']; |
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
limp
HV Guru

liitunud: 11.08.2003
|
27.10.2009 10:24:44
|
|
|
ise olen samuti kasutanud seda (int)$minginevar, seda just eesmärgiga, et keegi ei saaks mingeid injectioneid vms paska teha läbi posti või geti
_________________ Ärgake lapsed, maailm on hädaohus
Windows keskkond on nagu li*s - kõik teda ke*ivad aga keegi teda ei armasta! |
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
52 |
|
tagasi üles |
|
 |
gloom
Kreisi kasutaja

liitunud: 15.07.2002
|
27.10.2009 18:22:57
|
|
|
while ($row = mysql_fetch_array($result)) {
echo "Nimi: $row[nimi]<br>";
echo ($row['vanus']=="") ? "" : "Vanus: {$row['vanus']} <br>";
} |
|
|
Kommentaarid: 29 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
2 :: |
23 |
|
tagasi üles |
|
 |
|