Avatar billede nicocarlos Nybegynder
19. september 2003 - 01:10 Der er 21 kommentarer og
1 løsning

Notice som ikke skal være der:

Og har lige taget en kæmpe tutorials: Og får følgende notice hvordan kan jeg ændre dem:

Notice: Undefined index: id in .php on line 9
Line 9:$id = $_GET['id'];

Notice: Uninitialized string offset: 0 in  .php on line 27
line 27: if ($ip == $ip_array[$i]) {

Notice: Uninitialized string offset: 1 in  .php on line 27
line 27: if ($ip == $ip_array[$i]) {

Notice: Undefined index: display in php on line 163
line 163:    }

Notice: Undefined variable: notselected in php on line 2
line 2: if ($notselected) {

Notice: Undefined variable: already_voted in php on line 4
line 4: } elseif ($already_voted) {

Notice: Undefined variable: totalvotes in php on line 81
line 81: $totalvotes = $totalvotes + $vote_array[$i];


håber at der er en som kan hjælpe til at få det rigtigt, takker
Avatar billede anhansen Nybegynder
19. september 2003 - 07:54 #1
1. (ln 9)Den mener ikke id er sat. Når du bruger _GET skal du kunne se i adressen
side.html?id="noget"
2-3.(ln 27) Det må være noget med at du igen ikke har puttet noget ind i arrayet på plads 0 og 1.
4. (ln 163) Ved ikke helt, tjeck at der er lige mange { og }
5. (ln 2) $notselected har ikke fået nogen værdi, derfor kan du ikke spørge på den.
6. (ln 4) Det samme som 5.
7. (ln 81) Det samme, vær sikker på at $totalvotes altid har en værdi.. Også første gang.
Avatar billede erikjacobsen Ekspert
19. september 2003 - 08:01 #2
Mange tutorials er efterhånden alt for gamle, og burde fjernes eller revideres.

$id = isset($_GET['id'])?$_GET['id']:"";
Avatar billede anhansen Nybegynder
19. september 2003 - 09:08 #3
Bare lige for at skrive det lidt mere "letlæseligt".
Så er ovenstående bare en komprimeret if-sætning, altså:
if(isset($_GET['id']){
    $id = $_GET['id'];
}
else{
    $id = "";
}
Avatar billede nicocarlos Nybegynder
19. september 2003 - 10:57 #4
den stykke ved line 163 ser sådan her ud:
$query = "SELECT * FROM $pollip_tablename";
    $result = mysql_query($query, $linkid);
    while($ip_data = mysql_fetch_row($result)){
        $ip_array[] = $ip_data[0];
    }
Jeg kan ikke lige se hvad der er galt
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:00 #5
Og line 27:
if ($ip == $ip_array[$i]) {, hvordan kan jeg ændre den til rigtig

er det fordi at der kun står [$i]) og der skal stå [$ip])
Avatar billede erikjacobsen Ekspert
19. september 2003 - 11:11 #6
Vi kan ikke se det alene på den ene linie. Men jeg gætter på du skal have

$query = "SELECT * FROM $pollip_tablename";
    $result = mysql_query($query, $linkid);
    $ip_array = Array();
    while($ip_data = mysql_fetch_row($result)){
        $ip_array[] = $ip_data[0];
    }
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:17 #7
så siger den følgende:
Notice: Undefined index: display in .php on line 164

skal jeg poste hele molevitten ind her==
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:19 #8
<?php
   
include("pollconfig.php");
$vote_string = "";   
$vote_array = "";
$ip_array = "";
$selection = (int) $_POST['select'];
$ip = $_SERVER['REMOTE_ADDR'];
$id = isset($_GET['id'])?$_GET['id']:"";


   
function html_header() {
        echo "<LINK REL=\"stylesheet\" HREF=\"pollstyle.css\" TYPE=\"text/css\">";
}

   
function search_ip() {
        global $ip;
        global $ip_array;
               
        $result = 0;
        $num = count($ip_array);
       
                           
        for ($i=0; $i<=$num; $i++) {
            if ($ip == $ip_array[$i]) {
                return 1;
            }
        }
    }
   


   
function storeResult() {
        global $linkid;
        global $selection;
        global $vote_string;
        global $vote_array;
        global $pollarchive_tablename;
        global $id_poll;
       
               
        //increment values
        $temp = $vote_array[$selection - 1];
        $vote_array[$selection - 1] = $temp + 1;
       
        $vote_string = implode (",", $vote_array);
               
        $query = "UPDATE $pollarchive_tablename SET string_answer = '$vote_string' WHERE poll_id = $id_poll";
        $result = mysql_query($query, $linkid);   
        if(!mysql_affected_rows($linkid)){
            echo "<FONT CLASS='basictext' COLOR='#FF0000'>Error: Unable to Update Database</FONT>";
        }
       
        $selection= 0;
        $select = 0;
    }
   
   
   
function displayResult() {
        global $vote_array;
        global $vote_option;
        global $optionNum;
        global $pollQuestion;
        global $resultWidth;
        global $bar;
               
        $innerWidth = $resultWidth - 32;
               
    ?>        <DIV ALIGN="CENTER"><CENTER>
            <LINK REL="stylesheet" HREF="pollstyle.css" TYPE="text/css">
            <TABLE WIDTH="<?php echo $innerWidth; ?>" BORDER="0" CELLPADDING="7" CELLSPACING="0">
            <TR><TD COLSPAN="2">
            <br><FONT CLASS="question"><B><?php echo $pollQuestion; ?></B></FONT><BR><BR>
            </TD></TR>
    <?php
        for ($i=0; $i<$optionNum; $i++) {
            $totalvotes = $totalvotes + $vote_array[$i];
        }
       
        for ($i=0; $i<$optionNum; $i++) {
           
        $result = $vote_array[$i];
        $options = $vote_option[$i];
       
        $percent = 0;
        $percentage = 0;
        $width = 1;
       
        if ($totalvotes != 0){
        $percent =  ($result / $totalvotes) * 100;
        $percentage = number_format($percent, 1);
        $percent = (integer) $percent;
        $width = $percent * 1.2;
        }
               
        echo "<TR>\n";
        echo "<TD WIDTH='40%'>\n";
        echo "<FONT CLASS='options'>$options</FONT>\n";
        echo "</TD>\n";
        echo "<TD WIDTH='60%'>\n";
        echo "<IMG SRC='$bar' WIDTH='$width' HEIGHT='9' ALT='$percentage%'>\n<FONT CLASS='options'>";
        echo " $result ($percentage%)</FONT>\n";
        echo "</TD>\n";
        echo "</TR>\n";
        }
       
        echo "<TR>\n";
        echo "<TD WIDTH='100%' COLSPAN='2'>\n";
        echo "<BR><br><center><FONT CLASS='options'><B>Total Votes: $totalvotes</B></FONT><BR><BR>\n";
        echo "</TD>\n";
        echo "</TR>\n";
    ?>
    </TABLE></CENTER>
        </DIV><br>
    <?php
    }
   
   
   
   
$linkid = mysql_connect("$mysql_hostname", "$mysql_username", "$mysql_password");   
   
    if(!$linkid) {
        echo "<FONT CLASS='basictext' COLOR='#FF0000'><B>Error: Failed to Connect to Database</B></FONT>";
    } else {
        if(!mysql_select_db($mysql_database, $linkid)) $error = 1;
    }
    if ($id) {
        $query = "SELECT * FROM $pollarchive_tablename WHERE poll_id = $id";
    } else {
        $query = "SELECT * FROM $pollarchive_tablename ORDER BY poll_id DESC";
    }
    $result = mysql_query($query, $linkid);
    $query_data = mysql_fetch_row($result);
    $id_poll = $query_data[0];
    $pollQuestion = $query_data[2];
    $optionNum = $query_data[4];
    $string_option = $query_data[5];
    $vote_string = $query_data[6]; 
   
    $query = "SELECT * FROM $pollsettings_tablename";
    $result = mysql_query($query, $linkid);
    $setting_data = mysql_fetch_row($result);
    $resultWidth = $setting_data[4];
    $textcolor = $setting_data[8];
    $bar = $setting_data[11];
   
    $query = "SELECT * FROM $pollip_tablename";
    $result = mysql_query($query, $linkid);
    $ip_array = Array();
    while($ip_data = mysql_fetch_row($result)){
        $ip_array[] = $ip_data[0];
    }

$vote_array = explode (",", "$vote_string");
$vote_option = explode(",", "$string_option");
   
   
    $found = search_ip();
    $display = $_GET['display'];
   
    if($display) {
        //do nothing
    } elseif ($_COOKIE['voted'] == 1 && $found == 1)  {
        $already_voted = 1;
    } elseif (!$selection) {
        $notselected = 1;
    } else {
        $vote_sel = 1;
        $expiretime = time() + 31536000;
        setcookie("voted", $vote_sel, $expiretime);
        if (!$found) $query = "INSERT INTO $pollip_tablename VALUES ('$ip')";
       
        $result = mysql_query($query, $linkid);
       
        if(!mysql_affected_rows($linkid)){
            die ("Error: Unable to Update Database");
        }
       
    }
?>
Avatar billede erikjacobsen Ekspert
19. september 2003 - 11:25 #9
Er det denne linie, den brokker sig over: $display = $_GET['display'];
Tror du ikke du skal gøre ca. det samme som før ;))

Sikke da noget rodet kode - kan du selv finde rundt i det?
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:28 #10
nej jeg synes faktisk at det var ret indviklet tutorial :(
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:33 #11
Erik, den brokker sig ikke over den line, du lige nævnte underligt nok:
Den brokker sig stadig over line 27.
men jeg prøver lige at ændre den til:
$display = isset($_GET['display'])?$_GET['id']:"";
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:34 #12
Det virkede men mnagler stadig den lini 27 :)
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:37 #13
Notice: Undefined variable: totalvotes in .php on line 81, der mangler stadig også den lien 81, undskyld..
:)
Avatar billede erikjacobsen Ekspert
19. september 2003 - 11:39 #14
$display = isset($_GET['display'])?$_GET['display']:"";

skal det nok være. Jeg kan ikke umiddelbart se hvilke linier der giver hvilke
fejl. Men måske vi i stedet for skulle omstrukterere det hele? Problemet
ser ikke ud til at være noget særligt.
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:41 #15
jeg vil meget gerne have vi omstrukturerer det, hvis du gider hjælpe med det, bare det stadig virker med de andre php sider der også er med i scriptet :)
$display = isset($_GET['display'])?$_GET['id']:""; virkede fint.

Mangler egentlig kun line 27,81
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:51 #16
Og så lige line 2 og 4 i dette:
<?php
    if ($notselected) {
        echo "<CENTER><FONT CLASS='basictext' COLOR='#FF0000'><B>Please select an option to vote!</FONT></CENTER>";
    } elseif ($already_voted) {
        echo "<CENTER>";
        echo "<FONT CLASS='basictext' COLOR='#FF0000'><B>You have already voted this poll</B></FONT>";
        echo "</CENTER>";
    } else {
        storeResult();
    }
   
    html_header();
    displayResult();

?>
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:53 #17
$display = isset($_GET['display'])?$_GET['id']:""; virkede ikke fint, hehe det er selvfølgelig $display = isset($_GET['display'])?$_GET['display']:"";
Avatar billede erikjacobsen Ekspert
19. september 2003 - 11:53 #18
Har du et link til den tutorial?

Nej
$display = isset($_GET['display'])?$_GET['id']:"";
virker ikke. Prøv at læse hvad der står *g*
Avatar billede nicocarlos Nybegynder
19. september 2003 - 11:56 #19
nej, det har jeg desværre ikke, men jeg kan sende dig filerne jeg har, skal jeg gøre det? Men ville måske være synd at omstrukturer det, fordi vi mangler kun at slippe af med 3-4 notice
Avatar billede erikjacobsen Ekspert
19. september 2003 - 12:01 #20
Hvorfor ingen link? Du har haft fingre i "en kæmpe tutorials"´- hvor kommer
den fra?

Måske er det gjort ved at slippe af med de notices, men mon den så virker.
Leg selv videre. Jeg gider ikke bøvle med at lave den om hvis jeg kan få
fat i originalen, og en beskrivelse ud over koden (som jeg ikke orker at
sætte mig ind i)
Avatar billede nicocarlos Nybegynder
19. september 2003 - 12:02 #21
ja jeg giver også op, har lige set admin delen, den er ALT for omfattende, kan du ikke et godt link til en simpel poll tutorial eller script
Avatar billede nicocarlos Nybegynder
20. september 2003 - 18:47 #22
hmm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester