roger helgesen wrote:
Hi!
I'v got 2 classes. CLASS1 makes a array of instanses of class2.
I need thees classes 2 live for the duration of the session so I
serialize class1 to a _session var.
I submit the form and the page is reloaded. I unserialize class1 back 2
same instanse var.
class1 I works. The instanses of class2 almost work.
I can read all data from the class/object, I can run functions off
class2 BUT I can't change the data in objects og class2.
Is this at all possible.
ps.I do not serialize/unserialize object of CLASS2, these are instanses
of CLASS1.
regard
Roger Helgesen
<?PHP
CLASS kontoplan{
var $kontoer=array();
function kontoplan(){
$SQL="SELECT kontonummer,navn,paslag FROM kontoer ORDER BY kontonummer";
$SQL=mysql_query($SQL);
$teller=1;
while($konto=mysql_fetch_array($SQL)){
// echo "<b>vi er nå $teller gang<br>\n";
// echo
"array(\"kontonummer\"=>$konto[0],\"navn\"=>$konto[1],\"paslag\"=>$konto[2])<br>\n";
$this->kontoer[$konto[0]]=array("kontonummer"=>$konto[0],"navn"=>$konto[1],"paslag"=>$konto[2]);
// $teller++;
}
// echo "------------ Kontoplan(".count($this->kontoer).")
-------------\n";
// print_r($this->kontoer);
// foreach($this->kontoer as $konto=>$rekke){
// echo "$konto(".count($this->kontoer).")<br>\n";
// echo "0=".$rekke['kontonummer']." 1=".$rekke['navn']."
2=".$rekke['paslag']."<br>\n";
// }
}
}
CLASS sammendrag{
var $prosjektnummer;
var $prosjektnavn;
var $kalk_id;
var $hovedposter=array();
var $subposter=array();
var $vinduer=array();
var $dorer=array();
var $porter=array();
var $antall=0;
var $a=0;
var $kplan;
function sammendrag($nummer,$navn){
// echo "<h2>I sammandrag</h2>\n";
$this->prosjektnummer=$nummer;
$this->prosjektnavn=sql_return("SELECT ProsjektNavn
FROM prosjektnr where ProsjektNummer=$nummer");
$this->kplan=&new kontoplan();
$this->kalk_id=sql_return("SELECT id FROM kalk_opl WHERE
prosjekt='$this->prosjektnummer'");
$SQL="SELECT left(konto,4) AS hkonto,ROUND(SUM(s4))
FROM kalkyler WHERE id_kalk='$this->kalk_id' GROUP BY hkonto";
// echo "sql=$SQL<br>\n";
$knavn="SELECT kontonummer,navn FROM kontoer WHERE
right(kontonummer,2)=00";
$knavn=mysql_query($knavn);
$kn=array();
while($k=mysql_fetch_array($knavn)){
// $k[0]=$k[0].'00';
$kn[$k[0]]=$k[1];
}
mysql_free_result($knavn);
$SQL=mysql_query($SQL);
$tpost=array();
$npost=array();
while($hkonto=mysql_fetch_array($SQL)){
$hkonto[0]=$hkonto[0].'00';
// echo "hkonto0[$hkonto[0]], knr=$knr<br>\n";
// array_unshift($hkonto,$kn[$hkonto[0]]);
$tpost[]=array($hkonto[0],$kn[$hkonto[0]],$hkonto[1]);
}
// Fyller pa med underentrepenorer
$SQL="SELECT kontonummer,navn FROM kontoer WHERE (kontonummer >=450000
AND kontonummer < 451000) AND right(kontonummer,2)='00'";
$SQL=mysql_query($SQL);
while($hkonto=mysql_fetch_array($SQL)){
$hkonto[2]=0;
array_push($tpost,$hkonto);
}
$this->fyll_poster($tpost);
$this->fyll_vinduer();
$this->lag_hkontoer();
}
function fyll_poster($rekke){
while($post=current($rekke)){
$this->ny_hovedpost($post);
next($rekke);
}
}
function ny_hovedpost($hovedpost){
// echo "Sette
hovedposter[".$hovedpost[0]."]=$hovedpost<br>\n";
$this->hovedposter[$hovedpost[0]]=$hovedpost;
$this->antall++;
}
function hpostnavn($post){
//echo "hpostnavn=".$this->hovedposter[$post][1]."\n";
return $this->hovedposter[$post][1];
}
function lag_hkontoer(){
foreach($this->hovedposter AS $hkonto=>$verd){
$hn='t'.$hkonto;
$hnnavn=$hn;
$hn=new gruppe($hkonto,$this,$this->kplan);
$this->subposter[$hnnavn]=$hn;
// $hn->skriv($this,$hkonto);
}
}
function skriv_kontoer(){
// Skrive ut alle konto sider
foreach($this->subposter AS $konto){
$konto->skriv($this);
}
}
function fyll_sub_konto($pv){
foreach($this->subposter AS $konto=>$kontoen){
//echo "$konto($kontoen->navn) = ".get_class($kontoen) ."<br>\n";
$kontoen->fyll_fra_post($pv);
// $kontoen->endret='jadda';
//echo "$kontoen->navn er obj(".is_object($kontoen).")er
endre($kontoen->endret)<br>\n";
}
$d=$this->subposter['t431100'];
echo $d->navn. "(".$d->hkonto.")
best=".$d->poster['431112']['bestilt']."<br>\n";
}
// function ut_hkonto(){
function fyll_vinduer(){
$SQL="SELECT vdp_std.navn,v.stk,v.bredde,v.hoyde FROM vdp v left join
vdp_std ON v.id_std=vdp_std.id where v.id_kalk='$this->kalk_id'and
(v.id_std=5 OR v.id_std=6 OR v.id_std=1 OR v.id_std=2) AND v.stk<>0";
// echo "Vinduer SQL=$SQL <br>\n";
$SQL=mysql_query($SQL);
while($post=mysql_fetch_array($SQL)){
// echo "this->vinduer[]=$post<br>\n";
$this->vinduer[]=$post;
}
}
}
CLASS sammendragHTML extends sammendrag{
// var $hovedposter=parent->hovedposter;
var $sider=3;
var $ofsett=5;
function post_out(){
echo "<DIV onClick=\"sv(klasse,'s1')\" CLASS=\"konto\">Totaler</DIV>\n";
echo "<DIV CLASS=\"sider1\" id=\"s1\" STYLE=\"z-index:30\">\n";
echo "<TABLE CLASS=\"hovedposter\">\n";
echo "<TR>\n
<TH style=\"width:50px\" >nr
<TH width=\"250mm\">Hovedpost
<TH width=\"70mm\">Budsjett
<TH width=\"70mm\">Bestilt
<TH width=\"70mm\">Avik
<TH width=\"70mm\">Fakturert
<TH width=\"*\">Kommentar\n";
$farge="#c8c8c8";
foreach($this->hovedposter AS $post=>$rekke){
$farge=farge($farge);
echo "<TR STYLE=\"background-color:$farge\">\n";
echo "
<TD CLASS=\"hovedposter\">$post
<TD CLASS=\"hovedposter\">$rekke[1]\n";
if($rekke[0]=='431411'){
echo "print vinduer\n";
$this->vinduer_out();
}
echo "
<TD CLASS=\"hovedposter\">$rekke[2]
<TD CLASS=\"hovedposter\"><input id=\"hp_bestilt_$post\"
value=\"0\" size=\"5\" readonly>
<TD CLASS=\"hovedposter\"><input id=\"hp_avvik_$post\"
value=\"0\" size=\"5\" readonly>
<TD CLASS=\"hovedposter\"><input id=\"hp_faktura_$post\"
value=\"0\" size=\"5\" readonly>
<TD CLASS=\"hovedposter\">ingen\n";
}
echo "</TABLE>\n</DIV>\n";
}
function vinduer_out(){
echo "<br>\n";
foreach($this->vinduer AS $post){
// $farge=farge($farge);
echo "<span style=\"color:".$_SESSION['farger']['nedtonet']."\">
$post[0] = $post[1]stk a
$post[2]<sub>m</sub>x$post[3]<sub>m</sub><br></span>\n";
}
}
function sett_marginer($sider=3,$offsett=5){
$this->sider=$sider;
$this->offsett=$offsett;
}
}
CLASS gruppe{
var $hkonto;
var $navn;
var $poster=array();
var $antall=0;
var $sum=array('budsjett'=>0,'bestilt'=>0,'avvik'=>0,'faktura'=>0);
var $sa;
var $endret="nei";
// var $kontoplan;
function gruppe($hk,&$sd,&$kplan){
$this->hkonto=$hk;
$this->navn=$sd->hpostnavn($hk);
// $this->sa=$sd->navn;
// $this->kontoplan=new kontoplan();
// $SQL="SELECT ka.konto,ka.navn2,ka.s4,ko.paslag FROM kalkyler
ka,kontoer ko WHERE (ka.id_kalk='$sd->kalk_id' AND
left(ka.konto,4)='".substr($this->hkonto,0,4)."') AND
(ka.konto=ko.kontonummer)";
$SQL="SELECT ka.konto,ka.navn2,ka.s4 AS
budsjett,sa.paslag,sa.avvik,sa.bestilt,sa.faktura,sa.tillegg FROM
kalkyler ka,kontoer ko
LEFT JOIN sammendrag sa ON ka.konto=sa.konto AND ka.id_kalk=sa.kalk_id
WHERE (ka.id_kalk='$sd->kalk_id' AND
left(ka.konto,4)='".substr($this->hkonto,0,4)."')AND
(ka.konto=ko.kontonummer) AND ka.vis='on'";
// echo "gruppeSQL=$SQL<br>\n";
$SQL=mysql_query($SQL);
while($t=mysql_fetch_array($SQL)){
// echo "paslag er ".$t['paslag']."<br>\n";
$t=$this->kontroll($t,$kplan);
// echo "paslag etter er ".$t['paslag']."<br>\n";
$this->poster[$t[0]]=$t;
}
$this->antall=count($this->poster);
$this->sett_sum();
}
function kontroll($rekke,&$kplan){
// Sett pa standard paslag om ikke egnet paslag
if(empty($rekke['paslag'])){
$rekke['paslag']=$kplan->kontoer[$rekke['konto']]['paslag'];
$rekke['bestilt']=$rekke['bestilt']+1;
}
return $rekke;
}
function sett_sum(){
foreach($this->poster AS $k=>$poster){
$this->sum['budsjett']+=$poster['budsjett'];
$this->sum['bestilt']+=$poster['bestilt'];
$this->sum['avvik']+=$poster['avvik'];
$this->sum['faktura']+=$poster['faktura'];
}
//$this-sum=array_sum($this->poster[
// print_r($this->sum);
}
function fyll_fra_post($post_vars){
echo "(gruppe)class = ".get_class($this) ."<br>\n";
$teller=0;
foreach($this->poster AS $post=>$verd){
// echo "hpost($post)<br>\n";
// foreach($verdier AS $navn=>$verd){
$best="bestilt_".$post;
$avik="avvik_".$post;
$fakt="faktura_".$post;
// $best="bestilt_".$post;
echo "----for----<br>($teller)navn(".$this->poster[$post]['konto'].")=
$post
budsjett(".$this->poster[$post]['budsjett'].")
$post
bestilt(".$this->poster[$post]['bestilt'].")(".$post_vars[$best].")
$post
avvik(".$this->poster[$post]['avvik'].")(".$post_vars[$avik].")
endret(".$this->endret.")
-----------<br>\n";
$this->poster[$post]['bestilt']=$post_vars[$best];
$this->poster[$post]['avvik']=$post_vars[$avik];
$this->poster[$post]['faktura']=$post_vars[$fakt];
// echo "Setter
this->poster[$post]['bestilt']=$post_vars[$form_navn]<br>\n";
/* echo
"-----etter-----<br>($teller)navn(".$this->poster[$post]['konto'].")=
budsjett(".$this->poster[$post]['budsjett'].")
bestilt(".$this->poster[$post]['bestilt'].")
avvik(".$this->poster[$post]['avvik'].")
endret(".$this->endret.")
<br>\n";*/
$teller++;
// }
}
$this->endret='ja';
$this->sett_sum();
//echo "Hei jeg heter $this->navn, og har konto $this->hkonto<br>\n";
}
function skriv(&$p){
echo "<DIV onClick=\"sv(klasse,'$this->navn')\" CLASS=\"konto\"
STYLE=\"margin-top:".$p->sider*$p->ofsett ."mm\">$this->navn</DIV>\n";
echo "<DIV CLASS=\"sider\" name=\"$this->navn\" id=\"$this->navn\"
STYLE=\"z-index:".$p->sider.";\">\n";
// echo "<img onClick=\"window.print()\"
src=\"iconer/print/inkjet-64-gnome2-small-networked.png\">\n";
// echo "<DIV onClick=\"sv(klasse,'$this->navn')\"
CLASS=\"konto\" STYLE=\"margin-top:".$p->sider*$p->ofsett
."mm\">$this->navn</DIV>\n";
echo
"<center><h2>$this->navn($this->hkonto)($this->endret)</h2></center>\n";
echo "<TABLE CLASS=\"$this->navn.tt\">\n";
$pnam="paslag".$this->hkonto;
echo "<col id=\"nr\" width=\"50px\">
<col id=\"Konto\" width=\"250px\">
<col id=\"$pnam\" CLASS=\"paslagcol\" width=\"70px\">
<COL id=\"budsjett\" width=\"70px\">
<col id=\"Bestilt\" width=\"70px\">
<col id=\"Avik\" width=\"70px\">
<col id=\"Faktura\" width=\"70px\">
<col id=\"kommentar\" width=\"*\">\n";
echo "<TR><TH>nr
<TH width=\"350px\" onClick=\"paslag('$pnam','$this->hkonto')\">Konto
<TH>Påslag
<TH>Budsjett
<TH>Bestilt
<TH>Avik
<TH>Faktura
<TH>Kommentar\n";
$jsrekke="";
$farge='#c8c8c8';
foreach($this->poster AS $konto=>$verdier){
$farge=farge($farge);
$avvik=0;
// Bergen avvik om det er bestilt
if(!empty($verdier['bestilt'])){
$avvik=$verdier['budsjett']-$verdier['bestilt'];
}
$jsrekke=$jsrekke.$verdier[0].",";
// <input name=\"paslag_".$verdier[0]."\"
id=\"paslag_".$verdier[0]."\" value=\"".$verdier['paslag']."\">
echo "<TR STYLE=\"background-color:$farge\">
<TD class=\"nr\">$verdier[0]
<TD>$verdier[1]($konto)\n";
if($konto=='431411'){
// echo "print vinduer\n";
$p->vinduer_out();
}
echo "
<TD><input type=\"text\" size=\"5\" name=\"paslag_".$verdier[0]."\"
id=\"paslag_".$verdier[0]."\" value=\"".$verdier['paslag']."\"
CLASS=\"paslag\">
<TD><input size=\"5\" type=\"text\"
name=\"budsjett_".$verdier[0]."\" id=\"budsjett_".$verdier[0]."\"
value=\"".round($verdier['budsjett'])."\" valign=right readonly
style=\"border-color:red\">
<TD><input size=\"5\"
onChange=\"summer(".$this->hkonto.",'bestilt')\"
name=\"bestilt_".$verdier[0]."\" id=\"bestilt_".$verdier[0]."\"
value=\"".$verdier['bestilt']."\">
<TD><input size=\"5\" name=\"avvik_".$verdier[0]."\"
id=\"avvik_".$verdier[0]."\" value=\"".round($avvik)."\" valign=right>
<TD><input size=\"5\"
onChange=\"summer(".$this->hkonto.",'faktura')\"
name=\"faktura_".$verdier[0]."\" id=\"faktura_".$verdier[0]."\"
value=\"".$verdier['faktura']."\"></TD>
$verdier[6]\n
<TD>Kommentar\n";
}
echo "</TR><TR><td><TD><TD>
<TD><input size=\"5\" id=\"budsjett_".$this->hkonto."\"
value=\"".round($this->sum['budsjett'])."\">
<TD><input size=\"5\" id=\"bestilt_".$this->hkonto."\"
value=\"".round($this->sum['bestilt'])."\">
<TD><input size=\"5\" id=\"avvik_".$this->hkonto."\"
value=\"".round($this->sum['avvik'])."\">
<TD><input size=\"5\" id=\"faktura_".$this->hkonto."\" value=\""
.round($this->sum['faktura'])."\">\n";
echo "<TD></TR></TABLE></DIV>\n";
$jsrekke=substr($jsrekke,0,strlen($jsrekke)-1);
echo "<script language=\"JavaScript\" type=\"text/javascript\">\n
var t".$this->hkonto."=new Array($jsrekke);\n
</SCRIPT>\n";
// echo "document.getElementById('".$hkonto."').value=
$p->sider+=1;
}
}
CLASS bruker {
var $bruker;
var $passord;
var $fornavn;
var $etternavn;
var $rett=array();
function bruker(){
$this->bruker=$_SERVER['PHP_AUTH_USER'];
$this->passord=$_SERVER['PHP_AUTH_PW'];
$SQL="SELECT Fornavn,Etternavn FROM Ansatte WHERE
brukernavn='".$this->bruker."'";
// echo $SQL;
// echo $this->bruker;
mysql_connect("arne","www","Yfw98ah1") or die("Ingen kontakt") .
mysql_error ;
//select which database you want to edit
mysql_select_db("dbhtb");
$SQL=mysql_query($SQL);
$SQL=mysql_fetch_assoc($SQL);
if($SQL['Fornavn'])$this->fornavn=$SQL['Fornavn'];
if($SQL['Etternavn'])$this->etternavn=$SQL['Etternavn'];
// $this->etternavn=$e;
$SQL="SELECT * FROM rettigheter WHERE bruker='".$this->bruker."'";
$SQL=mysql_query($SQL);
$rettighet=mysql_fetch_assoc($SQL);
$felter="SHOW COLUMNS FROM rettigheter";
$felter=mysql_query($felter);
$rr=array();
while($r=mysql_fetch_array($felter)){
if($r['Field']!='id' && $r['Field']!='bruker'){
$this->rett[$r['Field']]=$rettighet[$r['Field']];
// echo $r['Field']."=".$rettighet[$r['Field']]."<br>\n";
}
}
}
}
CLASS tlf_mld {
var $meldinger=array();
function tlf_mld(){
$SQL="SELECT * FROM tlf_mld WHERE til='".$_SERVER['PHP_AUTH_USER']."'";
// echo $SQL;
$SQL=mysql_query($SQL);
while($r=mysql_fetch_assoc($SQL)){
$this->meldinger[]=$r;
}
}
function skriv(){
$teller=0;
echo "<FORM id=\"tlf\" name=\"tlf\" ACTION=\"".
$_SERVER['PHP_SELF']."\" METHOD=\"POST\">\n";
echo "<input type=\"submit\" value=\"lagre\" class=\"noprint\"
style=\"display:none;\">\n";
foreach($this->meldinger as $r){
// echo count($this->meldinger);
$margin=$teller*210;
$teller++;
echo "<DIV style=\"margin-left:".$margin."px\" CLASS=\"tlf_mld_box\">\n";
echo "<center>Tlf. Melding</center><input class=\"sett\"
name=\"sett".$r['id']."\" id=\"sett".$r['id']."\" type=\"checkbox\">\n";
echo "fra:<b>".$r['fra']."</b> tlf:<b>".$r['fra_tlf']."</b>\n";
// echo "<input rows=\"5\" id=\"mld\" type=\"textarea\"
value=\"".$r['melding']."\"> </input>\n";
echo "<DIV class=\"mld\">".$r['melding']."</DIV>\n";
echo "</DIV>\n";
}
// echo "<input type=\"submit\" value=\"lagre\" class=\"noprint\"
style=\"margin-left:10px;\">\n";
echo "</FORM>\n";
}
}
?>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php