[/14] voor alle mysql'ende PHP'ers

Pagina: 1
Acties:

  • Grum
  • Registratie: Juni 2001
  • Niet online
AAAAARGGGGGGGGGGHHHHHHHHH

ik word er nu echt GEK van ... alle phpers opgelet aub

een constructie als:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$result = mysql_query('...');
if($array = mysql_fetch_array($result))
{
   do
   {
       print_r($array);
   } while($array = mysql_fetch_array($result));
}
else
{
   print "nix";
}
?>

is ZOOOOOOOO ontiegelijk krom/scheef/fout/mislukt .. naast onleesbaar

doet et aub zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$result = mysql_query('...');
if(mysql_num_rows($result))
{
   while($array = mysql_fetch_array($result))
   {
       print_r($array);
   }
}
else
{
   print "nix";
}
?>

dit uit reactie op ongeveer 10 threads die ik vandaag heb gezien die het op deze kromme manier deden ...

plz leer er wat van :)

TIP (na voorzetje van Janoz)
Gebruik GEEN 'SELECT * FROM table ....' in je scripts dat staat erorm zielig en het is enorm sloom als je een grote table hebt.

Gebruik 'SELECT veld1[,veldx] FROM table ....' in plaats ervan en zoals wel duidelijk zal zijn .. haal alleen op wat je ECHT nodig hebt

PS dit geld natuurlijk niet als je aan het testen bent of het zelf in de mysql prompt invoert ofzo


[edit]
1/ jakkes .. copy/paste error, de ';' na de while in mijn stukje kan natuurlijk optyfe :) (tnx Arien :P )
2/ zielige foutjes gevonden/gesloopt |:( |:( (tnx P&W'ers ;) )
[/edit]

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Als je toch bezig bent, leg ze dan ook meteen uit hoe je een database abstractie laag kan toepassen :P

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zondag 30 september 2001 21:40 schreef Grum_ het volgende <verkort op verzoek >:)
* D2k rent binnen met kladblok in de hand

*noteert* voor in de faq :P

Doet iets met Cloud (MS/IBM)


  • Grum
  • Registratie: Juni 2001
  • Niet online
Op zondag 30 september 2001 21:46 schreef D2k het volgende:

[..]

* D2k rent binnen met kladblok in de hand

*noteert* voor in de faq :P
quote es niet 2 paginas text mee wil je >:) :+

  • Woef
  • Registratie: Juni 2000
  • Niet online
volgens mij was mijn thread de druppel die de emmer liet overlopen :P

Verwijderd

Grum_: Doet et aub zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$result = mysql_query('...');
if(mysql_num_rows($result))
{
   while(mysql_fetch_array($result));
   {
       print_r($array);
   }
}
else
{
   print "nix";
}
?>
Wat doet die punt-komma aan het eind van while (...) ? :?
Wat doe je met het array dat je krijgt van mysql_fetch_array() ? :?


Zelf doe ik het zo:
code:
1
2
3
4
5
6
7
$result = mysql_query('...');
if (!mysql_num_rows($result)) {
    print "nix";
}
while ($array = mysql_fetch_array($result)) {
    print_r($array);
}

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 15-09 23:45
Op zondag 30 september 2001 23:23 schreef Arien het volgende:
Zelf doe ik het zo:
code:
1
2
3
4
5
6
7
$result = mysql_query('...');
if (!mysql_num_rows($result)) {
    print "nix";
}
while ($array = mysql_fetch_array($result)) {
    print_r($array);
}
Nu loop je ook alle records af als je al weet dat die er nit zijn.
code:
1
2
3
4
5
6
7
8
$result = mysql_query('...');
if (!mysql_num_rows($result)) {
    print "nix";
} else {
    while ($array = mysql_fetch_array($result)) {
      print_r($array);
    }
}

Lijkt me een stuk handiger / efficienter ;)

Verwijderd

freak007: Nu loop je ook alle records af als je al weet dat die er niet zijn.
Nee, zo werkt while niet.

  • Grum
  • Registratie: Juni 2001
  • Niet online
gniffel ... ; aant einde van de while was een copy/paste fout (uit een do{}while(); loop .. vandaar de ; :PPPP

wat jij doet is toch niet efficienter Arien ?

het is toch het efficientste om een 'if' naar de 'true' kant te laten springen ? (hehe .. iig in c/c++ wel :P )

en als jij met een dusdanige constructie dingen uit de database wilt halen kan je er wel vanuit gaan dat er wat in staat anders had je et net zo goed NIET kunnen doen ;)

[edit]
ps Arien .. jij bent toch een perl-fanaat ? :P
do you like obfrusted code ? >:)
[topic=221760/8/25] (post nummer 6 van boven >:) )

  • pimlie
  • Registratie: November 2000
  • Laatst online: 19-09 19:50
Weet je waar ik gek van word? Van die mensen die de { en } bij elk statement op een nieuwe line zetten. Dat is pas overbodig, doe het toch asjeblief gewoon zo:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$result = mysql_query('...');
if(mysql_num_rows($result)) {   
  while(mysql_fetch_array($result))   {       
    print_r($array);   
  }
}else{
  print "nix";
}
?>

Verwijderd

Grum_: Aan het einde van de while was een copy/paste fout (uit een do{} while(); loop .. vandaar de ; :PPPP
Je hebt nog een probleempje met je mysql_fetch_array() ... (Je wijst het resultaat nergens aan toe.)
Wat jij doet is toch niet efficienter Arien?
Nee, dat klopt. Je doet een vergelijking meer in (zeer waarschijnlijk) een klein percentage van de gevallen. (In ruil voor minder geneste code die je al snel krijgt in PHP bij gebrek aan betere oplossingen.)
Jij bent toch een perl-fanaat ? :P Do you like obfrusted code ? >:)
Hij is leuk. :7
pimlie: Weet je waar ik gek van word? Van die mensen die de { en } bij elk statement op een nieuwe line zetten. Dat is pas overbodig, doe het toch asjeblief gewoon zo: [code]
Dat heet programmeerstijl en dat heeft met voorkeuren enzo te maken.

  • pimlie
  • Registratie: November 2000
  • Laatst online: 19-09 19:50
Dat heet programmeerstijl en dat heeft met voorkeuren enzo te maken.
En dat is dus precies wat ook het gebruik van de do..while() loop is. Newbiez worden vaak door verwezen naar de manual en wat schetst de verbazing, daar staat juist de do..while() loop uitgelegd!hier dus?

Ben ik nou de enige die dit een beetje een nutteloos topic vind?

Verwijderd

pimlie: Newbiez worden vaak door verwezen naar de manual en wat schetst de verbazing, daar staat juist de do..while() loop uitgelegd! Hier dus.
Ja, het is een beetje een open deur intrappen. :) (Het gaat trouwens nu ondertussen om een while() { ... } loop.)
Ben ik nou de enige die dit een beetje een nutteloos topic vind?
Ach... er zijn nuttigere geweest. OTOH, mensen blijven de meest brakke code produceren dus ik kan me voorstellen dat anderen daar wat aan willen doen... (Al zal het zo goed als geen effect hebben, maar dat is weer een ander verhaal.)

  • Lurge
  • Registratie: Maart 2000
  • Niet online

Lurge

ActueleWind

PHP:
1
2
3
<?
while(mysql_fetch_array($result))
?>

Moet naar mijns inziens worden:
PHP:
1
2
3
<?
while($array = mysql_fetch_array($result))
?>

:)

ActueleWind


Verwijderd

Dat staat er nu drie keer dus nou moet het toch gaan opvallen. :D

  • Grum
  • Registratie: Juni 2001
  • Niet online
:'(

meer kan ik der niet over zegge :P

ow .. mja .. |:(

poog je et goed te doen doe je et zelf fout :P

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13:51

Janoz

Moderator Devschuur®

!litemod

Trouwens .. Kan er ook ergens neergezet worden dat SELECT * niet voor mag komen in een script? Dat gebruik je alleen als je lui bent in de console, of als je niet weet welke kolomen er in de db staan....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Grum
  • Registratie: Juni 2001
  • Niet online
done

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op zondag 30 september 2001 21:40 schreef Grum_ het volgende:
AAAAARGGGGGGGGGGHHHHHHHHH

ik word er nu echt GEK van ... alle phpers opgelet aub

een constructie als:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$result = mysql_query('...');
if($array = mysql_fetch_array($result))
{
   do
   {
       print_r($array);
   } while($array = mysql_fetch_array($result));
}
else
{
   print "nix";
}
?>

is ZOOOOOOOO ontiegelijk krom/scheef/fout/mislukt .. naast onleesbaar
Toch maar eens een reply van mij, aangezien iedereen het als zoete koek slikt:

De methode is niet ontiegelijk krom, niet scheef, niet fout en het is ook niet mislukt.

Wat het wel is hangt af van je doelstelling. Betekent dus dat de mensen die jij het heb zien gebruiken het krom, scheef, fout en mislukt gebruiken. Betekent dus niet dat de Methode fout is.

Programmeer technisch wordt het verschillend verwerkt en kan je er dus verschillende dingen mee doen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dirkpostma
  • Registratie: Juni 2001
  • Laatst online: 10-05 16:53
Op maandag 01 oktober 2001 07:01 schreef pimlie het volgende:
Weet je waar ik gek van word? Van die mensen die de { en } bij elk statement op een nieuwe line zetten. Dat is pas overbodig, doe het toch asjeblief gewoon zo:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$result = mysql_query('...');
if(mysql_num_rows($result)) {   
  while(mysql_fetch_array($result))   {       
    print_r($array);   
  }
}else{
  print "nix";
}
?>
Is volgens mij een kwestie van smaak... Ik zelf doe wel altijd
PHP:
1
2
3
4
5
6
<?
  if (een of ander iets)
  {
    doe iets
  };
?>

maar een klein vraagje:
waarom niet:
PHP:
1
2
3
4
5
6
7
8
<?
$result = mysql_query('...');
if(mysql_num_rows($result)) {   
  while(mysql_fetch_array($result)) {       
    print_r($array); }}
else{
  print "nix"; }
?>

Ben je nog minder regels kwijt...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op maandag 01 oktober 2001 07:01 schreef pimlie het volgende:
Weet je waar ik gek van word? Van die mensen die de { en } bij elk statement op een nieuwe line zetten. Dat is pas overbodig, doe het toch asjeblief gewoon zo:
hier ga ik mezelf ff quoten uit de faq
Let op niet iedereen is het eens met het bovenstaande.
Zie ook hier.
Die discussie is geweest. Consequentie is belangrijker dan een de keuze maken tussen die paar manieren. Zie ook hier.
Ik pretendeer niet gelijk te hebben maar weet wel uit ervaring, dat hier vaak fouten in ontstaan.
dus je hangt of het 1 aan of het ander

Doet iets met Cloud (MS/IBM)

Pagina: 1