Strona 1 z 1
[php] - już działa !!
: wt maja 22, 2007 3:00 pm
autor: amp
Mam stronkę na której pobierane sa dane z plików csv do bazy i wyświetlane na stronie do tego jest mini wyszukiwarka. Niestety coś przestało działać i nie mogę dojść coś wyrzuca mi taki błąd:
Kod: Zaznacz cały
Fatal error: Call to undefined function doSelectFromArray() in /virtual/d/t/dt.ugu.pl/szukaj.php on line 30
we wskazywanej linijce jest zapis:
Aby wszytko było jaśniejsze umieszczam zawartość pliku szukaj.php :
Kod: Zaznacz cały
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Iso-8859-2">
</head>
<body>
<center>
<?php
require_once('biura.php');
if(isset($_POST['kraj']) &&
isset($_POST['wylotZ']) &&
isset($_POST['dataWylotu'])) {
$kraj = $_POST['kraj'];
$wylotZ = $_POST['wylotZ'];
$dataWylotu = $_POST['dataWylotu'];
$dataDo = "9999-12-31";
wyszukajOfert($kraj, $dataWylotu, $dataDo, $wylotZ);
} else {
?>
<form method=post action="szukaj.php" target="WynikiSzukaj">
<input type=hidden value="<?php echo $_GET['biura'];?>" name=biura>
<table>
<?php
echo "<tr><td>Kraj:</td><td>";
doSelectFromArray(listaKrajow(),"kraj");
echo "</td></tr><tr><td>Wylot z:</td><td>";
doSelectFromArray(listaWylotow(), "wylotZ", "odkodujIATA");
echo "</td></tr><tr><td>Wylot po:</td><td>";
doSelectFromArray(listaDat(), "dataWylotu");
echo "</td></tr>";
?>
<tr><td></td><td><input type="submit" value="Szukaj"></td></tr>
</table>
</form>
<?php
}
?>
</center>
</body></html>
jeszcze funkcja.php
: wt maja 22, 2007 3:02 pm
autor: amp
jeszcze plik funkcje.php :
[php]<?php
require_once('UniversalCSV.php');
function odkodujIATA($napis) {
$kody = array (
'WAW' => 'Warszawa',
'KRK' => 'Kraków',
'KTW' => 'Katowice',
'GDN' => 'Gdańsk',
'WRO' => 'Wrocław',
'POZ' => 'Poznań',
'RZE' => 'Rzeszów',
'LCJ' => 'Łódź',
'SZZ' => 'Szczecin',
'BZG' => 'Bydgoszcz',
'IEG' => 'Zielona Góra',
'SZY' => 'Szczytno');
while(list($klucz, $wartosc) = each($kody)) {
$napis = str_replace($klucz, $wartosc, $napis);
}
return $napis;
}
class Biuro extends UniversalCSV {
private $poleMiejsca;
private $poleWylotu;
private $poleKraju;
private $dataWylotu;
public function setPoleMiejsca($indeks) {
$this->poleMiejsca=$indeks;
}
public function setPoleWylotu($indeks) {
$this->poleWylotu=$indeks;
}
public function setPoleKraju($indeks) {
$this->poleKraju=$indeks;
}
public function setPoleDaty($indeks) {
$this->dataWylotu=$indeks;
}
public function getMiejsca() {
return $this->wartosciPola($this->poleMiejsca);
}
public function getWyloty() {
return $this->wartosciPola($this->poleWylotu);
}
public function getKraje() {
return $this->wartosciPola($this->poleKraju);
}
public function getDaty() {
return $this->wartosciPola($this->dataWylotu);
}
public function getMiasta() {
return $this->wartosciPola($this->poleMiasta);
}
public function wypiszSiebie($tablica) {
//nie ma implementacji
//w kazdej klasie dziedziczacej z tego trzeba
//napisac wlasna funkcje wyswietlajaca
}
public function szukajWycieczki($kraj, $data_od, $data_do, $wylot_z) {
$warunki = array();
$porzadek = array();
if(isset($this->poleKraju)) {
$warunki[$this->poleKraju] = $kraj;
if($kraj != "")
array_push($porzadek, "pole".$this->poleKraju);
}
if(isset($this->dataWylotu)) {
$warunki[$this->dataWylotu] = array($data_od, $data_do);
if(($data_od != "") || ($data_do != "") )
array_push($porzadek, "pole".$this->dataWylotu);
}
if(isset($this->poleWylotu))
$warunki[$this->poleWylotu] = $wylot_z;
if(count($porzadek) > 0)
$porzadek =" ORDER BY ".implode(",", $porzadek);
else
$porzadek = "";
return $this->search($warunki, $porzadek." LIMIT 100");
}
function listaPol($funkcja) {
global $biura;
$result = array();
if(isset($_GET['biura'])) $wybrane_biuro = $_GET['biura']; else $wybrane_biuro="";
//for($i=0; $i<count($biura); $i++)
if($wybrane_biuro=="Wezyr")
{
$result = array_merge($biura[0]->$funkcja(), $result);
}
if($wybrane_biuro=="EccoHoliday")
{
$result = array_merge($biura[1]->$funkcja(), $result);
}
if($wybrane_biuro=="EccoTravel")
{
$result = array_merge($biura[2]->$funkcja(), $result);
}
if($wybrane_biuro=="Soltours")
{
$result = array_merge($biura[3]->$funkcja(), $result);
}
$result = array_unique ($result);
sort($result);
return $result;
}
function listaKrajow() {
return listaPol("getKraje");
}
function listaWylotow() {
return listaPol("getWyloty");
}
function listaDat() {
return listaPol("getDaty");
}
function wyszukajOfert($kraj, $data_od, $data_do, $wylot_z) {
global $biura;
echo "<table>";
if(isset($_POST['biura'])) $wybrane_biuro = $_POST['biura']; else $wybrane_biuro="";
if($wybrane_biuro=="Wezyr") {
//for($i=0; $i<count($biura); $i++) {
$wyniki = $biura[0]->szukajWycieczki($kraj, $data_od, $data_do, $wylot_z);
/*echo "<tr><td valign='top'><b>".
$biura[0]->getTabela().
"</b></td><td>";
*/
for($j=0; $j<count($wyniki); $j++)
$biura[0]->wypiszSiebie($wyniki[$j]);
echo "</td></tr>";
}
if($wybrane_biuro=="EccoHoliday"){
//for($i=0; $i<count($biura); $i++) {
$wyniki = $biura[1]->szukajWycieczki($kraj, $data_od, $data_do, $wylot_z);
/*echo "<tr><td valign='top'><b>".
$biura[1]->getTabela().
"</b></td><td>";*/
for($j=0; $j<count($wyniki); $j++)
$biura[1]->wypiszSiebie($wyniki[$j]);
echo "</td></tr>";
}
if($wybrane_biuro=="EccoTravel"){
//for($i=0; $i<count($biura); $i++) {
$wyniki = $biura[2]->szukajWycieczki($kraj, $data_od, $data_do, $wylot_z);
/*echo "<tr><td valign='top'><b>".
$biura[2]->getTabela().
"</b></td><td>";
*/
for($j=0; $j<count($wyniki); $j++)
$biura[2]->wypiszSiebie($wyniki[$j]);
echo "</td></tr>";
}
if($wybrane_biuro=="Soltours"){
//for($i=0; $i<count($biura); $i++) {
$wyniki = $biura[3]->szukajWycieczki($kraj, $data_od, $data_do, $wylot_z);
/*echo "<tr><td valign='top'><b>".
$biura[2]->getTabela().
"</b></td><td>";
*/
for($j=0; $j<count($wyniki); $j++)
$biura[3]->wypiszSiebie($wyniki[$j]);
echo "</td></tr>";
}
echo "</table>";
}
function doSelectFromArray($tablica, $nazwa, $funkcjaFiltrujaca="") {
echo "<select name='".$nazwa."'>";
foreach($tablica as $wartosc) {
echo "<option value='".$wartosc."'>";
if($funkcjaFiltrujaca != "")
echo $funkcjaFiltrujaca($wartosc);
else
echo $wartosc;
echo "</option>";
}
echo "</select>";
}
}
//**************************************************************************//
class Hotel extends UniversalCSV {
private $poleMiejscaHoteli;
private $poleKrajuHoteli;
private $poleMiasta;
private $poleHotelu;
public function setPoleMiejscaHoteli($indeks) {
$this->poleMiejscaHoteli=$indeks;
}
public function setPoleKrajuHoteli($indeks) {
$this->poleKrajuHoteli=$indeks;
}
public function setPoleMiasta($indeks) {
$this->poleMiasta=$indeks;
}
public function setPoleHotelu($indeks) {
$this->poleHotelu=$indeks;
}
public function getMiejscaHoteli() {
return $this->wartosciPola($this->poleMiejscaHoteli);
}
public function getKrajeHoteli() {
return $this->wartosciPola($this->poleKrajuHoteli);
}
public function getMiasta() {
return $this->wartosciPola($this->poleMiastaHoteli);
}
public function getHotel() {
return $this->wartosciPola($this->poleHotelu);
}
public function wypiszSiebie($tablica) {
//nie ma implementacji
//w kazdej klasie dziedziczacej z tego trzeba
//napisac wlasna funkcje wyswietlajaca
}
public function szukajHotelu($krajHoteli, $miasto, $hotel) {
$warunki = array();
$porzadek = array();
if(isset($this->poleKrajuHoteli)) {
$warunki[$this->poleKrajuHoteli] = $krajHoteli;
if($krajHoteli != "")
array_push($porzadek, "pole".$this->poleKrajuHoteli);
}
if(isset($this->poleMiasta)) {
$warunki[$this->poleMiasta] = $miasto;
if(($miasto!= "") )
array_push($porzadek, "pole".$this->poleMiasta);
}
if(isset($this->poleHotelu)) {
$warunki[$this->poleHotelu] = $hotel;
if(($hotel != "") )
array_push($porzadek, "pole".$this->poleHotelu);
}
if(count($porzadek) > 0)
$porzadek =" ORDER BY ".implode(",", $porzadek);
else
$porzadek = "";
return $this->search($warunki, $porzadek." LIMIT 100");
}
function listaPolHoteli($funkcja){
global $hotel;
$result = array();
if(isset($_GET['hotel'])) $wybrany_hotel = $_GET['hotel']; else $wybrany_hotel="";
//for($i=0; $i<count($biura); $i++)
if($wybrany_hotel=="HoteleEcco")
{
$result = array_merge($hotel[0]->$funkcja(), $result);
}
$result = array_unique ($result);
sort($result);
return $result;
}
function listaKrajowHoteli() {
return listaPolHoteli("getKrajeHoteli");
}
function listaMiast(){
return listaPolHoteli("getMiasta");
}
function listaHoteli(){
return listaPolHoteli("getHotel");
}
function wyszukajHotel($krajHoteli, $miasto, $hotel) {
global $hotel;
echo "<table>";
if(isset($_POST['hotel'])) $wybrany_hotel = $_POST['hotel']; else $wybrany_hotel="";
if($wybrany_hotel=="HoteleEcco") {
//for($i=0; $i<count($biura); $i++) {
$wyniki = $hotel[0]->szukajHotelu($krajHoteli, $miasto, $hotel);
/*echo "<tr><td valign='top'><b>".
$biura[0]->getTabela().
"</b></td><td>";
*/
for($j=0; $j<count($wyniki); $j++)
$hotel[0]->wypiszSiebie($wyniki[$j]);
echo "</td></tr>";
}
echo "</table>";
}
function doSelectFromArray($tablica, $nazwa, $funkcjaFiltrujaca="") {
echo "<select name='".$nazwa."'>";
foreach($tablica as $wartosc) {
echo "<option value='".$wartosc."'>";
if($funkcjaFiltrujaca != "")
echo $funkcjaFiltrujaca($wartosc);
else
echo $wartosc;
echo "</option>";
}
echo "</select>";
}
}
?>[/php]
Re: [php] - już działa !!
: wt maja 22, 2007 4:46 pm
autor: Chmura
1. w którym miejscu inkludujesz plik funkcje.php?
2. nie wiem czy można podawać funkcje jako argument
Re: [php] - już działa !!
: wt maja 22, 2007 5:03 pm
autor: 123456
Ale burdel... oszczędziłbyś ludzi na forum i nie katował ich takim poszarpanym kodem.
Błąd spowodowany jest pewnie tym, że ktoś, kto nie wie co robi zaczął zakomentowywać różne linie kodu i przestawił klamry. Funkcja
doSelectFromArray() znajduje się w klasie
Biuro a chyba nie powinna patrząc na to jak jest wywołana.
Rozwiązanie:
Przestań samemu kombinować i daj ten kod komuś kto się chociaż trochę na tym zna.
Chmura pisze:2. nie wiem czy można podawać funkcje jako argument
Jako argument można podać co się tylko chce, byleby zwracało jakąś wartość. Ale takie postępowanie nie jest dobre.
odp
: wt maja 22, 2007 5:56 pm
autor: amp
12345 jak nie masz ochoty pomagać to tego nie rób a nie "jeździj" po ludziach. Tak się składa że uczę się dopiero php i czasem coś mi nie wyjdzie. A tak poza tym jestem kobietą i zanim i odpisałeś mi zorientowałam się że klamry są przestawione.
Re: [php] - już działa !!
: wt maja 22, 2007 6:18 pm
autor: 123456
123456 jak nie masz ochoty pomagać to tego nie rób
Wskazałem błąd - napisałem, że źle są klamry.
a nie "jeździj" po ludziach.
Jeśli dobrą radę, nie brania się za coś, co jest za trudne uważasz za jeżdżenie po ludziach, Twoja sprawa.
A tak poza tym jestem kobietą
Napisałaś to bo użyłem złej osoby czy żeby pokazać jak okrutnie Cię potraktowałem?
Jeśli to pierwsze to popatrz:
Mam stronkę na której pobierane sa dane z plików csv do bazy i wyświetlane na stronie do tego jest mini wyszukiwarka. Niestety coś przestało działać i nie mogę dojść coś wyrzuca mi taki błąd: (...)we wskazywanej linijce jest zapis: (...)Aby wszytko było jaśniejsze umieszczam zawartość pliku szukaj.php : (...)jeszcze plik funkcje.php : (...)
Po czym miałem rozpoznać rodzaj?
Jeśli druga opcja to wczuj się w osobę, która chce znaleźć błąd w
cudzym kodzie.
zanim i odpisałeś mi zorientowałam się że klamry są przestawione.
To trzeba było zadzwonić żebym się nie fatygował...

Napisz do moderatora żeby usunął poprzedni jak i ten post bo nie wnoszą one nic do tematu, skoro tak Ci szkodzą
odp
: wt maja 22, 2007 9:00 pm
autor: amp
pisząc żebyś nie jeździł po ludziach i że jeżeli nie masz ochoty pomagać to nie pomagaj miałam na myśli twoje podejście do mojego postu które dało się wyczuć w pierwszych zdaniach twojej odpowiedzi a mianowicie:
Ale burdel... oszczędziłbyś ludzi na forum i nie katował ich takim poszarpanym kodem.
Błąd spowodowany jest pewnie tym, że ktoś, kto nie wie co robi zaczął zakomentowywać różne linie kodu i przestawił klamry
Co do informacji o mojej płci to nie była iluzja tylko informacja ponieważ pisałeś jak do mężczyzny.
Owszem pomogłeś wskazałeś błąd za co wielkie dzięki , tylko uważam że można to było zrobić bardziej subtelnie i delikatnie.
A co do telefonowania do Ciebie no cóż telefonu nie miałam, a poza tym w tamtym momencie nie miałam ani czasu ani dostępu do netu.
Tylko tyle chciałam Tobie powiedzieć i myślę że możemy uznać temat za zamknięty.