/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Flere count rows? (php mySQL)
Fra : Stig Sørensen


Dato : 12-11-07 22:55

Hej gruppe.

Jeg kunne godt tænke mig at få et tal på hvor mange rækker/records der
i en given tabel.

Med følgende:

$result = mysql_query("SELECT * FROM phpbb_posts");
$num_rows = mysql_num_rows($result);
echo $num_rows;

- får jeg tallet på hvor mange rækker tabellen 'phpbb_posts'
indeholder.
Men jeg kunne også godt tænke mig at vide hvor mange rækker tabellerne
phpbb_topics og phpbb_users indeholder.

Hvordan gør jeg dette på den smarteste måde?


 
 
Jan Nielsen (13-11-2007)
Kommentar
Fra : Jan Nielsen


Dato : 13-11-07 05:57

Stig Sørensen skrev:
> Hej gruppe.
>
> Jeg kunne godt tænke mig at få et tal på hvor mange rækker/records der
> i en given tabel.
>
> Med følgende:
>
> $result = mysql_query("SELECT * FROM phpbb_posts");
> $num_rows = mysql_num_rows($result);
> echo $num_rows;
>
> - får jeg tallet på hvor mange rækker tabellen 'phpbb_posts'
> indeholder.
> Men jeg kunne også godt tænke mig at vide hvor mange rækker tabellerne
> phpbb_topics og phpbb_users indeholder.
>
> Hvordan gør jeg dette på den smarteste måde?
>
du bliver nok nødt til at lave flere queryies, men du kan bruge "SELECT
COUNT(*) as num FROM table" istedet, så skal der ikke udveksles så meget
data.

$res = mysql_query("SELECT COUNT(*) as num FROM phpbb_posts");
$row = mysql_fetch_rows($res);
echo $row['num'].' rækker';



Stig Sørensen (13-11-2007)
Kommentar
Fra : Stig Sørensen


Dato : 13-11-07 14:34

On 13 Nov., 04:56, Jan Nielsen
<nos...@mora.dk.byt.om.paa.mora.og.nospam> wrote:

> du bliver nok nødt til at lave flere queryies, men du kan bruge "SELECT
> COUNT(*) as num FROM table" istedet, så skal der ikke udveksles så meget
> data.
>
> $res = mysql_query("SELECT COUNT(*) as num FROM phpbb_posts");
> $row = mysql_fetch_rows($res);
> echo $row['num'].' rækker';

Med ovenstående får jeg følgende fejl:
Fatal error: Call to undefined function: mysql_fetch_rows() in (FILE)

Jeg har dog leget lidt med det og dette virker for mig:


$res_posts = mysql_query("SELECT * FROM phpbb_posts");
$res_topics = mysql_query("SELECT * FROM phpbb_topics");
$res_users = mysql_query("SELECT * FROM phpbb_users");
$num_rows_posts = mysql_num_rows($res_posts);
$num_rows_topics = mysql_num_rows($res_topics);
$num_rows_users = mysql_num_rows($res_users);
echo $num_rows_posts;
echo $num_rows_topics;
echo $num_rows_users;
?>


Om det så er den smarteste måde at gøre det på, jeg tvivler.
Hvis det er hel hen i vejret håber jeg på gode kommentarer.


Dan Storm (13-11-2007)
Kommentar
Fra : Dan Storm


Dato : 13-11-07 14:59

Stig Sørensen skrev:
> On 13 Nov., 04:56, Jan Nielsen
> <nos...@mora.dk.byt.om.paa.mora.og.nospam> wrote:
>
>> du bliver nok nødt til at lave flere queryies, men du kan bruge "SELECT
>> COUNT(*) as num FROM table" istedet, så skal der ikke udveksles så meget
>> data.
>>
>> $res = mysql_query("SELECT COUNT(*) as num FROM phpbb_posts");
>> $row = mysql_fetch_rows($res);
>> echo $row['num'].' rækker';
>
> Med ovenstående får jeg følgende fejl:
> Fatal error: Call to undefined function: mysql_fetch_rows() in (FILE)
>

Det er fordi ovenstående kode er forkert. mysql_fetch_rows() er ikke en
standard funktion. Du tænker sikkert på mysql_fetch_array()
Så bliver din kode endnu længere end før:

$res = mysql_query("SELECT COUNT(*) AS num FROM phpbb_posts");
$row = mysql_fetch_array($res);
next($row);
$num_rows_posts = $row["num"];


Istedet kan du gøre således:
$res = mysql_query("SELECT COUNT(*) AS num FROM phpbb_posts");
$num_rows_posts = mysql_result($res, 0, "num");



> Jeg har dog leget lidt med det og dette virker for mig:
>
>
> $res_posts = mysql_query("SELECT * FROM phpbb_posts");
> $res_topics = mysql_query("SELECT * FROM phpbb_topics");
> $res_users = mysql_query("SELECT * FROM phpbb_users");
> $num_rows_posts = mysql_num_rows($res_posts);
> $num_rows_topics = mysql_num_rows($res_topics);
> $num_rows_users = mysql_num_rows($res_users);
> echo $num_rows_posts;
> echo $num_rows_topics;
> echo $num_rows_users;
> ?>
>
>
> Om det så er den smarteste måde at gøre det på, jeg tvivler.
> Hvis det er hel hen i vejret håber jeg på gode kommentarer.
>

Min udgave:

function get_num_rows($table)
{
   if($res = mysql_query("SELECT COUNT(*) as num FROM ".$table))
      return mysql_result($res, 0, "num");
   else
      return false;
}

$num_rows_posts = get_num_rows("phpbb_posts");
$num_rows_topics = get_num_rows("phpbb_topics");
$num_rows_users = get_num_rows("phpbb_users");



--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Stig Sørensen (14-11-2007)
Kommentar
Fra : Stig Sørensen


Dato : 14-11-07 12:52

On 13 Nov., 14:58, Dan Storm <shadyz@_REMOVETHIS_err0r.dk> wrote:

> Istedet kan du gøre således:
> $res = mysql_query("SELECT COUNT(*) AS num FROM phpbb_posts");
> $num_rows_posts = mysql_result($res, 0, "num");
>
>
> Min udgave:
>
> function get_num_rows($table)
> {
> if($res = mysql_query("SELECT COUNT(*) as num FROM ".$table))
> return mysql_result($res, 0, "num");
> else
> return false;
>
> }
>
> $num_rows_posts = get_num_rows("phpbb_posts");
> $num_rows_topics = get_num_rows("phpbb_topics");
> $num_rows_users = get_num_rows("phpbb_users");
>

Hej Dan. Det ser jo meget smart ud, det fylder langt fra så meget som
min udgave :)
Èn ting dog, hvordan laver jeg en "while" på ovenstående og echo'er
det ud?


Mvh
Stig


Bertel Lund Hansen (14-11-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-11-07 13:36

Stig Sørensen skrev:

> > $num_rows_posts = get_num_rows("phpbb_posts");
> > $num_rows_topics = get_num_rows("phpbb_topics");
> > $num_rows_users = get_num_rows("phpbb_users");

> Èn ting dog, hvordan laver jeg en "while" på ovenstående

Det skal du ikke. Antallet af elementer skal kun tælles én gang.

> og echo'er det ud?

Med echo:

   echo "<p>Antal poster i phpbb_posts er $num_rows_posts.</p>";
   echo "<p>Antal poster i phpbb_topics er $num_rows_topics.</p>";
   echo "<p>Antal poster i phpbb_users er $num_rows_users.</p>";

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Stig Sørensen (14-11-2007)
Kommentar
Fra : Stig Sørensen


Dato : 14-11-07 15:39

On 14 Nov., 13:35, Bertel Lund Hansen <unosp...@lundhansen.dk> wrote:
> Stig Sørensen skrev:
>
> > > $num_rows_posts = get_num_rows("phpbb_posts");
> > > $num_rows_topics = get_num_rows("phpbb_topics");
> > > $num_rows_users = get_num_rows("phpbb_users");
> > Èn ting dog, hvordan laver jeg en "while" på ovenstående
>
> Det skal du ikke. Antallet af elementer skal kun tælles én gang.

Selvfølgeligt! Det kan jeg godt se nu. Det kræver jo netop kun én
forespørgelse for at finde antal rækker i en tabel.
Jeg er ny i det så bær over med mig


> > og echo'er det ud?
>
> Med echo:
>
> echo "<p>Antal poster i phpbb_posts er $num_rows_posts.</p>";
> echo "<p>Antal poster i phpbb_topics er $num_rows_topics.</p>";
> echo "<p>Antal poster i phpbb_users er $num_rows_users.</p>";

Jeg bukker og takker rigtig mange gange.

Forsat god dag.

Mvh
Stig Sørensen


Dan Storm (14-11-2007)
Kommentar
Fra : Dan Storm


Dato : 14-11-07 16:00

Stig Sørensen skrev:
> On 14 Nov., 13:35, Bertel Lund Hansen <unosp...@lundhansen.dk> wrote:
>>> og echo'er det ud?
>> Med echo:
>>
>> echo "<p>Antal poster i phpbb_posts er $num_rows_posts.</p>";
>> echo "<p>Antal poster i phpbb_topics er $num_rows_topics.</p>";
>> echo "<p>Antal poster i phpbb_users er $num_rows_users.</p>";

Bare for at fluekneppe det lidt, så vil jeg gerne lige appelere til en
bedre syntaks af ovenstående:

echo "<p>Antal poster i phpbb_posts er ".$num_rows_posts.".</p>";
echo "<p>Antal poster i phpbb_topics er ".$num_rows_topics.".</p>";
echo "<p>Antal poster i phpbb_users er ".$num_rows_users.".</p>";

Puha, det var lidt ligesom at holde en bøvs inde... ;)


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Bertel Lund Hansen (14-11-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-11-07 16:43

Dan Storm skrev:

> bedre syntaks af ovenstående:

Hvorfor bedre?

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Dan Storm (14-11-2007)
Kommentar
Fra : Dan Storm


Dato : 14-11-07 19:51

Bertel Lund Hansen skrev:
> Dan Storm skrev:
>
>> bedre syntaks af ovenstående:
>
> Hvorfor bedre?
>

Du kender vel kvinder?
Potteplanten skal stå rigtigt, før det står pænt.
Sådan har jeg det med koden. Jeg synes ikke det er pænt at skrive
variabler ind i en streng som du gør.

For mig virker det også logisk at gå ud af strengen og behandle
variablen selvstændigt.

Eksempel:

$sql = "INSERT INTO tabel (name, content) VALUES ('$name', '$content')":

Ovenstående virker efter hensigten, men såfremt jeg vil benytte mig af
en funktion på variablen $content, skal jeg alligevel gå ud af strengen.
$content vil jeg gerne præsentere for brugeren inden jeg benytter mig af
funktionen og endeligt comitter til db.

$sql = "INSERT INTO tabel (name, content) VALUES ('".$name."',
'".addslashes($content)."')";

Og nej, jeg synes ikke det er nemmere/bedre/lige-så-godt at gøre sådan:
$content = addslashes($content);
$sql = "INSERT...";


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Bertel Lund Hansen (14-11-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-11-07 20:47

Dan Storm skrev:

> Du kender vel kvinder?
> Potteplanten skal stå rigtigt, før det står pænt.

Jo, men du kan ikke ophøje din potteplantepræference til at være
bedre end andres.

> Sådan har jeg det med koden. Jeg synes ikke det er pænt at skrive
> variabler ind i en streng som du gør.

Det synes jeg.

> $sql = "INSERT INTO tabel (name, content) VALUES ('$name', '$content')":

> Ovenstående virker efter hensigten, men såfremt jeg vil benytte mig af
> en funktion på variablen $content, skal jeg alligevel gå ud af strengen.

Korrekt. Det gør jeg så også fordi det er nødvendigt.

> Og nej, jeg synes ikke det er nemmere/bedre/lige-så-godt at gøre sådan:
> $content = addslashes($content);
> $sql = "INSERT...";

Nej, det synes jeg heller ikke. Det var kun rent polemisk at jeg
fremførte det som en mulighed i det andet svar. Jeg bruger dog
metoden af og til hvis det kan forenkle koden - det kunne være
for at få en kortform ved et langt og komplekst funktionskald.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Dan Storm (14-11-2007)
Kommentar
Fra : Dan Storm


Dato : 14-11-07 21:46

Bertel Lund Hansen skrev:
> Dan Storm skrev:
>
>> Du kender vel kvinder?
>> Potteplanten skal stå rigtigt, før det står pænt.
>
> Jo, men du kan ikke ophøje din potteplantepræference til at være
> bedre end andres.

Har jeg heller ikke gjort...
>
>> Sådan har jeg det med koden. Jeg synes ikke det er pænt at skrive
>> variabler ind i en streng som du gør.
>
> Det synes jeg.

Super - dig om det...

>> $sql = "INSERT INTO tabel (name, content) VALUES ('$name', '$content')":
>
>> Ovenstående virker efter hensigten, men såfremt jeg vil benytte mig af
>> en funktion på variablen $content, skal jeg alligevel gå ud af strengen.
>
> Korrekt. Det gør jeg så også fordi det er nødvendigt.
>
>> Og nej, jeg synes ikke det er nemmere/bedre/lige-så-godt at gøre sådan:
>> $content = addslashes($content);
>> $sql = "INSERT...";
>
> Nej, det synes jeg heller ikke. Det var kun rent polemisk at jeg
> fremførte det som en mulighed i det andet svar. Jeg bruger dog
> metoden af og til hvis det kan forenkle koden - det kunne være
> for at få en kortform ved et langt og komplekst funktionskald.

Vi er bare ikke enige. Fungerer det for dig, så er det fint. Vi har alle
forskellige måder at scripte på.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Peter Brodersen (14-11-2007)
Kommentar
Fra : Peter Brodersen


Dato : 14-11-07 22:40

On Wed, 14 Nov 2007 21:46:15 +0100, Dan Storm
<shadyz@_REMOVETHIS_err0r.dk> wrote:

>Vi er bare ikke enige. Fungerer det for dig, så er det fint. Vi har alle
>forskellige måder at scripte på.

Man kunne mene, at hvis man er derude, hvor det begynder at blive
noget fedtværk med at escape ting og blande indhold, så trænger man
under alle omstændigheder til et abstraktionslag.

Jeg kan ikke selv længere forestille mig ikke at bruge et sådan til
mine forespørgsler. Fordelen er også, at min gamle kode nu let kan
opgraderes til mysqli-features som fx prepared statements understøttet
af databasen.

For HTMLs vedkommende er der jo Smarty og venner.

--
- Peter Brodersen
Kendt fra Internet

Dan Storm (15-11-2007)
Kommentar
Fra : Dan Storm


Dato : 15-11-07 00:05

Peter Brodersen skrev:
> On Wed, 14 Nov 2007 21:46:15 +0100, Dan Storm
> <shadyz@_REMOVETHIS_err0r.dk> wrote:
>
>> Vi er bare ikke enige. Fungerer det for dig, så er det fint. Vi har alle
>> forskellige måder at scripte på.
>
> Man kunne mene, at hvis man er derude, hvor det begynder at blive
> noget fedtværk med at escape ting og blande indhold, så trænger man
> under alle omstændigheder til et abstraktionslag.

Enig. Et abstraktionslag er altid at foretrække. Det hjælper med at
holde koden ren og mere sikker.

> Jeg kan ikke selv længere forestille mig ikke at bruge et sådan til
> mine forespørgsler. Fordelen er også, at min gamle kode nu let kan
> opgraderes til mysqli-features som fx prepared statements understøttet
> af databasen.

Jeps, havde et database abstraktionslag som nemt blev opdateret med
mysqli, hvilket i øvrigt også er den rigtige vej at gå. ;) Men ja, med
abstraktionslag vil man kunne spare megen tid på opgraderinger.

>
> For HTMLs vedkommende er der jo Smarty og venner.
>

;)

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Stig Sørensen (14-11-2007)
Kommentar
Fra : Stig Sørensen


Dato : 14-11-07 16:24

On 14 Nov., 14:59, Dan Storm <shadyz@_REMOVETHIS_err0r.dk> wrote:
> Bare for at fluekneppe det lidt, så vil jeg gerne lige appelere til en
> bedre syntaks af ovenstående:
>
> echo "<p>Antal poster i phpbb_posts er ".$num_rows_posts.".</p>";
> echo "<p>Antal poster i phpbb_topics er ".$num_rows_topics.".</p>";
> echo "<p>Antal poster i phpbb_users er ".$num_rows_users.".</p>";
>
> Puha, det var lidt ligesom at holde en bøvs inde... ;)

Jeg ved ikke hvad forskellen skulle være, jeg formoder det er noget
sikkerhed i form af at escape html tegn?
Jeg har ikke inkluderet hele min kode hver gang, jeg ønsker nemlig
også et bestemt talformat:

function get_num_rows($table)
{
if($res = mysql_query("SELECT COUNT(*) as num FROM ".$table))
return mysql_result($res, 0, "num");
else
return false;

}
$num_rows_posts = get_num_rows("phpbb_posts");
$num_rows_topics = get_num_rows("phpbb_topics");
$num_rows_users = get_num_rows("phpbb_users");

// Laver det om til format 1.000
$antal_posts = number_format($num_rows_posts, 0, ',', '.');
$antal_topics = number_format($num_rows_topics, 0, ',', '.');
$antal_users = number_format($num_rows_users, 0, ',', '.');

<li>Antal indlæg: <? echo $antal_posts; ?></li>
<li>Antal emner: <? echo $antal_topics; ?></li>
<li>Antal brugere: <? echo $antal_users; ?></li>

Jeg bruger php.net men én ting som man ikke bare lige lærer, er
hvordan man kan lave koden mere optimalt.
Jeg tænker, at det er overkill at lave number_format på den måde?

Et andet ligende problem, hvis jeg må gå lidt off-topic er at jeg
gerne vil escape html tegn herfra:

$query_nyeste_emner = mysql_query("SELECT * FROM phpbb_topics WHERE
forum_id!=13 AND forum_id!=15 ORDER BY topic_id DESC LIMIT 10");
while($row = mysql_fetch_assoc($query_nyeste_emner))
{
echo "<a href='LINK" . $row['topic_id'] . ".html' title='" .
$row['topic_title'] . "'>" . $row['topic_title'] . "</a><br />
";
}

Det giver et problem specielt i title='" . $row['topic_title'] ."' -
for hvis titlen på det som jeg udtrækker faktisk indeholder ' så laver
den jo rod i det hele, og min side validere ikke længere.
Men hvordan jeg bruger htmlentities her kan jeg ikke se.
http://dk2.php.net/manual/da/function.htmlentities.php - fortæller at
det kan bruges således:

$str = "Et 'citat' er <b>stærkt</b>";
// Outputs: Et 'citat' er &lt;b&gt;stærkt&lt;/b&gt;
echo htmlentities($str);
// Outputs: Et &#039;citat&#039; er &lt;b&gt;stærkt&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);

Kan desværre ikke se hvordan jeg kan bruge det på min
$query_nyeste_emner.




Bertel Lund Hansen (14-11-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-11-07 16:43

Stig Sørensen skrev:

> Jeg ved ikke hvad forskellen skulle være

Ingen.

PHP-variable der skrives i dobbelte anførselstegn, oversættes i
udskriften. Jeg forstår ikke hvorfor Dan Storm er bange for den
skrivemåde. Selv bruger jeg den konsekvent.

Der er dog elementer som ikke kan behandles på den måde, og så må
man bruge punkt-notationen som han viste. Det gælder f.eks.
definerede værdier.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Dan Storm (14-11-2007)
Kommentar
Fra : Dan Storm


Dato : 14-11-07 19:54

Bertel Lund Hansen skrev:
> PHP-variable der skrives i dobbelte anførselstegn, oversættes i
> udskriften. Jeg forstår ikke hvorfor Dan Storm er bange for den
> skrivemåde. Selv bruger jeg den konsekvent.

Jeg er ikke bange for den skrivemåde, jeg synes bare ikke det er god
syntaks.

> Der er dog elementer som ikke kan behandles på den måde, og så må
> man bruge punkt-notationen som han viste. Det gælder f.eks.
> definerede værdier.

Hvilket blot understreger at man lige så godt kan vende sig at bruge den
syntaks/notation.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Bertel Lund Hansen (14-11-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-11-07 20:41

Dan Storm skrev:

> Hvilket blot understreger at man lige så godt kan vende sig at bruge den
> syntaks/notation.

Det synes jeg ikke det understreger.

Hvis jeg skulle bruge en lignende - dårlig - argumentation, kunne jeg
da bare skrive at man altid bør omlægge sine værdier til simple variable
så man altid kan bruge dem direkte i dobbelte anførselstegn.

Et eksempel hvor 'min' notation vinder stærkt, er her:

   echo "<p><img src='$billede' alt='$forklaring' width='$w' height='$h'></p>";

'Din' metode giver:

   echo "<p><img src='".$billede."' alt='".$forklaring."' width='".$w."' height='".$h."'></p>";

Det er meget tungere at læse selv om man er vant til det, og det er
meget nemmere at overse f.eks. et manglende '.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Dan Storm (14-11-2007)
Kommentar
Fra : Dan Storm


Dato : 14-11-07 21:52

Bertel Lund Hansen skrev:
> Dan Storm skrev:
>
>> Hvilket blot understreger at man lige så godt kan vende sig at bruge den
>> syntaks/notation.
>
> Det synes jeg ikke det understreger.
>
> Hvis jeg skulle bruge en lignende - dårlig - argumentation, kunne jeg
> da bare skrive at man altid bør omlægge sine værdier til simple variable
> så man altid kan bruge dem direkte i dobbelte anførselstegn.

Det er jo så op til dig at anse mit argument for at være dårligt.

> Et eksempel hvor 'min' notation vinder stærkt, er her:
>
>    echo "<p><img src='$billede' alt='$forklaring' width='$w' height='$h'></p>";
>
> 'Din' metode giver:
>
>    echo "<p><img src='".$billede."' alt='".$forklaring."' width='".$w."' height='".$h."'></p>";
>
> Det er meget tungere at læse selv om man er vant til det, og det er
> meget nemmere at overse f.eks. et manglende '.
>

Her vil jeg sige at dit 'stærke' eksempel ikke imponerer mig, for det er
et holdningsspørgsmål. Din notation ser i dine øjne struktureret og
organiseret ud, i mine er det dårlig syntaks. Men som nævnt i en anden
tråd, så er det jo fint så længe det fungerer for dig.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Dan Storm (14-11-2007)
Kommentar
Fra : Dan Storm


Dato : 14-11-07 20:01

Stig Sørensen skrev:
> Jeg ved ikke hvad forskellen skulle være, jeg formoder det er noget
> sikkerhed i form af at escape html tegn?

Nej, det er mere et spørgsmål om pæn og overskuelig kode.

> <li>Antal indlæg: <? echo $antal_posts; ?></li>
> <li>Antal emner: <? echo $antal_topics; ?></li>
> <li>Antal brugere: <? echo $antal_users; ?></li>

Igen, en ting du bør være opmærksom på; eksempelvis vores server
tillader ikke short tags (<? //kode ?>) men skal altid angives med
<?php. Det er for at sikre sig at du ikke uhensigtsmæssigt starter
parsing (f.eks.i forbindelse med xml deklarering).

> Jeg bruger php.net men én ting som man ikke bare lige lærer, er
> hvordan man kan lave koden mere optimalt.

Der er ikke noget der hedder php.net. Det er et website.

> Jeg tænker, at det er overkill at lave number_format på den måde?

Ikke specielt, det kunne også gøres i en funktion, men hvis det kun skal
bruges de tre gange, så er det fint nok.

> Et andet ligende problem, hvis jeg må gå lidt off-topic er at jeg
> gerne vil escape html tegn herfra:
>
> $query_nyeste_emner = mysql_query("SELECT * FROM phpbb_topics WHERE
> forum_id!=13 AND forum_id!=15 ORDER BY topic_id DESC LIMIT 10");
> while($row = mysql_fetch_assoc($query_nyeste_emner))
> {
> echo "<a href='LINK" . $row['topic_id'] . ".html' title='" .
> $row['topic_title'] . "'>" . $row['topic_title'] . "</a><br />
> ";
> }
>
> Det giver et problem specielt i title='" . $row['topic_title'] ."' -
> for hvis titlen på det som jeg udtrækker faktisk indeholder ' så laver
> den jo rod i det hele, og min side validere ikke længere.
> Men hvordan jeg bruger htmlentities her kan jeg ikke se.
> http://dk2.php.net/manual/da/function.htmlentities.php - fortæller at
> det kan bruges således:
>
> $str = "Et 'citat' er <b>stærkt</b>";
> // Outputs: Et 'citat' er &lt;b&gt;stærkt&lt;/b&gt;
> echo htmlentities($str);
> // Outputs: Et &#039;citat&#039; er &lt;b&gt;stærkt&lt;/b&gt;
> echo htmlentities($str, ENT_QUOTES);
>
> Kan desværre ikke se hvordan jeg kan bruge det på min
> $query_nyeste_emner.

Igen, brug " i dit html istedet for '

query_nyeste_emner = mysql_query("SELECT * FROM phpbb_topics WHERE
forum_id!=13 AND forum_id!=15 ORDER BY topic_id DESC LIMIT 10");
while($row = mysql_fetch_assoc($query_nyeste_emner))
{
echo "<a href=\"LINK" . $row['topic_id'] . ".html\" title=\"" .
$row['topic_title'] . "\">" . $row['topic_title'] . "</a><br />
";
}


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Bertel Lund Hansen (14-11-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-11-07 20:44

Dan Storm skrev:

> Igen, brug " i dit html istedet for '

Det er igen kun din personlige præference. Jeg bruger konsekvent '
i HTML medmindre det er nødvendigt med " - f.eks. hvis der
optræder en apostrof i en streng.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Dan Storm (14-11-2007)
Kommentar
Fra : Dan Storm


Dato : 14-11-07 21:58

Bertel Lund Hansen skrev:
> Dan Storm skrev:
>
>> Igen, brug " i dit html istedet for '
>
> Det er igen kun din personlige præference. Jeg bruger konsekvent '
> i HTML medmindre det er nødvendigt med " - f.eks. hvis der
> optræder en apostrof i en streng.
>

Ja, det er en personlig præference.
Jeg har altid brugt dobbelt anførselstegn i min HTML og kunne aldrig
finde på at bruge apostroffer.

Som du selv skriver bruger du kun " hvis det er nødvendigt; hvilket du
så mener det bliver såfremt der opstår apostroffer i strengen. Jeg
undgår netop at tænke på sådan nogle ting med " da jeg blot kan vælge
PHPs htmlspecialchars() funktion til at konvertere mine " til &quot.

Naturligvis kan da også konvertere apostrofferne, men du har jo selv
lige sagt at der bruger du dobbelt anførselstegn om strengen istedet.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste