Zaczne od kodu a pozniej zadam pytania:
<?php
class c_punkt_ankiety {
#numer pytania . sluzy jako licznik i jako inf z ktorego pytania jest podana odp
wiedz
var $numer;
#pytanie ;
var $pytanie;
#typ odpowiedzi enum Checkobox, radio, textarea
var $typ;
#ilosc mozliwosci w przypadku gdy $typ==chbox, radio,text
#1 - chbox, 2 - radio, 3- tezt
var $rozmiar;
#lista odpowiedzi
#wygenerowany kod html
var $kod;
#metody
itd...
}
class c_ankieta {
#liczba punktow ankiety
var $ile_punktow;
#nagłówek nakiety
var $naglowek;
#kod ankiety przechowuje aktualny kod calej ankiety
var $kod_ankiety;
#punkty
var $pkt;
#metody
itd....
}
?>
Powyzej czesc definicji klasy bo metody sa niepotrzebne do wyjasnienie problemu
<?php
$ankieta= new c_ankieta;
$i=0;
for ($i=0;$i<$_POST['licznik'];$i++){
$ankieta->pkt[$i]=new c_punkt_ankiety;
$ankieta->pkt[$i]->dodaj_numer($i);
$ankieta->pkt[$i]->dodaj_pytanie($_POST[$i]);
$typ=\"typ\".$i;
$ankieta->pkt[$i]->wybierz_typ($_POST[$typ]);
$z=\"0\";
for($j=0;$j<6;$j++){
if ($_POST[$i.\"_\".$j]!=\"\")
{
$ankieta->pkt[$i]->odpowiedzi[$z]=$_POST[$i.\"_\".$j];
$z+=\"1\";
}
}
$ankieta->pkt[$i]->wybierz_rozmiar($z);
$ankieta->pkt[$i]->generuj_punkt_ankiety();
}
$ankieta->ustaw_liczbe_punktow($i);
$ankieta->wygeneruj_kod();
print $ankieta->kod_ankiety;
}
?>
Powyzej inicjowanie obiektu o nazwie ankieta
<?php
print $ankieta->pkt[0
]->pytanie;--------------- tu pierwsza sytuacja
//dodaj ankiete do bazy
function dodaj_ankiete_do_bazy($ankieta,$database){
print ($baza_nalgowek = \"insert into \".$database.\".ankieta (id_ankiety,pole, atrybut,stat) values('','$ankieta->naglowek',0,0)\"); print $baza_naglowek.\"<br>\";
mysql_query($baza_nalgowek) or
die(\"Dodanie ankiety sie nie powiodło (0)\"); $baza_kod =\"insert into \".$database.\".ankieta(id_ankiety,pole,atrybut,stat) values('','$ankieta->kod_ankiety',1,0)\";
mysql_query($baza_kod) or
die(\"Dodanie ankiety sie nie powiodło (1)\"); print \"$ankieta->pkt[0]->pytanie\";-------------a tu druga styuacja
for($i=0; $i < $ankieta->ile_punktow; $i++ ){
$baza_pytanie=\"insert into \".$database.\".ankieta(id_ankiety,pole,atrybut,stat) values('','$ankieta->pkt[$i]->pytanie',2,0)\";
mysql_query($baza_pytanie) or
die (\"Nie udalo sie dodac do bazy (2)\"); for ( $j=0 ; $j< $ankieta->pkt[$i]->rozmiar ; $j++){
$baza_odpowiedz=\"insert into \".$database.\".ankieta(id_ankiety,pole,atrybut,stat) values(''.'$ankieta->pkt[$i]->odpowiedz[$j]',3,0)\";
mysql_query($baza_odpowiedz) or
die (\"Nie udalo sie dodac do bazy (3)\"); }
}
}
?>
Wytłuszczone zostały 2 rzeczy pierwsza, poza funkcją prawidłowo wyswietli dane
Druga w funkcji wyswietla cos takiego.... Array[0]->pytanie
Nie wiem dlaczego ta zmienna nie jest widziana w funkcji mimo ze do funkcji przekazuje cały obiekt (a wlasnie ankieta do obiekt typu c_ankieta a pkt jest obiektem typu c_punkt_ankiety )
Dzieki z góry za sugestie, podowiedzi, i rozwiązania. Pozdrawiam
edit:
Nadminie jeszcze ze ostatnia petla wykonuje sie dokladnie tyle razy ile trzeba co oznacza ze
$ankieta->pkt[$i]->rozmiar jest jak najbardzie widoczna ale niestety tylko dla ilosci przebiegow nie da rady tego wypisac bo wyswietli sie cos takiego Array[]->rozmiar
Mozecie juz skasowac posta sam doszedłem metoda prob i błędów chociaż zupełnie nie wiem dlaczego tak sie działa w każdym razie juz nie ma błędu i smiga (IMG:
http://forum.php.pl/style_emoticons/default/smile.gif)
Ten post edytował sticker 3.05.2005, 12:34:24