[php] uit while lus bepaalde woord vinden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het lukt me steeds niet om uit bv. een while lus (dus weergeven van query resultaten), zoals als:
PHP:
1
2
3
4
5
6
7
8
<?
$query = "SELECT * FROM games";
$select = mysql_query($query);

while($obj = mysql_fetch_object($select)){
echo "$obj->naam ofzo maakt niet uit<br>";
}
?>

nu naar mijn mening, kun je het tot nu toe wel snappen.. maar wat ik wil dat die while lus wil weten hoeveel games met de naam DVD zijn... dus zoiets als dit:
PHP:
1
2
3
4
5
6
7
<?
if(mysql_fetch_object($select)) LIKE '%DVD%'){
echo "er is een dvd spel erin";
} else {
echo "nope geen dvd game";
}
?>

maar dit bestaat natuurlijk niet 8)7... weet iemand mss een ander manier om UIT de while lus een bepaald woord zoals DVD aantal games uit te vinden, dus results...?

alvast bedankt!

Acties:
  • 0 Henk 'm!

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

waarom geef je in je query niet gewoon op dat hij alleen dvd's uit je db moet vissen?

[ Voor 9% gewijzigd door MeIsTwisted op 20-03-2004 15:06 ]

Multimonitor is relax :P


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja oke, ik zal even wat duidelijker zijn.. bij mij is de bedoeling om het uit de zoeken te komen, in het adres staat er bij voorbeeld index.php?actie=zoeken&term=far+cry..
far cry is bv een dvd game, en moet daaruit vinden.. mijn script is zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$query = "SELECT * FROM games WHERE naam LIKE '%".$_GET['term']."%'";
$select = mysql_query($query); 
$result = mysql_num_rows($select); 

  $aantalcd = $result - $result3;

  //aantal games in database
  if($result != 1){

    if($result3 != 1){

    echo "Er zijn in totaal $result games gevonden, waaronder $result3 DVD-games en $aantalcd CD-games!";

    } else {

    echo "Er zijn in totaal $result games gevonden, waaronder $result3 DVD-game en $aantalcd CD-games!";

    }

  } else {

    if($result3 != 1){

    echo "Er is in totaal $result game gevonden, waaronder $result3 DVD-games en $aantalcd CD-game!";

    } else {

    echo "Er is in totaal $result game gevonden, waaronder $result3 DVD-game en $aantalcd CD-game!";

    }

  }

maar $result3 moet nog aangemaakt worden, maar ik zou niet weten hoe..
dus in principe zou $_GET['term'] moeten laten zoeken, stel er staat far, dan zoekt ie en vindt ie Far Cry (DVD), dan is het dus een dvd game, dus moet het op 1 springen.. of far cry zoeken kan ook, of 'dvd' ook mogelijk..

[ Voor 14% gewijzigd door Verwijderd op 20-03-2004 15:08 ]


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
LIKE is een MySQL-statement, niet PHP. Doe het ofwel direct in je query met LIKE, of in PHP met regexps of strstr, o.i.d.

En zet slashes om je $_GET['term'] heen, anders kunnen mensen je database vern*ken:
$query = "SELECT * FROM games WHERE naam LIKE '%".addslashes($_GET['term'])."%'";

[ Voor 42% gewijzigd door sjroorda op 20-03-2004 15:09 . Reden: Opm. over code ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dat weet ik ook heus wel, maar het is een dom voorbeeld van.. ik zou willen de DVD uit de aantal results van $result vinden, dit gaat via $select.. allen dvd... dus kan het ook zijn zo
PHP:
1
2
if($select LIKE '%DVD%'){
}

maar dat is dus natuurlij kniet mogelijk

Acties:
  • 0 Henk 'm!

Verwijderd

Een 2e query maken:
SELECT * FROM games WHERE name LIKE '%".addslashes( $_GET['term'] )."%' AND type = 'DVD'

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dat kan! even proberen

edit: hum het probeem is dat de DVD in de naam zit.. dus Far Cry (DVD)..

[ Voor 64% gewijzigd door Verwijderd op 20-03-2004 15:12 ]


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Verwijderd schreef op 20 maart 2004 @ 15:07:
ja oke, ik zal even wat duidelijker zijn.. bij mij is de bedoeling om het uit de zoeken te komen, in het adres staat er bij voorbeeld index.php?actie=zoeken&term=far+cry..
far cry is bv een dvd game, en moet daaruit vinden.. mijn script is zo:
PHP:
1
code...

maar $result3 moet nog aangemaakt worden, maar ik zou niet weten hoe..
dus in principe zou $_GET['term'] moeten laten zoeken, stel er staat far, dan zoekt ie en vindt ie Far Cry (DVD), dan is het dus een dvd game, dus moet het op 1 springen.. of far cry zoeken kan ook, of 'dvd' ook mogelijk..
Dat kan ook direct in je query. Als het je alleen om het aantal gaat, kan je dit in 1 query bakken: iets als

SELECT COUNT(id) FROM games WHERE naam LIKE '%".$_GET['term']."%' GROUP BY type

(en dan is type DVD of CD denk ik, je moet dus in je DB bijhouden welk type welk spel is)

Ik heb de query even snel uit mijn duim gezogen, je moet zelf even kijken of-ie helemaal goed is.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 20 maart 2004 @ 15:11:
dat kan! even proberen

edit: hum het probeem is dat de DVD in de naam zit.. dus Far Cry (DVD)..
zie boven..

moet ik dan een extra dinges in het tabel maken zoals van type?

[ Voor 14% gewijzigd door Verwijderd op 20-03-2004 15:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het is al opgelost! close topic

ik heb bij mysql gewoon type toegevoegd bij tabel games, en dan bij far cry, dvd bij type gedaan en het werkt bij query AND type = 'DVD' , 't werkt bedankt!
Pagina: 1