Windows technical support
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 technical support Forum Index -> PHP
View previous topic :: View next topic  
Author Message
WarMaker



Joined: 16 Mar 2004
Posts: 26

Posted: 18.6.2004, 10:07    Post subject: 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
Back to top  
Pico



Joined: 18 Jan 2004
Posts: 250
Location: HostMachine.net

Posted: 18.6.2004, 11:07    Post subject:  

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)
Back to top  
WarMaker



Joined: 16 Mar 2004
Posts: 26

Posted: 18.6.2004, 11:26    Post subject:  

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?
Back to top  
Pico



Joined: 18 Jan 2004
Posts: 250
Location: HostMachine.net

Posted: 18.6.2004, 13:30    Post subject:  

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.
Back to top  
WarMaker



Joined: 16 Mar 2004
Posts: 26

Posted: 19.6.2004, 22:10    Post subject:  

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:

Quote: <?
}
?>

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: Quote: 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
Back to top  
Pico



Joined: 18 Jan 2004
Posts: 250
Location: HostMachine.net

Posted: 24.6.2004, 19:56    Post subject:  

Tale koda: Quote: if($result[1]){
?>
<input type="Radio" name="glasov" value="1">
<?
echo("$result[1]");
}
ne more delati!
Prav je takole:
Quote: 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.
Back to top  
WarMaker



Joined: 16 Mar 2004
Posts: 26

Posted: 1.7.2004, 09:13    Post subject:  

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

Mi lahko poveste, kako?!
lp
Back to top  
 
       Windows technical support Forum Index -> PHP
Page 1 of 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