Windows tehnična podpora
Podporni forum za uporabnike storitev spletnega gostovanja
This forum is part of windows webhosting service at www.hostmachine.net
 


Anketa...

To je neaktivna kopija originalnega foruma, prirejena za lazje indeksiranje z iskalnimi roboti.
Klikni tukaj za prehod na aktivni forum.
Click here to go to original active forum.


 
       Windows tehnična podpora Seznam forumov -> PHP
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
WarMaker



Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26

Objavljeno: 18.6.2004, 10:07    Naslov sporočila: Anketa...  

Imam probleme z anketo... Imam sledeče skripte:


povezi_se.php

<?php
$_host = "localhost";
$_database = "anketa";
$_username = "anketa";
$_password = "**********";

@mysql_connect( $_host, $_username, $_password) or die( "ERROR: ". mysql_error() );
@mysql_select_db( $_database ) or die( "ERROR: ". mysql_error() );
?>

dodaj_anketo.php

<?php
include_once("povezi_se.php");

if ( $_POST ) {
$vprasanje = trim( $_POST["vprasanje"] );
$odgovori = trim( $_POST["odgovori"] );

if ( $vprasanje && $odgovori ) {
mysql_query( "UPDATE poll_q SET active=0" ) or die( mysql_error() );
mysql_query( "INSERT INTO poll_q (q,a,active) VALUES ('$vprasanje','$odgovori',1)" ) or die( mysql_error() );
mysql_close();
header( "location: ankete.php" );
exit;
}
}
?>
<form action="<?=$_SERVER["PHP_SELF"];?>" method="post">
Vprašanje:<br />
&nbsp;&nbsp;&nbsp;<input name="vprasanje" type="text" style="width: 300px;" /><br /><br />
Odgovori:<br />
&nbsp;&nbsp;&nbsp;<textarea name="odgovori" cols="" rows="8" style="width: 300px;"></textarea><br /><br />
&nbsp;&nbsp;&nbsp;<input type="submit" value="Dodaj" />
</form>

anketa.php

<?php
include_once("povezi_se.php");

$sql = mysql_query( "SELECT * FROM poll_q ORDER BY active DESC" ) or die( mysql_error() );
$num = mysql_num_rows( $sql );
$votes = array_unique( explode(",", $_COOKIE["odgovori"]) );

for ($i=0; $i < $num; $i++) {
$assoc = mysql_fetch_assoc( $sql );
$answers = explode("n",$assoc["a"]);
$sql2 = mysql_query( "SELECT COUNT(*) FROM poll_a WHERE poll_id=$assoc[id]" ) or die( mysql_error() );
$votes_num = mysql_result($sql2, 0);

echo"<p style="width: 100%; font-size: 10pt; font-family: verdana;">n";
if ( in_array($assoc["id"],$votes) ) {
echo $assoc["active"]? "Trenutna anketa >>><br />n": null;
echo "$assoc[q]: $votes_num glasov<br />n";

foreach ($answers as $a_id => $answer) {
$current_num = mysql_result( mysql_query( "SELECT COUNT(*) FROM poll_a WHERE (a=$a_id && poll_id=$assoc[id])" ), 0 );
@$procent = round( $current_num * 100 / $votes_num ,1);

echo"$answer: $current_num glasov ($procent%)<br />";

echo"<table cellspacing="0" style="width: 500px;">n";
echo"<tr>";
echo"<td style="width: ". $procent ."%; background-color: #808080; border: 1px solid #808080;">&nbsp;</td>";
echo"<td style="width: ". (100 - $procent) ."%; background-color: #EAECF5; border: 1px solid #808080;">&nbsp;</td>";
echo"</tr>";
echo"</table>n";
}

echo"<br />";
} else {
echo"<form action="dodaj_glas.php" method="post" style="">n";
echo"<input type="hidden" name="poll_id" value="$assoc[id]" />n";

echo $assoc["active"]? "Trenutna anketa<br /><br />n": null;
echo "$assoc[q]:<br />n";

foreach ($answers as $a_id => $answer)
echo"<input type="radio" name="answer" value="$a_id" /> $answer<br />n";

echo"<input type="submit" value="Glasuj" />n";
echo"</form>n<br />";
}
echo"</p>n";
}
?>

in dodaj_glas.php

<?php
include_once("povezi_se.php");

if ( $_POST ) {
$poll_id = (int)$_POST["poll_id"];
$answer = (int)$_POST["answer"];
$sql = mysql_query( "SELECT * FROM poll_q WHERE id=$poll_id LIMIT 1" ) or die( mysql_error() );
$assoc = mysql_fetch_assoc( $sql );
$votes = explode("n", $_COOKIE["odgovori"]);

if ( $assoc && isset($_POST["answer"]) && !in_array($poll_id,$votes) ) {
mysql_query( "INSERT INTO poll_a (poll_id,a) VALUES($poll_id,$answer)" ) or die( mysql_error() );
array_push($votes,$poll_id);
setcookie("odgovori");
setcookie("odgovori",implode(",",$votes),time()+3600*24*300);
}
}

mysql_close();
header("location: ankete.php");
exit;
?>

Vse skupaj je na www.slo-games.net/anketa/

Problem pa je v tem, da mi noče naredit nove ankete... v bazi sem naredil točno tako, kot piše:

Tabela poll_q:
1
CREATE TABLE poll_q (
id int(10) unsigned NOT NULL auto_increment,
q varchar(255) NOT NULL default '',
a text NOT NULL,
active tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;

Tabela poll_a:
1
CREATE TABLE poll_a (
id int(10) unsigned NOT NULL auto_increment,
poll_id int(10) unsigned NOT NULL default '0',
a int(10) unsigned NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;

Sej si lahko greste ogledat -> up ime in geslo je tako in tako zgoraj napisano :)

hvala, lp
Nazaj na vrh  
Pico



Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net

Objavljeno: 18.6.2004, 11:07    Naslov sporočila:  

kot prvo: Izbrisal sem geslo iz tvojega posta, če je slučajno res pravilno! Ne priporočam javno razkazovanje gesel in dostopnih podatkov :?

Kot drugo:
Za rešitev problema priporočam, da po vsakem SQL QUERY-ju dodaš izpis samegy QUERY-ja, pa potem ročno vnašaš v MySQL - tako boš mogoče našel napako.
Torej - debugging! 8)
Nazaj na vrh  
WarMaker



Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26

Objavljeno: 18.6.2004, 11:26    Naslov sporočila:  

OK... hvala za spremembo gesla :)

Heh... s temi query-mi si me zelo zmedel... ki se ne raumem toliko v to... Kaj problem je v MySql bazi.. al PHP skripti?
Nazaj na vrh  
Pico



Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net

Objavljeno: 18.6.2004, 13:30    Naslov sporočila:  

Ja tkole nared, recimo:

takoj za SQL stavkom naredi ECHO tega stavka, pa ga ročno vnašej, pa glej, kaj se dogaja, npr., namesto:

$sql = mysql_query( "SELECT * FROM poll_q ORDER BY active DESC" ) or die( mysql_error() );

narediš nekaj podobnega, s tem da sproti vidiš vse SQL QUERY-je:

$sqls = "SELECT * FROM poll_q ORDER BY active DESC";
$sql = mysql_query($sqls) or die( mysql_error() );
echo "<br> " . $sqls;

Potem lahko ročno vnašaš vsak SQL stavek v bazo in vidiš, kje zadeva zašteka.
Nazaj na vrh  
WarMaker



Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26

Objavljeno: 19.6.2004, 22:10    Naslov sporočila:  

hmmm... nisem še tak PHPjevc... samo sem šel na www.3delavnica.com in sem najdel eno skripto, ki tudi ne dela! zdej.. sprašujem se zakaj mi nobena skripta ne dela.. Kaj morajo imet datoteke kej posebnega (kar Win server ne ponuja) al je samo - ker sem tako butast, da ne znam naštimat.. ?

link do ankete, ki jo imam na serverju : http://www.slo-games.net/index.php
link do ankete, ki se nahaja na 3delavnica: http://3delavnica.com/index.php?main=ucilnica_clanek&oddelek=6&clanek=96

PS: Če sledim navodilom... nekje na sredini strani piše tole:

Citiram: <?
}
?>

WTF ? Mah, saj ni tako hudo. Na začetku dobi vsebino tabele 'anketa' v array. Če gre vse po maslu izipše najprej 'vprašanje' ankete.


if($result[1]){
?>
<input type="Radio" name="glasov" value="1">
<?
echo("$result[1]");
}

Kaj bi pa naj pomenilo tole ?! Recimo da boste imeli v vaši anketi samo 3 možne odgovre, potem pustite field 'odgovor4' in 'odgovor5' prazen. Skripta pa potem preveri pač če ni nič zapisano ne bo ponudil tega odgovora. Simple.
Izgledalo bi naj nekako takole:


Ne razumem, KAM MORAM VSTAVIT TO: Citiram: if($result[1]){
?>
<input type="Radio" name="glasov" value="1">
<?
echo("$result[1]");
}


Pa še nekaj... ne piše, kako dodajat vprašanja in odgovore.. in sem vprašal kolega, pa mi je rekel, da se to postavlja v bazi... kako?


Hvala, lp
Nazaj na vrh  
Pico



Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net

Objavljeno: 24.6.2004, 19:56    Naslov sporočila:  

Tale koda: Citiram: if($result[1]){
?>
<input type="Radio" name="glasov" value="1">
<?
echo("$result[1]");
}
ne more delati!
Prav je takole:
Citiram: if($result[1]){
echo '<input type="Radio" name="glasov" value="1"> ';
echo("$result[1]");
}


Drugače pa PHP deluje odlično na vseh naših Win serverjih, je pa res, da se v določenih podrobnostih razlikuje od PHP-ja na Linux platformi. Predvsem je razlika v avtentikaciji uporabnikov, ki se tukaj rešuje drugače, pa tudi kjer je PHP skripta narejena tako, da uporablja, recimo, sendmail za pošiljanje pošte (kar nekateri programerji kar vzamejo za privzeto), je potrebno skripto v tem delu predelati, ker sendmaila ni instaliranega.
To so glavne razlike. Je še par manjših razlik, na splošno pa vse dela identično in brez problemov.
Nazaj na vrh  
WarMaker



Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26

Objavljeno: 1.7.2004, 09:13    Naslov sporočila:  

OK... sem popravil, samo ne znam vstavit v tabele podatke...

Mi lahko poveste, kako?!
lp
Nazaj na vrh  
 
       Windows tehnična podpora Seznam forumov -> PHP
Stran 1 od 1


Te strani so generirane samo za lazje indexiranje z iskalnimi roboti.
Prosimo, da uporabite povezavo na glavni forum, kjer lahko aktivno sodelujete s svojimi prispevki