Stránka: 1 z 1
| [ Príspevkov: 19 ] | |
Autor | Správa |
---|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
dobry vecer,
dost dlho som sa snazil vyriesit moj problem ale uz som fakt mimo.
mam lamp server na linuxe ubuntu 9.04, vytvoril som si databazu a:
-- naplnim ju :
Kód: <?php $spojenie = mysql_connect( "localhost", "*****", "*****" ) or die( "skontrolujte prosim pripojenie k serveru" ); mysql_select_db( "moviesite" ); $vlozit = "INSERT INTO movie ( movie_id, movie_name, movie_type, " . "movie_year, movie_leadactor, movie_director ) " . "VALUES ( 1, 'Bozsky Bruce', 5, 2003, 1, 2 ), " . "( 2, 'Malery pana Sikuly', 5, 1999, 5, 6 ), " . "( 3, 'Grand Canyon', 2, 1991, 4, 3 )"; $vysledky = mysql_query( $vlozit ) or die( mysql_error() ); $typ = "INSERT INTO movietype ( movietype_id, movietype_label ) " . "VALUES ( 1, 'sci Fi' ), " . "( 2, 'drama' ), " . "( 3, 'dobrodruzny' ), " . "( 4, 'vojensky' ), " . "( 5, 'komedia' ), " . "( 6, 'horor' ), " . "( 7, 'akcny' ), " . "( 8, 'detsky' )" ; $vysledky = mysql_query( $typ ) or die( mysql_error() ); $ludia = "INSERT INTO people ( people_id, people_fullname, " . "people_isactor, people_isdirector ) " . "VALUES ( 1, 'Jim Carrey', 1, 0 ), " . "( 2, 'Tom Shadyac', 0, 1 ), " . "( 3, 'Lawrence Kasdan', 0, 1 ), " . "( 4, 'Kevin Kline', 1, 0 ), " . "( 5, 'Ron Livingston', 1, 0 ), " . "( 6, 'Mike Judge', 0, 1 )"; $vysledky = mysql_query( $ludia ) or die( mysql_error() ); echo "vlozenie dat prebehlo uspesne"; ?> -- setko je ok, dalej chcem nieco vypisat do tabulky: Kód: <?php $spojenie = mysql_connect( "localhost", "root", "programing" ) or die( mysql_error() ); mysql_select_db( "moviesite" ) or die( mysql_error() ); $dotaz = "SELECT movie_name, movie_director, movie_leadactor " . "FROM movie"; $vysledok = mysql_query( $dotaz ) or die( mysql_error() ); $pocet_filmov = mysql_num_rows( $vysledok ); $film_zahlavie = <<<EOD <h2><center>Databaza filmovych recenzi</center></h2> <table width="70%" border="1" cellpadding="2" cellspacing="2" align="center"> <tr> <th>Nazov filmu</th> <th>reziser</th> <th>v hlavnej roli</th> </tr> EOD;
function zobraz_rezisera() { global $reziser_filmu; global $reziser; $dotaz_d = "SELECT people_fullname " . "FROM people " . "WHERE people_id='$reziser_filmu'"; $vysledky_d = mysql_query( $dotaz_d ) or die( mysql_error() ); $riadok_d = mysql_fetch_assoc( $vysledky_d ); extract( $riadok_d ); $reziser = $people_fullname; } function zobraz_hlavnu_rolu() { global $hlavna_rola_vo_filme; global $hlavna_rola; $dotaz_a = "SELECT people_fullname " . "FROM people " . "WHERE people_id='$hlavna_rola_vo_filme'"; $vysledky_a = mysql_query( $dotaz_a ) or die( mysql_error() ); $riadok_a = mysql_fetch_assoc( $vysledky_a ); extract( $riadok_a ); $hlavna_rola = $people_fullname; }
$filmy_podrobnosti = ''; while ( $riadok = mysql_fetch_array( $vysledok ) ) { $nazov_filmu = $riadok[ 'movie_name' ]; $reziser_filmu = $riadok[ 'movie_director' ]; $v_hlavnej_roli_filmu = $riadok[ 'movie_leadactor' ]; zobraz_rezisera(); $filmy_podrobnosti .=<<<EOD <tr> <td>$nazov_filmu</td> <td>$reziser</td> </tr> EOD; }
$filmy_podrobnosti .=<<<EOD <tr> <td>celkom filmov: $pocet_filmov</td> </tr> </table> EOD; $filmy_pata ="";
$filmy =<<<MOVIE $film_zahlavie $filmy_podrobnosti $filmy_pata MOVIE;
echo "v nasej databazi su $pocet_filmov filmy."; echo $filmy; ?> takze to by v podstate fungovalo. -- teraz nieco v podstate rovnake pridam a uz hlasi chybu: Kód: <?php $spojenie = mysql_connect( "localhost", "root", "programing" ) or die( mysql_error() ); mysql_select_db( "moviesite" ) or die( mysql_error() ); $dotaz = "SELECT movie_name, movie_director, movie_leadactor " . "FROM movie"; $vysledok = mysql_query( $dotaz ) or die( mysql_error() ); $pocet_filmov = mysql_num_rows( $vysledok ); $film_zahlavie = <<<EOD <h2><center>Databaza filmovych recenzi</center></h2> <table width="70%" border="1" cellpadding="2" cellspacing="2" align="center"> <tr> <th>Nazov filmu</th> <th>reziser</th> <th>v hlavnej roli</th> </tr> EOD;
function zobraz_rezisera() { global $reziser_filmu; global $reziser; $dotaz_d = "SELECT people_fullname " . "FROM people " . "WHERE people_id='$reziser_filmu'"; $vysledky_d = mysql_query( $dotaz_d ) or die( mysql_error() ); $riadok_d = mysql_fetch_assoc( $vysledky_d ); extract( $riadok_d ); $reziser = $people_fullname; } function zobraz_hlavnu_rolu() { global $hlavna_rola_vo_filme; global $hlavna_rola; $dotaz_a = "SELECT people_fullname " . "FROM people " . "WHERE people_id='$hlavna_rola_vo_filme'"; $vysledky_a = mysql_query( $dotaz_a ) or die( mysql_error() ); $riadok_a = mysql_fetch_assoc( $vysledky_a ); extract( $riadok_a ); $hlavna_rola = $people_fullname; }
$filmy_podrobnosti = ''; while ( $riadok = mysql_fetch_array( $vysledok ) ) { $nazov_filmu = $riadok[ 'movie_name' ]; $reziser_filmu = $riadok[ 'movie_director' ]; $v_hlavnej_roli_filmu = $riadok[ 'movie_leadactor' ]; zobraz_rezisera(); zobraz_hlavnu_rolu(); $filmy_podrobnosti .=<<<EOD <tr> <td>$nazov_filmu</td> <td>$reziser</td> <td>$hlavna_rola</td> </tr> EOD; }
$filmy_podrobnosti .=<<<EOD <tr> <td>celkom filmov: $pocet_filmov</td> </tr> </table> EOD; $filmy_pata ="";
$filmy =<<<MOVIE $film_zahlavie $filmy_podrobnosti $filmy_pata MOVIE;
echo "v nasej databazi su $pocet_filmov filmy."; echo $filmy; ?> kde je chyba ? vselico som poskusal poobzeral - navise je to prikald z knizky a aj tak m inefunguje. chyba znie : Kód: Warning: extract() [function.extract]: First argument should be an array in /var/www/tabulky/tabulka2.php on line 44
Warning: extract() [function.extract]: First argument should be an array in /var/www/tabulky/tabulka2.php on line 44
Warning: extract() [function.extract]: First argument should be an array in /var/www/tabulky/tabulka2.php on line 44
dik za pomoc
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 | 96 |
1. Asi máš zlý dopyt, ktorý vrátil false, a potom vyžaduješ extract prišom nedávaš pole ale bool -> false
2. phpDesigner mi hlási chyby aj v tých <<<NIECO NIECO; zápisoch 
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
1.skus trosku konkretnejsie napisat kde ma mproblem/ co mam opravit lebo presne neviem stale kde hladat chybu.
ak myslis zdrojak ktorym som vytvoril tabulku tak este pridam ten:
Kód: <?php $spojit = mysql_connect( "localhost", "*****", "*****" ) or die( "skontrolujte pripojenie k serveru" ); $tvorba = mysql_query( "CREATE DATABASE IF NOT EXISTS moviesite" ) or die( mysql_error() ); mysql_select_db( "moviesite" ); $filmy = "CREATE TABLE movie ( movie_id int( 11 ) NOT NULL auto_increment, movie_name varchar( 255 ) NOT NULL, movie_type tinyint( 2 ) NOT NULL default 0, movie_year int( 4 ) NOT NULL default 0, movie_leadactor int( 11 ) NOT NULL default 0, movie_director int( 11 ) NOT NULL default 0, PRIMARY KEY ( movie_id ), KEY movie_type ( movie_type, movie_year ) )"; $vysledky = mysql_query( $filmy ) or die( mysql_error() ); $typyfilmov = "CREATE TABLE movietype ( movietype_id int( 11 ) NOT NULL auto_increment, movietype_label varchar( 100 ) NOT NULL, PRIMARY KEY ( movietype_id ) )"; $vysledky = mysql_query( $typyfilmov ) or die( mysql_error() ); $ludia = "CREATE TABLE people ( people_id int( 11 ) NOT NULL auto_increment, people_fullname varchar( 255 ) NOT NULL, people_isactor tinyint( 1 ) NOT NULL default 0, people_isdirector tinyint( 1 ) NOT NULL default 0, PRIMARY KEY ( people_id ) )"; $vysledky = mysql_query( $ludia ) or die( mysql_error() ); echo "databaza bola uspesne vytvorena !"; ?>
2. mne inu chybu nehlasi, nebude to chyba na tvojej strane ?. mozes mi dat prosim ta vypis tej chyby co hlasi ? a vydis zeby v tych znackach bol problem ? lebo ja nie..
//edit.. k tomi bodu 1. . ked nahradim premennu $hlavna_rola_vo_filme cislom 1 tak uz vypise meno do kazdeho riadku stpca "v hlavnej roli" meno s movie_id 1 cize Jim Carrey.
neznacilo by to ze zly dopyt asi nebude ?
mimochodom pri priklade 3. vypise s chybou spravou aj vsetko ostatne, cize aj tabulku s nevyplnenim sltpcom "v hlavnej roli" - to len taky detail.
|
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 | 233 Bydlisko: Nové Zámky |
Kód: $filmy_podrobnosti .=<<<EOD
wotafak?
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Blackshadow píše: Kód: $filmy_podrobnosti .=<<<EOD wotafak? Klasická Heredoc syntax. 1daemon1 píše: ... Aj si skúšal tú QUERY spustiť napr. pomocou phpMyAdmin. Lebo problém môže byť aj v tom, že ti to nevráti ani jeden riadok (preto to nepíše chybu) a ty tam test pre taký prípad nikde nemáš (teda nie je aspo§ v tej časti kódu, ktorú som pozeral).
|
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 | 233 Bydlisko: Nové Zámky |
diki chrono, nevede som, co to je.
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
chrono píše: Aj si skúšal tú QUERY spustiť napr. pomocou phpMyAdmin. Lebo problém môže byť aj v tom, že ti to nevráti ani jeden riadok (preto to nepíše chybu) a ty tam test pre taký prípad nikde nemáš (teda nie je aspo§ v tej časti kódu, ktorú som pozeral).
neskusal vobec tak ja to nejako skusim (aj ked s tym nemam skusenosti). vkladanie do databazy a vytvorenie databazy mam urcite dobre, pretoze je to podla knizky a uz som s tym robil vela cviceni kde vyberanie fungovalo . az tu to nejde.
skusim ten QUERY cez phpmyadmin teda. ale podla mna musi byt chyba v tom tretom skripte v prvom prispevku.
//edit ako mam query spustit pomocou pp my admina ?
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | 96 |
Podľa mňa ti vráti false mysql_fetch_assoc. Pretože na 41. a 42. riadku máš mysql_query or die a tam to neskape. Zostáva už len možnosť, že si dostal 0 riadkov a tým pádom nemáš z fetch_assoc array, ale false.
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
ok, takze uz vieme nasledky nejakej chyby. stale neviem, ale, kde chybu hladat a co moze byt zle. databaza funguje, naplnovanie tiez. pokdial nahradim tento riadok :
Kód: "WHERE people_id='$hlavna_rola_vo_filme'"; tymto: Kód: "WHERE people_id='1'";
tak vypise do kazdeho riadku stlpca "v hlavnej roli" ako som uz pisal meno Jim Carrey.
nebude problem s premennou $hlavna_rola_vo_filme ?
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Mas tu premennu vobec niekde definovanu? Skus var_dump($hlavna_rola_vo_filme), co ti vypise?
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
vracia to NULL, ale taktiez "var_dump($reziser_filmu);" vracia NULL a ta funguje. vzdy je v tej knihe najprv priklad, potom vysvetlenie. proste v nej to je tak takze nechapem chybu. a mam pocit ze to aj ma byt null .
pokial nahradim $reziser_filmu hodnotou NULL tak uz ale zacne pisat chybu podobnu ako v prvom pripade, ked ale pridam hodnotu NULL premennej $hlavna_rola_vo_filme, stane sa to iste ako keby som ju nepridal.
hlavne ma metie to, ze v podstate funkcia zobraz_rezisera() je rovnaka ako funkcia v_hlavnej_roli() a pritom jedna funguje a druha nie.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
V tej problémovej funkcii si daj vypísať ten SELECT (ten, čo sa potom použije v mysql_query). Potom to vyskúšaj v phpMyAdmin a na 99% ti to nenájde ani jeden vyhovujúci riadok. (a keď to konečne urobíš, môžeme pokračovať, inak to nemá zmysel, keďže bez toho, aby si poskytol aj iné informácie, ako tie, čo si už niekoľkokrát napísal, nikto ti pravdepodobne neporadí, keďže nevieme, čo v tej databáze vlastne máš a čo presne s tým skriptom robíš)
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
s databazami sa hram nie moc dlho takze neviem ci napisem presne co si chcel takze po pridani do skryptu nasledujucej ukazky mi nevypisalo nic, ako keby som to tam ani nemal:
Kód: ... ... $hlavna_rola = $people_fullname; }
//problemova funkcia $dotaz_a = "SELECT people_fullname " . "FROM people " . "WHERE people_id='$hlavna_rola_vo_filme'"; $vysledky_a = mysql_query( $dotaz_a ) or die( mysql_error() ); echo "<table border=\"1\">"; while ( $riadok_a = mysql_fetch_assoc( $vysledky_a ) ) { echo "<tr>"; foreach( $riadok_a as $vypis ) { echo "<td>"; echo $vypis; echo "</td>"; } echo "</tr>"; } echo "</table>"; //koniec
$filmy_podrobnosti = ''; while ( $riadok = mysql_fetch_array( $vysledok ) ) { ... ...
k tomu phpmyadmin, s tym robit neviem  . prihlasil som sa ale nevedel osm co dalej, predpokladam ze chces aby som si to dal vypisat pomocou kolonky s nadpisom "Spustiť SQL príkaz(y) na servri "localhost":"
ale ako to mam vypisat ja neviem  .
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | 96 |
pred Kód: $dotaz_a = "SELECT people_fullname " . napíš echo Kód: echo $dotaz_a = "SELECT people_fullname " .
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
to ako myslis aby som urobil pomocou phpmyadmin hej ?
cize tam ma dat nieco taketo ? :
Kód: echo $dotaz_a = "SELECT people_fullname " . "FROM people " . "WHERE people_id='$hlavna_rola_vo_filme'";
alebo co bo som mimo z toho.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Jednoduchšie bude dať echo až za to priradenie a pred $vysledky_a = mysql_query(... A teda, pred ten riadok $vysledky_a = mysql_query(... prodaj niečo ako: Kód: echo "<pre>", $vysledky_a, "</pre>";
Potom sa ti tam zobrazí ten SELECT, ktorý sa použije pri tom volaní mysql_query (a to potom skopíruj do toho SQL okna v phpMyAdmin).
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
vypisalo:
"MySQL vrátil prázdny výsledok (tj. nulový počet riadkov). ( Dopyt zabral 0.0003 sek. )"
//
prikaz bol : SELECT people_fullname FROM people WHERE people_id=''
a vypisalo to co je hore.
ale ked si dam vypisat SQL prikaz co sa odosiela vo funkci zobraz_rezisera()
vypise:
SELECT people_fullname FROM people WHERE people_id='2'
SELECT people_fullname FROM people WHERE people_id='6'
SELECT people_fullname FROM people WHERE people_id='3'
cize to je spravne.
nechapem uz vobec.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Čomu nerozumieš? Ty sa z tej tabuľky pokúšaš vyberať riadky, ktoré majú people_id prázdny reťazec (a teda tam nič nie je). Také riadky tam ale nemáš a prípad, keď ti mysql_query nevráti ani jeden riadok tam nemáš ošetrený. Čiže, uprav tam tú možnosť pre prípad, že v tabuľke nebudú potrebné záznamy.
Inak ten tvoj problém pravdepodobne spôsobuje to, že na jednom mieste používaš hlavna_rola_vo_filme a na inom zase v_hlavnej_roli_filmu. Navyše je otázne, či je rozumné do funkcií predávať parametre cez globalné premenné.
PS: A aj keď upravíš tie názvy premenných a začne ti to fungovať, oprav aj tú možnosť, keď ti mysql_query nevrátia žiadne záznamy.
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
nechapal som tomu ze preco je vzdy ta premenna $hlavna_rola_vo_filme prazdna a $reziser_filmu nie. teraz je to skvele, dobre si mi to vysvetlil, dakujem. este tam pridam tu moznost  .
|
|
Stránka: 1 z 1
| [ Príspevkov: 19 ] | |
|