Autor Zpráva
Paul
Profil *
Ahoj,
potřeboval bych pomoci s problémem typu vkládání řetězce do php kódu.

Dejme tomu že mám v sql uložen ve sloupci vzoreček (100/203)*($data[$i]-459)
tento bude z databáze načten do cyklu, jenže tento vzorec je jako řetězec a nevím jak ho mám převést na php kod, nic se nedaří, už ani nevím co mám googlit.

Předem děkuji za rady

vyřez kodem:

$data= array(1,2,3,4,5);

$read=mysql_query("SELECT * FROM vzorce WHERE nazev LIKE 'TEP'");

$hodnoty=mysql_fetch_array ($read);

for($i=0;$i<=5;$i++)
echo $hodnoty['vzorec'];
Kajman_
Profil *
eval
Tori
Profil
Paul:
Když už to použijete, tak volejte eval uvnitř funkce, ať nedělá paseku mezi globálními proměnnými. Šlo by použít třeba něco takového (vzoreček dostane jako 1.param., jako další parametry předáte hodnoty, které ve vzorečku voláte jako $arg1 až $argn):
/* vzorecek( $vzorec, $arg1 [, $arg2, $arg3, ...] ) */
function vzorecek()	{
	if (func_num_args() < 2)	{
		trigger_error("Funkci nebyla předána hodnota k dosazení do vzorečku, možná ani vzoreček.", E_USER_NOTICE);
		return null;
	}
	$args = func_get_args();
	/* hodnoty do vypoctu */
	foreach($args as $i=>$val)	{
		${"arg$i"} = $val;
	}
	/* vzorecek */
	$vzorec = trim($arg0, ' ;') . ';';
	if (strpos($vzorec, 'return') !== 0)	{
		$vzorec = 'return '.$vzorec;
	}
	unset($args, $arg0);
	/* vypocet */
	$vysledek = eval($vzorec);
	if ($vysledek === false)	{
		trigger_error("Chybny vzorec, vygeneroval chybu [$php_errormsg]", E_USER_WARNING);
		return null;
	} else {
		return $vysledek;
	}
}

echo '<br> vysledek = '.vzorecek('$arg1 + $arg2', 12, 34);
Paul
Profil *
No klobouk dolů, díky moc, to je paráda, tak jsem to potřeboval, mockrát díky a hlavně za rychlost.
Bertram
Profil
Paul:
Ahoj,
pokud ti jde jen o dosazení vzorečku do cyklu, který prochází argumenty, které chceš do vzorce vkládat (vždy jeden - jednorozměrné pole argumentů), mělo by být dostačující něco takového:
$vzorec = '$arg[$i]*2';
$args = array(99,25,18,25,258,96,5);

echo "textová podoba vzorce: ".$vzorec."<br />";

foreach($args as $i=>$arg){
    echo "<br />předaný argument: ".$arg;
    echo "<br />výsledek: ";
    $dosazeni = str_replace('$arg[$i]', $arg, $vzorec);
    eval("echo $dosazeni;");
    echo "<br />";
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0