Autor Zpráva
Petr Havel
Profil
Potřeboval bych pomocí funkcí php ovlivnit proměnné, které jsou mimo funkce.
Abych nemusel dělat toto:

    $promenna = funkce(param_1, param_2);


ale moch sem přímo ve funkci nějakým způsobem změnit proměnnou $promenna , která je mimo funkci

Nevíte jak na to?
Dík
nightfish
Profil
Jde to, říká se tomu globální proměnná, a ve většině případů to není dobrý nápad.
Joker
Profil
Petr Havel:
Předejte parametr odkazem (referencí):
funkce(&$promenna);
Petr Havel
Profil
právě že podle knížky by se globální proměnná měla pouze dostat do funkce, ale ven ne - ani mi to tak nefungovalo. A parametr odkazem jsem zkoušel taky, a taky nefungoval - ale možná je chyba u mě.
Tak radši uvedu veškerý kód - pomocí funkce potřebuji aktualizovat údaje v databázi a pokud se něco nepovede, má se $pocet_chyb zvýšit o 1.
no a potom je další funkce, která se spustí, pokud je $pocet_chyb > 0

$pocet_chyb = 0;
function update_doprava($doprava, $cena, $jmeno, &$pocet_chyb){
	if($doprava == "1"){$doprava = 1;}else{$doprava = 0;}
	if($cena == ""){$cena = 0;}
	$update = mysql_query("UPDATE nastaveni_eshopu SET hodnota='$doprava', cislo=$cena WHERE jmeno='$jmeno'");
	if(!$update OR mysql_affected_rows()!=1){$pocet_chyb =+ 1;}
	} // funkce pro aktualizaci údajů o dopravě a ceně
	
	
		update_doprava($_POST[doprava_osob_odber], $_POST[cena_osob_odber], doprava_osob_odber, $pocet_chyb);
	update_doprava($_POST[doprava_osob_ucet], $_POST[cena_osob_ucet], doprava_osob_ucet, $pocet_chyb);

	if($pocet_chyb < 0){
    $hlaska = hlaska("Nepovedlo se aktualizovat $pocet_chyb řádků nastavení!", 2);
    }else{
    $hlaska = hlaska("Změna v nastavení byla provedena", 1);
    }	



vše mi funguje, jen né ta proměnná $pocet_chyb
Alphard
Profil
Petr Havel:
$pocet_chyb =+ 1;
Má být += 1. Ale můžete to zkrátit na $pocet_chyb++;

if($pocet_chyb < 0){
Máte to obráceně.
Petr Havel
Profil
tak to byl takovej menší zkrat :-) dík, už to běží

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