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
do funkce musis pridat prikaz return() a do nej vlozit jakou hodnotu chces vracet. Myslim ze chces:
return ($post);
Chlebíček
Profil *
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 *
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 *
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 *
aha zapomel jsem na echo .. nic to nemeni na tom proc to dela .. vzdyt jsem posilal cely kod fce :(
blaaablaaa
Profil *
return $post; namisto return ($post);
Kajman_
Profil *
Předáváte neurčené konstanty místo řetězců...
$vzhled=select('nastaveni', 1, 'vzhled');
ninja
Profil
blaaablaaareturn $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 *
ninja: my bad ...
Kajman_: jj, to je pravda ... ale nevim, jestli by tahle chyba vyhodila takvoy fatal error...mozna se mylim
Chlebíček
Profil *
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 *
a v sql mam tabulku nastaveni ...
`nastaveni` (`id`, `vzhled`, `title`) VALUES 
(1, '', 'Test');
blaaablaaa
Profil *
a co mas v tom configu? ty ho includujes dvakrat... pouzivej na to include_once, resp require_once
BetaCam
Profil
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
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
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 *
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 *
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 *
No database selected :D zajimave ..
Chlebíček
Profil *
aha .. mel sem tam $GLOBALS['$dbjmeno'] proto to nevzalo databazi :) jooo funguje to! diky moc chlapi!
tiso
Profil
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
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
bohyn - viem, niečo k textu mimo zátvorky nedoplníš?
bohyn
Profil
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
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
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 *
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 *
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
 // 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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: