Autor | Zpráva | ||
---|---|---|---|
Chlebíček Profil * |
Dobrej,
Mám funkci // fce.php function select($tabulka, $hodnota, $sloupec) { $pripojeni=mysql_connect($GLOBALS['dbserver'],$GLOBALS['dbuzivatel'],$ GLOBALS['dbheslo']); mysql_select_db($GLOBALS['dbjmeno'],$pripojeni); $prikaz=mysql_query("SELECT * FROM $tabulka WHERE id='$hodnota'"); $get=mysql_fetch_assoc($prikaz); $post=$get[$sloupec]; } potom // data.php $vzhled=select(nastaveni, 1, vzhled); a // index.php < a href="<? $vzhled ?>" ></a> jenze se to jaksi nevypise :( nvm jak udelat aby ta funkce vyplivla tu hodnotu aby se pak do promene nacetla samozrejme v index.php pouzivam include kde nacitam fce.php a data.php :) děkuji za pomoc |
||
ninja Profil |
#2 · Zasláno: 11. 11. 2008, 10:51:20
do funkce musis pridat prikaz return() a do nej vlozit jakou hodnotu chces vracet. Myslim ze chces:
return ($post); |
||
Chlebíček Profil * |
#3 · Zasláno: 11. 11. 2008, 11:46:41
jj chtel bych $post .. takže teoreticky by
$vzhled=select(nastaveni, 1, vzhled); // rovnat $vzhled=$post; // rovnat $vzhled="text"; zkusím to dík :) |
||
Chlebíček Profil * |
#4 · Zasláno: 11. 11. 2008, 11:54:03
stejne nefunguje .. vypisuje
Fatal error: Cannot redeclare select() (previously declared in /home/www/*****/fce.php:3) in /home/www/*****/fce.php on line 11 kód <?php include 'include/config.php'; function select($tabulka, $hodnota, $sloupec) { $pripojeni=mysql_connect($GLOBALS['dbserver'],$GLOBALS['dbuzivatel'],$ GLOBALS['dbheslo']); mysql_select_db($GLOBALS['dbjmeno'],$pripojeni); $prikaz=mysql_query("SELECT * FROM $tabulka WHERE id='$hodnota'"); $get=mysql_fetch_assoc($prikaz); $post=$get[$sloupec]; return ($post); } /// tohle je 11 řádek |
||
blaaablaaa Profil * |
#5 · Zasláno: 11. 11. 2008, 12:05:40
pokousis se predeklarovat fci select, takze uz ji tam nekde mas dvakrat...na 3 a 11. radku?
a k tomu prvnimu scriptu...nevypise ti nic, protoze tam nerikas, ze to chces vypsat < a href="<? echo $vzhled ?>" ></a> + ten return ti chybel |
||
Chlebíček Profil * |
#6 · Zasláno: 11. 11. 2008, 12:14:51
aha zapomel jsem na echo .. nic to nemeni na tom proc to dela .. vzdyt jsem posilal cely kod fce :(
|
||
blaaablaaa Profil * |
#7 · Zasláno: 11. 11. 2008, 12:50:43
return $post; namisto return ($post);
|
||
Kajman_ Profil * |
#8 · Zasláno: 11. 11. 2008, 12:54:50
Předáváte neurčené konstanty místo řetězců...
$vzhled=select('nastaveni', 1, 'vzhled'); |
||
ninja Profil |
#9 · Zasláno: 11. 11. 2008, 13:19:46
blaaablaaa „return $post; namisto return ($post);“
Nechces nam toto vysvetlit? Nerikam ze to neni lepsi, ale rozhodne to nezmeni vysledek. Viz PHP manual: Note that since return() is a language construct and not a function, the parentheses surrounding its arguments are not required. It is common to leave them out, and you actually should do so as PHP has less work to do in this case. |
||
blaaablaaa Profil * |
#10 · Zasláno: 11. 11. 2008, 13:22:23
ninja: my bad ...
Kajman_: jj, to je pravda ... ale nevim, jestli by tahle chyba vyhodila takvoy fatal error...mozna se mylim |
||
Chlebíček Profil * |
#11 · Zasláno: 11. 11. 2008, 13:24:05
Tak už fakt nechápu proč to píše ...
index.php ////// include 'include/data.php'; include 'include/fce.php'; include 'include/config.php'; if($vzhled!='') {require "themes/$vzhled/index.php";} else {require "themes/default/index.php";} ?> includes/fce.php ////// include 'include/config.php'; function select($tabulka, $hodnota, $sloupec) { $pripojeni=mysql_connect($GLOBALS['dbserver'],$GLOBALS['dbuzivatel'],$ GLOBALS['dbheslo']); mysql_select_db($GLOBALS['dbjmeno'],$pripojeni); $prikaz=mysql_query("SELECT * FROM $tabulka WHERE id='$hodnota'"); $get=mysql_fetch_assoc($prikaz); $post=$get[$sloupec]; return $post; } $vzhled=select('nastaveni', 1, 'vzhled'); $title=select('nastaveni', 1, 'title'); no a index.php vypíše Fatal error: Cannot redeclare select() (previously declared in /home/www/**.cz/beta/include/fce.php:3) in /home/www/**.cz/beta/include/fce.php on line 11 |
||
Chlebíček Profil * |
#12 · Zasláno: 11. 11. 2008, 13:25:09
a v sql mam tabulku nastaveni ...
`nastaveni` (`id`, `vzhled`, `title`) VALUES (1, '', 'Test'); |
||
blaaablaaa Profil * |
#13 · Zasláno: 11. 11. 2008, 13:38:40
a co mas v tom configu? ty ho includujes dvakrat... pouzivej na to include_once, resp require_once
|
||
BetaCam Profil |
#14 · Zasláno: 11. 11. 2008, 13:39:16
Chlebíček
Na config by se hodilo víc ro než include. Navíc ta hláška mluví jasně. Redeklaruješ funkci select(). Tedy buď jí tam máš deklarovanou dvakrát a nebo ji dvakrát načítáš pomocí include. |
||
bohyn Profil |
#15 · Zasláno: 11. 11. 2008, 13:48:14
Chlebíček
1) Zda se ze mas v "includes/fce.php" tu fci 2x nevo includujes 2x fce.php (v data.php nebo config.php?) 2) Tahas 2x "include/config.php", pravdepodobne neni treba. |
||
bohyn Profil |
#16 · Zasláno: 11. 11. 2008, 13:56:13 · Upravil/a: bohyn
A pokud potrebujes vybrat dva sloupce tak to udelej najednou a usetris jeden dotaz
function select($tabulka, $hodnota) { $pripojeni = mysql_connect($GLOBALS['dbserver'],$GLOBALS['dbuzivatel'],$ GLOBALS['dbheslo'], $GLOBALS['dbjmeno']); $prikaz = mysql_query("SELECT title, vzhled FROM ".$tabulka." WHERE id = '".$hodnota."'"); $get = mysql_fetch_assoc($prikaz); return $get; } $vysledek = select('nastaveni', 1); $vzhled = $vysledek['vzhled']; $title = $vysledek['title']; |
||
Chlebíček Profil * |
#17 · Zasláno: 11. 11. 2008, 14:10:26
no pokročil jsem
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/www/**.cz/beta/include/fce.php on line 6 6: $get = mysql_fetch_assoc($prikaz); |
||
blaaablaaa Profil * |
#18 · Zasláno: 11. 11. 2008, 14:14:33
chyba v sql dotazu ..pouzivej mysql_query("SELECT title, vzhled FROM ".$tabulka." WHERE id = '".$hodnota."'") or die (mysql_error()); a uvidis co ti to vyhodi
|
||
Chlebíček Profil * |
#19 · Zasláno: 11. 11. 2008, 14:19:18
No database selected :D zajimave ..
|
||
Chlebíček Profil * |
#20 · Zasláno: 11. 11. 2008, 14:24:52
aha .. mel sem tam $GLOBALS['$dbjmeno'] proto to nevzalo databazi :) jooo funguje to! diky moc chlapi!
|
||
tiso Profil |
#21 · Zasláno: 11. 11. 2008, 16:36:40
Chlebíček - administrátor na hostingu bude mať z tvojej funkcie určite radosť, pretože pri každom jej volaní vytváraš nové spojenie na databázu (a vôbec ho nezatváraš).
|
||
bohyn Profil |
#22 · Zasláno: 11. 11. 2008, 16:47:40 · Upravil/a: bohyn
tiso
Zavre se samo pri ukonceni scriptu Edit: Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution. See also freeing resources. PHP manual |
||
tiso Profil |
#23 · Zasláno: 11. 11. 2008, 17:25:42
bohyn - viem, niečo k textu mimo zátvorky nedoplníš?
|
||
bohyn Profil |
#24 · Zasláno: 11. 11. 2008, 17:30:27
tiso
viem, niečo k textu mimo zátvorky nedoplníš? A co bys jeste chtel slyset? Zda se ti dotaz pri kazdem nacteni stranky je moc, nebo co tim chtel basnik rici? |
||
tiso Profil |
#25 · Zasláno: 11. 11. 2008, 17:39:38
bohyn toe nie je "dotaz pri kazdem nacteni stranky" ale "vytvorenie nového spojenia na databázu pri každom použití tej funkcie", a to je dosť podstatný rozdiel.
|
||
bohyn Profil |
#26 · Zasláno: 11. 11. 2008, 17:53:04
„vytvorenie nového spojenia na databázu pri každom použití tej funkcie“
Nezbyva nez konstatovat ze tak uz to s dotazama chodi. Jestli ale pouziva vic dotazu na strance tak by spojeni melo byt samozjeme globalni (z vyse uvedeneho neni zrejme). Popripade by se jeste vysledek dal "cachovat" pres sessions. |
||
Chlebíček Profil * |
#27 · Zasláno: 11. 11. 2008, 18:50:34
zase takovej borec v php nejsem a necham si poradit samozrejme .. takze bych mel jeste primo v te funkci nebo nekde ukoncovat pripojeni do db ano?
|
||
Chlebíček Profil * |
#28 · Zasláno: 11. 11. 2008, 18:55:59
tak jsem dal do config.php
$pripojeni=mysql_connect($dbserver,$dbuzivatel,$dbheslo); mysql_select_db($dbjmeno,$pripojeni); $provedeni=mysql_query($prikaz,$pripojeni); a ve fce.php to vypada takhle function select($tabulka, $hodnota) { $GLOBALS['prikaz']=mysql_query("SELECT * FROM $tabulka WHERE id='$hodnota'") or die (mysql_error()); ; $get = mysql_fetch_assoc($GLOBALS['prikaz']); return $get; } na konci index.php <? mysql_close($pripojeni); ?> je to spravne? Tiso & bohyn ? děkuji za radu |
||
bohyn Profil |
#29 · Zasláno: 11. 11. 2008, 19:19:53
// pokud pouzivas jen jedno pripojeni neni nutne u mysql_select_db, mysql_query a mysql_close pouzivat druhy argument $pripojeni $pripojeni=mysql_connect($dbserver,$dbuzivatel,$dbheslo); mysql_select_db($dbjmeno,$pripojeni); // tento radek asi nechapu, pokud nemas $prikaz inicializovanej nekde predtim tak je to blbost $provedeni=mysql_query($prikaz,$pripojeni); // proc pouzivas globalni promenou $GLOBALS['prikaz'] k ciste lokalnimu pouziti? // jestli s ni nepracujes nekde dal tak je to zbytecny function select($tabulka, $hodnota) { $result = mysql_query("SELECT * FROM $tabulka WHERE id='$hodnota'") or die (mysql_error()); ; $get = mysql_fetch_assoc($result); return $get; } Takhle by to melo fungovat |
||
Chlebíček Profil * |
#30 · Zasláno: 11. 11. 2008, 22:17:45
ještě dotaz .. mám podmínku
if($vzhled!='') {require "themes/$vzhled/index.php";} else {require "themes/default/index.php";} themes/default/index.php = <? require 'include/header.php'; require 'include/left.php'; require 'include/right.php'; require 'include/footer.php'; ?> a v header.php je <h1><? echo $vzhled; ?></h1> vypíše se ale jen <h1></h1> .. nvm proc se nevypise ten text .. kdyz v tom index kde je ta podminka se vypisuje |
||
Časová prodleva: 15 let
|
0