webForumDet fria alternativet

Returnera en array

PHP

9 svar · 914 visningar · startad av Jester73

Medlem sedan mars 2012121 inlägg
Frågan#1

Hej

Antagligen har jag bara glömt ett komma någonstans men here goes!

Varför returnerar följande kod inte en array?

function rensaFormular(){
	while (list($key, $val)=each($_POST)){
		if (!strpos($key, "exc_",0)==0) {
   			$cleanvalue[$key]=$val;
		}  
	}
	return $cleanvalue;
}

Jag har en annan funktion som däremot returnerar en array utan problem, vad är skillnaden?

//Månadsarray
function manaderNum(){
	$mandader[1]="Januari";
	$mandader[2]="Februari";
	$mandader[3]="Mars";
	$mandader[4]="April";
	$mandader[5]="Maj";
	$mandader[6]="Juni";
	$mandader[7]="Juli";
	$mandader[8]="Augusti";
	$mandader[9]="September";
	$mandader[10]="Oktober";
	$mandader[11]="Novmeber";
	$mandader[12]="December";
	
	return $mandader;
}
Medlem sedan juni 2009920 inlägg
#2

skriv ==each istället för =each

Medlem sedan mars 2012121 inlägg
#3

Funkar inte alls

Medlem sedan mars 2012121 inlägg
#4

Kan tillägga att ovan funktion anropas från följande funktion

function buildSQLUpdate($tabell, $urval, $addCol,$addValue){
	$temp=rensaFormular($_POST);
	print_r($temp);
	//array_pop($_POST);
	//array_shift($_POST);
	//while (list($key, $val)=each($temp)){
	//	$tmpvalues=$tmpvalues." ".$key."='".$val."', ";
	//}
	$tmpvalues=trim($tmpvalues);
	$tmpvalues=substr($tmpvalues,0,strlen($tmpvalues)-1);
	$sqlQ="UPDATE $tabell SET $tmpvalues $urval";
	return $sqlQ;
Medlem sedan feb. 20005 891 inlägg
#5

Eftersom du kör en if-sats så är det fullt möjligt att du aldrig skapar $cleanvalue som array.

Medlem sedan mars 2012121 inlägg
#6

Ok men hur skall jag lösa problemet.
Jag provade att sätta upp en array utfrån en sträng men då hade den inte ens läst in $_POST till funktionen?

Det går väl att anropa $_POST direkt i den funktionen?

Medlem sedan feb. 20005 891 inlägg
#7

Jester73 skrev:

Ok men hur skall jag lösa problemet.
Jag provade att sätta upp en array utfrån en sträng men då hade den inte ens läst in $_POST till funktionen?

Det går väl att anropa $_POST direkt i den funktionen?

Vad jag menade i första hand var att kontrollera if-satsen, för att se vad som händer.

Men det är också en ohållbar lösning att inte tänka på möjligheten att inga värden validerar, och vad som händer när arrayen inte returnerar nånting.

Medlem sedan juli 2004144 inlägg
#8
function rensaFormular(){
 $cleanvalue = false;
foreach($_POST as $key => $value){
	print "<br> loopar post med värdet $value";
  if (!strpos($key, "exc_",0)==0) {
  	print "<br>ifsats sann";
  	$cleanvalue[$key]=$val;
  }
  return $cleanvalue;
}
}

kör foreach istället och felsök

eller kör extract på post ;)

Medlem sedan mars 2012121 inlägg
#9

Jo, jag har felsökt på indatat i $_POST också och när jag började denna post så hade jag en array i funktionen rensaFormular.

Men det verkar fungera lite si och så vilket i sig är underligt....får nog börja om lite.

Medlem sedan mars 2012121 inlägg
#10

Har exprimenterat en hel del och det verkar som detta fungerar.

function rensaFormular(){
	foreach($_POST as $key=>$value){
		if (substr_count($key, "exc_",0)==0) {
   			$cvalues[$key]=$value;
		}  
	}
	return $cvalues;
}
255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)