HTML interesse |
|
Hoi, ik heb de volgende code:
<?php
// Verbinding met de database
include_once('db.php');
// De string
$string = '||headlines|1|10||';
// Nummer één zonder functie
$sql = ereg_replace('\|\|(.*)\|(.*)\|(.*)\|\|',"SELECT * FROM nieuws WHERE cat = \\2 LIMIT \\3",$string);
$res = mysql_query($sql) or die(mysql_error());
$aant = mysql_num_rows($res);
echo $aant;
// De sql query laten zien
echo '<p>'.$sql.'</p>'; // Uitkomst: SELECT * FROM nieuws WHERE cat = 1 LIMIT 10
// De functie
function show_headlines($cat,$aant){
$sql = "SELECT * FROM nieuws WHERE cat = '".$cat."' LIMIT ".$aant;
$res = mysql_query($sql);
$aant = mysql_num_rows($res);
return($sql);
}
// Het vervangen
$function = ereg_replace('\|\|(.*)\|(.*)\|(.*)\|\|',show_headlines('\\2','\\3'),$string);
// De sql query laten zien
echo '<p>'.$function.'</p>'; // Uitkomst: SELECT * FROM nieuws WHERE cat = 1 LIMIT 10
?>
<?php // Verbinding met de database include_once('db.php'); // De string $string = '||headlines|1|10||'; // Nummer één zonder functie $sql = ereg_replace('\|\|(.*)\|(.*)\|(.*)\|\|',"SELECT * FROM nieuws WHERE cat = \\2 LIMIT \\3",$string); // De sql query laten zien echo '<p>'.$sql.'</p>'; // Uitkomst: SELECT * FROM nieuws WHERE cat = 1 LIMIT 10 // De functie function show_headlines($cat,$aant){ $sql = "SELECT * FROM nieuws WHERE cat = '".$cat."' LIMIT ".$aant; return($sql); } // Het vervangen $function = ereg_replace('\|\|(.*)\|(.*)\|(.*)\|\|',show_headlines ('\\2','\\3'),$string); // De sql query laten zien echo '<p>'.$function.'</p>'; // Uitkomst: SELECT * FROM nieuws WHERE cat = 1 LIMIT 10 ?>
Zoals ik al in het script heb vermeld zijn de bijde uitkomsten het zelfde van de sql.
Echter als ik de slq uitvoor en het aantal velden ga tellen met mysql_num_rows() dan zegt hij bij de bovenste wel een getal en bij de onderste zegt hij dit (even met mysql_erroro() ): Er is iets fout in de gebruikte syntax bij '\3' in regel 1
De functie werkt echter wel. daar licht het niet aan. Het gaat volgens mij fout wat die ereg_replace er in doet. Ik vind het alleen vreemd waarom hij het bij de eerst query wel doet en bij de functie niet. En als ik de sql echo dat hij gewoon het zelfde echo...
Hoe komt dit??
Groeten,
Arian
Edit: Ik heb het al. Met
<?php
$function = preg_replace('#\|\|(.*)\|(.*)\|(.*)\|\|#e',"show_headlines('\\2','\\3')",$string);
?>
|