Gostovanje na Windows strežnikih, ponudba webhosting, ASP.NET, PHP, MySQL


Windows tehnična podpora
Podporni forum za uporabnike storitev spletnega gostovanja
Odgovori na to temo
Anketa...
WarMaker


Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26
Odgovori s citatom
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 Smile

hvala, lp

_________________
I know what you did last summer!
Poglej uporabnikov profilPošlji zasebno sporočilo
Pico
Site Admin

Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net
Odgovori s citatom
kot prvo: Izbrisal sem geslo iz tvojega posta, če je slučajno res pravilno! Ne priporočam javno razkazovanje gesel in dostopnih podatkov Confused

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! Cool

_________________
Site admin alias Labsy
Vsi nasveti in tehnične rešitve so podani v dobri veri in za ljudi z razčiščenimi pojmi o veljavni zakonodaji.
Odgovornost prevzemam izključno in samo za tiste posege, ki jih opravim lastnoročno.
Poglej uporabnikov profilPošlji zasebno sporočiloObišči avtorjevo spletno stranMSN Messenger - naslov
WarMaker


Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26
Odgovori s citatom
OK... hvala za spremembo gesla Smile

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?

_________________
I know what you did last summer!
Poglej uporabnikov profilPošlji zasebno sporočilo
Pico
Site Admin

Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net
Odgovori s citatom
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.

_________________
Site admin alias Labsy
Vsi nasveti in tehnične rešitve so podani v dobri veri in za ljudi z razčiščenimi pojmi o veljavni zakonodaji.
Odgovornost prevzemam izključno in samo za tiste posege, ki jih opravim lastnoročno.
Poglej uporabnikov profilPošlji zasebno sporočiloObišči avtorjevo spletno stranMSN Messenger - naslov
WarMaker


Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26
Odgovori s citatom
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:

<?
}
?>

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:
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

_________________
I know what you did last summer!
Poglej uporabnikov profilPošlji zasebno sporočilo
Pico
Site Admin

Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net
Odgovori s citatom
Tale koda:
if($result[1]){
?>
<input type="Radio" name="glasov" value="1">
<?

echo("$result[1]");
}
ne more delati!
Prav je takole:
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.

_________________
Site admin alias Labsy
Vsi nasveti in tehnične rešitve so podani v dobri veri in za ljudi z razčiščenimi pojmi o veljavni zakonodaji.
Odgovornost prevzemam izključno in samo za tiste posege, ki jih opravim lastnoročno.
Poglej uporabnikov profilPošlji zasebno sporočiloObišči avtorjevo spletno stranMSN Messenger - naslov
WarMaker


Pridružen/-a: Tor Mar 2004 21:46
Prispevkov: 26
Odgovori s citatom
OK... sem popravil, samo ne znam vstavit v tabele podatke...

Mi lahko poveste, kako?!
lp

_________________
I know what you did last summer!
Poglej uporabnikov profilPošlji zasebno sporočilo
Anketa...
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Časovni pas GMT + 1 ura, srednjeevropski - zimski čas  
Stran 1 od 1  

  
  
 Odgovori na to temo