Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sondami
Forum PHP.pl > Forum > PHP
agavk
Z racji moich studiów i nie tylko zajęłam się ostatnio php i MySQL. Niestety ciągle jeszcze uważam się za żółtodzioba, a dowodem na to jest mój problem. Po pierwszych doświadczeniach (ręczna konfiguracja Apache i php, liczniki, dodawanie stron, nawigacja) doszłam do tematu sond i też wszystko działało prawidłowo. Konieczność korzystania z baz doprowadziła mnie do Krasnala i po nieudanych próbach z FoxSerw byłam zachwycona. Do czasu - kiedy stwierdziłam, że dawniej zrobione sondy po prostu padły. Otrzymuję np komunikat:
Warning: reset(): Passed variable is not an array or object in c:usrsfpwwwmuptextfileincludeclass_poll.php on line 168

Warning: key(): Passed variable is not an array or object in c:usrsfpwwwmuptextfileincludeclass_poll.php on line 168

przez co rozumiem, że podana zmienna nie jest tablicą ani obiektem (?)

Nie jest to z pewnością błąd skryptu, bo akurat ten pochodzi z Advanced Poll 2.2, ale występuje też po aktywowaniu moich skryptów.

Odinstalowałam Krasnala i powróciłam do poprzedniej konfiguracji ale błąd pozostał. Co gorsze przesłam pliki na profesjonalne konto obsługujące php i też klapa.
Pomóżcie. Męczę się z tym juz dwa dni.
Pozdrawiam Wszystkich AGA
ps. Wszystkie pozostałe elementy i komunikacja z bazą danych działają prawidłowo.
zulus
mogłabyś podać kod sondy??
agavk
Dzięki za tek szybką odpowiedź
Kod skryptu wygląda tak:

[php:1:75d61f01ff]<?php
// Ankieta do glosowania
$glosowane = array ('6' => 'rewelacyjna', '5' => 'bardzo dobra', '4' => 'dobra',
'3' => 'przeciętna', '2' => 'zła', '1' => 'beznadziejna');

function glosowanie ($glosowanie, $quiz) {
// funkcja zapamiętuje wynik głosowania danej osoby
setcookie ('glosowano', "1"); // pamiętamy, że już głosowano
if (file_exists("dane/glosowanie.txt")) { // jest plik z głosowaniem
$plik = fopen ("dane/glosowanie.txt", "r+");
flock ($plik, 2);
$wiersz = fgets ($plik, 255);
$wyniki = split ("|", $wiersz);
fseek ($plik, 0);
} else { // nie ma pliku - będzie utworzony
$plik = fopen ("dane/glosowanie.txt", "w+");
flock ($plik, 2);
}

for ($i=0; $i<count($glosowanie);$i++) { // aktualizacja wyników
if ($quiz == $i+1) {$wyniki[$i]++; }
fputs ($plik, $wyniki[$i]);
if ($i<count($glosowanie)-1) {fputs ($plik, '|'); }
}
flock ($plik, 3);
fclose ($plik);
}

function wyswietlanie ($glosowanie, $glosowano) {
// wy&para;wietla wyniki jeżeli osoba głosowała lub formularz jeżeli nie
if ($glosowano) {
if (file_exists("dane/glosowanie.txt")) {
$plik = fopen ("dane/glosowanie.txt", "r");
$wiersz = fgets ($plik, 255); fclose ($plik);
$wyniki = split ("|", $wiersz);
for ($i=0; $i<count($wyniki); $i++) { $liczbaglosow += $wyniki[$i]; }
}
print "<p align=center><b>Ankieta</b></p>n";
print "<p>Oceń moj&plusmn; stronę:</p><table>n";
for (reset ($glosowanie); $klucz=key($glosowanie); next ($glosowanie)) {
print "<tr><td>".pos($glosowanie).":&nsbp;</td><td>";
if ($liczbaglosow == 0){
$procent = 0; // aby uniknac dzielenia przez zero
} else {
$procent = ($wyniki[$klucz-1]/$liczbaglosow)*100;
}
print "<img src="img/1.gif" width=$procent height="10"></td>";
print "<td align=right>&nbsp;";
printf ("%0.0f", $procent);
print ("%</td></tr>");
}
print "</table>";
} else {
print '<form method=get action="sonda.php">';
print "<p align=center><b>Ankieta</b></p>n";
print "<p>Oceń moj&plusmn; stronę:</p><table>n";
for (reset ($glosowanie); $klucz=key($glosowanie); next ($glosowanie)) {
print ('<tr><td><input type=radio name=quiz value="'.$klucz. '"> '.
pos($glosowanie)."</td></tr>n");
}
print '</table><center><input type=submit value="Głosuj"></center></p>';
print '</form>';
}
}
if ($quiz) { //oddano głos - aktualizacja i przekierowanie
glosowanie ($glosowanie, $quiz);
// "odkomentuj" jeden z poniższych nagłówków
// jeżeli używasz w html przez ssi lub w innym php przez require:
header ("Location: ".$GLOBALS["HTTP_REFERER"]);
// jeżeli uzywasz samodzielnie:
//header ("Location: http://".$GLOBALS["localhost"].
//$GLOBALS["REDIRECT_URL"]);
} else { // formularz lub wyniki
wyswietlanie ($glosowanie, $glosowano);
}
?>[/php:1:75d61f01ff]

Plik jest wstawiony funkcją require w stronę sonda. php.
Jest to przykładowa sonda zrobiona na podstawie podręcznika (dla sprawdzenia) i w niej pojawia sie identyczny błąd w wierszu 57. Przesłanie całego Advanced Poll byłoby kłopotliwe.
Efekt można zobaczyć pod adresem: http://www.mup.lublin.pl/mup_php/sonda.php
a plik z kodem: 6-12-2.php

z góry dziękuję
AGA
zulus
Cytat
Dzięki za tek szybką odpowiedź
Kod skryptu wygląda tak:

<?
// Ankieta do glosowania
$glosowane = array ('6' => 'rewelacyjna', '5' => 'bardzo dobra', '4' => 'dobra',
'3' => 'przeciętna', '2' => 'zła', '1' => 'beznadziejna');
AGA

przyczyną jest głupia literówka w nazwie tablicy
tablicę nazwałaś $glosowane a do funkcji wyświetlającej podajesz $glosowanie biggrin.gif
zmień nazwę tablicy z $glosowane na $glosowanie i będzie działać (sprawdziłem)
Zamotałem :?:
agavk
Zulus
Bardzo dziękuję! Takie głupstwo a tyle kłopotu.
Sama sąda pokazuje się dobrze ale chyba jeszcze coś jest nie tak.
Po zagłosowaniu nie pokazuje wyników (w procentach) jakby nie zliczała
Ale nad tym jeszcze posiedzę.

Jeszcze raz dzięki! biggrin.gif
AGA



Scanner
Przepraszam, ale mam nadzieję, że mi wybaczysz.
Jak zauważyłeś jestem TU nowa. To był pierwszy i ostatni raz :oops:

AGA
zulus
sprawdź czy masz folder dane w miejscu gdzie masz sam skrypt.
Ja sam uczę się php od 3 tygodni. biggrin.gif
scanner
Cytat
Przepraszam, ale mam nadzieję, że mi wybaczysz.
Przez wzgląd na płec .. wybaczam smile.gif)
Prosże, wyedytuj swojego posta i didaj w odpowiednich miejscach znaczniki [ php ]. Gdy to zerobisz, usunę z tego watku posty dotyczące tej sprawy.
Omega
A od innej płci byś nie przyjął przeprosin?questionmark.gif :wink:
scanner
Płeć żeńska ma u mnie wyjątkowe preferencje smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.