Autor | Zpráva | ||
---|---|---|---|
pds Profil |
#1 · Zasláno: 4. 9. 2006, 09:34:24 · Upravil/a: pds
Zdravím .
Na svojej stránke mám už dlhšiu dobu anketu, no prestal ami z ničoho nič fungovať a vypisuje to len nejaké chyby. Som v php lama , tak vás prosím o radu kde by mohla byť chyba. Môžem zaslať aj zdroják ak bude treba. Mám pocit že na hoste niečo prerábali a odvtedy to nefunguje... Dotyčná stránka Dík. PS: Treba kliknúť a skúsiť hlasovať. |
||
Casero Profil |
#2 · Zasláno: 4. 9. 2006, 09:42:47
pds
myslíš ta čeština, jinak to funguje...aspon to tak vypadá...zkus mrknout na kodovani a nastavit všude stejný, i když nevím co mohl měnit host na tom |
||
pds Profil |
#3 · Zasláno: 4. 9. 2006, 10:30:43
nie tá čeština ale to keď klikneš na hlasovanie ...
|
||
Joker Profil |
#4 · Zasláno: 4. 9. 2006, 10:38:48
Problém je nejspíš jen jedno varování, a to tohle:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/storage/users/p/d/s/pdsoftware/anketa/anketa_spracuj.php on line 10 To ostatní už je jenom důsledkem tohohle. Na řádku 10 máte funkci mysql_fetch_array(), která pracuje s výsledkem nějakého dotazu. Zkuste se podívat, jak vypadá funkce mysql_query(), která vytvoří ten výsledek. Anebo sem pošlete prvních 10 řádků toho skriptu ;) |
||
Joker Profil |
#5 · Zasláno: 4. 9. 2006, 10:44:22
Mimochodem, text pod anketou: Není Questbook (kniha výprav), ale Guestbook (kniha návštěv)
|
||
pds Profil |
#6 · Zasláno: 4. 9. 2006, 11:38:43
<?php
function hlasuj($id, $answer) { //definovanie globalnych premennych global $HTTP_COOKIE_VARS; //kontrola ci uz nebolo hlasovane if ($HTTP_COOKIE_VARS['anketa'.$id.'Voted']) { return; } //DB select $result = MySQL_Query("SELECT odpovede, separator, vysledky FROM ankety WHERE id = '$id'"); $row = MySQL_Fetch_Array($result); //rozdelenie retazca odpovedi do pola $options = explode($row['separator'],$row['odpovede']); //zistime kolko je moznosti (odpovedi) $options_count = count($options); //ak hlasujem prvy krat (retazec vysledky je prazdy) //tak naplnim retazec v tvare 0separator0 ... if (empty($row['vysledky'])) { for ($i=0; $i<$options_count; $i++) { $tmp .= '0'.$row['separator']; } //odstranime separator z konca retazca $row['vysledky'] = substr ($tmp, 0 , strlen($tmp)-strlen($row['separator'])); } //rozdelenie retazca vysledkov do pola $votes = explode ($row['separator'],$row['vysledky']); //pridanie hlasu $votes[$answer]++; //zlucenie hodnot pola spat do retazca $vote_results = implode ($row['separator'], $votes); //zapis vysledko do DB $result = MySQL_Query("UPDATE ankety SET vysledky = '$vote_results' WHERE id = '$id'"); //zapis cookie v tvare napr. anketa1Voted = 1 //nastavenie expiracie na 7 dni SetCookie('anketa'.$id.'Voted', '1', time()+(60*60*60) ); //navrat return; |
||
Joker Profil |
#7 · Zasláno: 4. 9. 2006, 11:46:18
OK. Nemáte tam nijak podchycenou případnou chybu. Za řádek
$result = MySQL_Query("SELECT odpovede, separator, vysledky FROM ankety WHERE id = '$id'"); přidejte ještě tento řádek: if(!$result) die('Chyba MySQL: '.mysql_error()); Uvidíte, co Vám to napíše. |
||
Casero Profil |
#8 · Zasláno: 4. 9. 2006, 11:47:46
pds
ale jestli ste nic neměnil, a předtím to jelo, a po nějakém zasahu hostingu, ne..je všecko v pořádku u vás v db?? |
||
pds Profil |
#9 · Zasláno: 4. 9. 2006, 11:52:40
> Joker . no pridal som to tam a toto je výsledok:
Chyba MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'separator, vysledky FROM ankety WHERE id = '1'' at line 1 |
||
pds Profil |
#10 · Zasláno: 4. 9. 2006, 11:55:13
> Casero.
No ja dúfam že ano |
||
Joker Profil |
#11 · Zasláno: 4. 9. 2006, 12:14:05
pds
Fajn, takže je chyba v tom SQL dotazu. Bohužel zrovna "You have an error in your SQL syntax" (chyba SQL syntaxe) je taková všeobecná chyba... SELECT odpovede, separator, vysledky FROM ankety WHERE id = '1' Vidíte v tom někdo nějakou syntaktickou chybu? ... ... Jo, jedna věc mě napadla: Jestli se hrabali na serveru, nejspíš tohle bude důsledek upgrade na novější verzi MySQL... takže jediné co mě napadá, že v novější verzi přidali nějaké nové vyhrazené slovo, nejspíš teda "separator". Takže zkuste tohle: $result = MySQL_Query("SELECT `odpovede`, `separator`, `vysledky` FROM `ankety` WHERE id = '$id'"); |
||
krteczek Profil |
#12 · Zasláno: 4. 9. 2006, 12:27:07
napadlo mne že by mohla db žádat aby to bylo číalo int
a je lepší nejdříve dotaz sepsat a teprve potom ho použít:-)
ale myslím si že nikde neošetřuje hodnoty proměnných, podle kodu je to psane ještě pro php3, takže register_globals je na 100% off a script počítá že je on... všechny proměnné které taháš z postu nebo getu přepiš na: $_POST['nazev_proměnné'] a $_GET['název_proměnné'] //podle toho jakou metodou je odesíláš z formuláře krteczek |
||
pds Profil |
#13 · Zasláno: 4. 9. 2006, 12:32:41
>>Joker
Díky moc už to fičí. :) Ďakujem aj ostatním za pomoc . |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0