Het gaat om de volgende query:

<?php
$query = "SELECT code FROM codes";
$result = mysql_query($query);
if (!$result) { echo "de codes kunnen niet worden opgehaald. Druk op F5(vernieuwen)"; }
while($row = mysql_fetch_array($result)){
if(preg_match('/123/',$row['code']))
echo 'bla';
}
?>

Nu wil ik dat er maar 1 keer "bla" wordt geechod, maar omdat er een heleboel rijen met code 123 zijn, laat echod hij een heleboel bla's.

Hoe krijg ik het voor elkaar dat hij "bla" maar 1 x echod.
Allereerst, gebruik geen preg_match voor simpele zoek acties in string:
Do not use preg_match() if you only want to check if one string is contained in another string. Use strpos() or strstr() instead as they will be faster.

Om het maar 1 keer te doen moet je gewoon even bijhouden of je al verstuurd hebt. Bij het begin zet je een variabele op false. Als je iets vindt check je of het nog steeds op false staat. Zo ja, verstuur en zet die variabele op true. De tweede keer gebeurt het dan niet meer.
Hallo Enrico,

Als je het goed doet dan zorg je er voor dat je query zo in elkaar zit dat alleen dat resultaat krijgt dat je nodig hebt. dan heb je die hele while lus niet eens nodig.

je kunt bijvoorbeeld zeggen dat je maximaal 1 record uit de database wilt hebben:

SELECT code FROM codes LIMIT 1;


daarnaast kun je gewoon een logische if aan een query meegeven maar die heet dan geen if maar where

SELECT code FROM codes WHERE `code`='123' LIMIT 1;


Tenslotte kun je met like werken:

SELECT code FROM codes WHERE `code` LIKE '%123%' LIMIT 1;

En over het stoppen van de while() gewoon een break er in.
<?php
$query = "SELECT code FROM codes";
$result = mysql_query($query);
if (!$result) { echo "de codes kunnen niet worden opgehaald. Druk op F5(vernieuwen)"; }
while($row = mysql_fetch_array($result)){
if(preg_match('/123/',$row['code']))
echo 'bla';
break;
}
?>
dank allen

Reageren