Autor | Zpráva | ||
---|---|---|---|
luma64 Profil |
#1 · Zasláno: 2. 5. 2013, 12:57:15
Vyvyjam na mojom lokal.pc aplikaciu, u mna Apache/2.2.17 (Win32) mod_ssl/2.2.17 ;ked sa ma vykonat prikaz if (array_key_exists...vykona sa a aplikacia zobrazi pozadovane udaje. Na webserveri Apache/2.2.12 (Linux/SUSE) sa tento kod nevykona. v com je prosim problem? Mozte mi poradit? Dakujem.Kod:
. . $rs = sqlQuery($sql); for ($col=1; $col <= 16; $col++) { $pos = $row . '_' . $col; //hodnoty tbl_row a tbl_col dostanem zo selektu // potialto je to urcite v poriadku // Za tento if mi na webserveri kod neprelezie if (array_key_exists($pos, $rs)) { . . |
||
Tori Profil |
„//hodnoty tbl_row a tbl_col dostanem zo selektu“
Nespoléháte na zapnutou direktivu register_globals? (tj. že místo $_POST['neco'] používáte rovnou $neco , viz Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals))
|
||
luma64 Profil |
#3 · Zasláno: 2. 5. 2013, 13:37:08
Tori:
No ale selekt nema nic spolocne s formularom.Tomuto nerozumie. Je to - ako pisete - nastavenim servera ? |
||
Tori Profil |
#4 · Zasláno: 2. 5. 2013, 13:40:53
luma64:
Jo SELECT z databáze, myslela jsem formulářový <select> . Potom nevím... vypsal jste si (hostingu) proměnné $rs, $pos, $row, $col, jestli tam jsou data, která očekáváte?
|
||
luma64 Profil |
#5 · Zasláno: 2. 5. 2013, 13:52:43
[b]Tori[/b
Vypisane hodnoty: pos: 1_3 pole: Array |
||
Tori Profil |
#6 · Zasláno: 2. 5. 2013, 13:56:53
pole si vypište např. pomocí var_dump. Je nějaký rozdíl v tom, jaký výsledek dostanete na localhostu a na hostingu? Pokud ano, ukažte funkci sqlQuery. (I když teď mě z hlavy nenapadá žádná funkce pro práci s DB nebo s poli, která by se lišila na win/linuxu. Ale stát by se to mohlo.)
|
||
luma64 Profil |
#7 · Zasláno: 2. 5. 2013, 15:13:02
Vyzera to, ako by $rs nebolo naplnene. Vytvaram ho spustenim
$sql = "select concat(t.tbl_row,'_',t.tbl_col) as pos, t.tbl_id, t.sub_id from redips_timetable t where left(t.StartTime,10) like '%$datumvykonu%'"; $rs = sqlQuery($sql); function sqlQuery($sql) { global $db_conn; global $rs; . . Selekt nad db zaznamy vrati. |
||
aDAm Profil |
#8 · Zasláno: 2. 5. 2013, 15:34:49
fuj global to nejde předat te funkci vše co je potřeba?
|
||
luma64 Profil |
#9 · Zasláno: 2. 5. 2013, 15:43:01
Funkciu som niekde opisal, poviem pravdu, nemam skusenost s poliami.
function sqlQuery($sql) { global $db_conn; global $rs; // execute query $db_result = mysql_query($sql, $db_conn); // if db_result is null then trigger error if ($db_result === null) { trigger_error(mysql_errno() . ": " . mysql_error() . "\n"); exit(); } // prepare result array $resultSet = Array(); // if resulted array isn't true and that is in case of select statement then open loop // (insert / delete / update statement will return true on success) if ($db_result !== true) { // loop through fetched rows and prepare result set while ($row = mysql_fetch_array($db_result, MYSQL_NUM)) { // first column of the fetched row $row[0] is used for array key // it could be more elements in one table cell $resultSet[$row[0]][] = $row; } } // return result set return $resultSet; } |
||
Tori Profil |
#10 · Zasláno: 2. 5. 2013, 16:55:00
Jestli toto je kompletní kód funkce, tak
1) řádek č.3 je zbytečný, s proměnnou se nikde dál nepracuje, vyhodila bych. Proměnnou $db_conn bych radši funkci předávala jako nepovinný parametr. Pokud ho neuvedete, tak se automaticky použije naposledy použité DB spojení. (= využijete to jen v případě, že budete v jednom skriptu používat několik různých připojení k DB). 2) podmínka na ř.7 by měla správně být: if ($db_result === false) { - mysql_query nevrací nikdy NULL (resp. v dokumentaci není nic takového popsané).
3) podmínka na ř.15 by měla vypadat spíš takto: if (!is_bool($db_result)) { , protože chceme odfiltrovat jak dotazy, které nevracejí žádná data (DELETE apod., vrací true), tak ty, které selhaly (vrací false).
„Vyzera to, ako by $rs nebolo naplnene.“ Takže nastala některá ze dvou možností: buď dotaz selhal a kvůli špatně napsané podmínce na ř.7 jste chybu nezachytil (ale v tom případě by se mělo zobrazit varování na ř.17), anebo dotaz je správně a jen nevrací žádné výsledky. |
||
Časová prodleva: 4 dny
|
|||
luma64 Profil |
#11 · Zasláno: 6. 5. 2013, 17:30:54
Tori:
No problem bol v tom, ze mi nevypisovalo hodnoty z dovodu, ze som mal rozdielne php verzie a precoval som s konverziou datumu. V tom kode to nie je viditelne. Dakujem za pomoc. |
||
Časová prodleva: 11 let
|
0