Avatar billede smolle Nybegynder
08. december 2006 - 09:02 Der er 17 kommentarer og
1 løsning

Opdatering af database virker ikke.

Er der nogen der kan fortælle mig hvorfor dette ikke virker:

<table align="center">
                            <?
                                $db = mysql_connect("***.***.*.*", "*******", "**********");
                                mysql_select_db("csmtacs", $db);
                                $foresp = mysql_query("SELECT date, name, screen, map, side, league, skills, comments, rating, votes FROM tacs WHERE id='$tac' ORDER BY date DESC LIMIT 0, 20");
                                while($data = mysql_fetch_array($foresp)){
                                echo "
                                <tr>
                                    <td colspan='8' align='center'><img src='$data[2]'</td>
                                </tr>";
                                ?>
                                <tr>
                                    <td class="list">Dato</td>
                                    <td class="list" width="150">Navn</td>
                                    <td class="list">Map</td>
                                    <td class="list">Side</td>
                                    <td class="list">League</td>
                                    <td class="list">Skills</td>
                                    <td class="list">Kommentar</td>
                                    <td class="list">Rating</td>
                                </tr>
                                <?
                                if($data[9] == 0)
                                    {
                                    $avgrating = $data[8]/1;
                                    }
                                else
                                    {
                                    $avgrating = $data[8]/$data[9];
                                    }
                                echo "
                                <tr>
                                    <td class='list' valign='top'>";
                                echo date(" j-n-Y H:m", $data[0]);
                                echo "
                                    </td>
                                    <td class='list' valign='top'>$data[1]</a></td>
                                    <td class='list' align='center' width='50' valign='top'>$data[3]</td>
                                    <td class='list' align='center' width='50' valign='top'>$data[4]</td>
                                    <td class='list' align='center' width='50' valign='top'>$data[5]</td>
                                    <td class='list' align='center' width='50' valign='top'>$data[6]</td>
                                    <td class='list' valign='top'>$data[7]</td>
                                    <td class='list' align='center' width='50' valign='top'>$avgrating</td>
                                </tr>";
                                ?>
                            </table>
                            <table align="center">
                            <?
                            if(isset($_POST["tac_rating"]))
                            {
                                $tac_rating = $_POST["tac_rating"];
                                $newrating = $data[8]+$tac_rating;
                                $newvotes = $data[9]+1;
                            mysql_query("UPDATE tacs SET rating = '$newrating', votes = '$newvotes' WHERE id='$tac'") or die(mysql_error());
                            echo "Din stemme er modtaget.";
                            } else
                            {
                            ?>
                                <tr>
                                    <td class="main" align="center">Giv rating til denne taktik:
                                    <form METHOD=POST ACTION=<? echo $PHP_SELF; ?>>
                                    <SELECT NAME="tac_rating" class="add">
                                    <option value="1">1</option>
                                    <option value="2">2</option>
                                    <option value="3">3</option>
                                    <option value="4">4</option>
                                    <option value="5">5</option>
                                    </SELECT>
                                    <INPUT TYPE=SUBMIT VALUE=Tilføj class="add">
                                    </form>
                                    </td>
                                </tr>
                            <?
                            }
                            }
                            ?>
                            </table>

Det der skulle ske var, at der først bliver vist en bestemt post i databasen og nedenunder skal man så kunne give karakter til det der bliver vist. Siden viser fint det jeg beder om at få skrevet ud, men jeg kan ikke få den til at opdatere databasen med den nye karakter.
Som det er nu, stopper den med at vise min tabel når jeg trykker på Tilføj, men viser stadig karaktervælgeren. Da jeg rodede med det i går fik jeg den til at skrive "Din karakter er modtaget", men der blev stadig ikke smidt noget i databasen.
Avatar billede tdafoobar Nybegynder
08. december 2006 - 09:08 #1
"Din karakter er modtaget" er ikke defineret i den kode du har postet.

mysql_error() bør give dig en fejlmeddelse, hvis ikke.. så er det ikke en fejl.
Avatar billede smolle Nybegynder
08. december 2006 - 09:25 #2
Undskyld, jeg mener selvfølgelig "Din stemme er modtaget". Jeg har ikke på noget tidspunkt fået nogen fejlmeddelelse fra mysql_error. Har faktisk ikke fået nogen fejl på noget tidspunkt, men der sker bare ikke det jeg vil have til at ske.
Det jeg selv har overvejet er den sidste } som jeg har sat ind. Den slutter jo den while, som jeg sætter i gang øverst. Den while burde vel også sluttes inden min form hvis det er rigtigt? Kan bare ikke finde ud af hvordan.
Avatar billede tdafoobar Nybegynder
08. december 2006 - 09:35 #3
dvs. der er ingen fejl i koden, du har bare kodet den til at gøre noget forkert.

Er lidt svært at hjælp med at rette :p , men du kunne jo starte med at debugge dine SQL-statements ved at outputte dem, og poste (outputted af dem!) her, ligesom du kan lave var_dump af din $_POST
Avatar billede smolle Nybegynder
08. december 2006 - 10:01 #4
Jeg har jo allerede skrevet informationerne ud i tabellen ovenover og der viser den jo fint værdierne?
Avatar billede olebole Juniormester
08. december 2006 - 13:00 #5
<ole>

- men du spørger vel for at få dit problem løst ... vel ikke for at diskutere det emne, du ikke selv kan overskue, med de, der prøver at hjælpe dig  =)

Det tdafoobar råder dig til, er det første punkt i en standard SQL fejlfindings procedure ... så bedre råd kan du nok ikke få på nuværende tidspunkt  ;o)

/mvh
</bole>
Avatar billede smolle Nybegynder
08. december 2006 - 13:04 #6
Jeg ønsker skam ikke at diskutere emnet, jeg er bare ikke sikker på hvad det er han vil have mig til :) Jeg forstår ikke helt hvad det er i vil have at se?
Avatar billede olebole Juniormester
08. december 2006 - 13:11 #7
Øverst i dokumentet kan du skrive:

print "<xmp>";
var_dump();
print "</xmp>";

Hvis du tjekker med denne kode i IE, får du en velformateret liste over de post-variabler, dokumentet modtager.

Dernæst kan du ved din update skrive:
    print "UPDATE tacs SET rating = '$newrating', votes = '$newvotes' WHERE id='$tac'";
    mysql_query("UPDATE tacs SET rating = '$newrating', votes = '$newvotes' WHERE id='$tac'") or die(mysql_error());

Hvad de to udskriver, kunne være interessant at se  =)
Avatar billede olebole Juniormester
08. december 2006 - 13:12 #8
print "<xmp>";
var_dump($_POST);
print "</xmp>";

- skulle der selvfølgelig stå  ;o)
Avatar billede smolle Nybegynder
08. december 2006 - 13:41 #9
Ahh.. Mange tak, jeg forstår :)

Nå, men det den skriver ud er inden jeg giver karakter er:
array(0) {
}

Hvis jeg så prøver at give en karakter, får jeg følgende besked:
array(1) {
  ["tac_rating"]=>
  string(1) "2"
}

Og her har jeg så givet karakteren 2.
Avatar billede olebole Juniormester
08. december 2006 - 14:00 #10
yups, det ser korrekt ud. Så må du også lige prøve den anden, jeg viste i (08/12-2006 13:11:54)  ;o)
Avatar billede smolle Nybegynder
08. december 2006 - 14:07 #11
Hvis jeg skriver:
print "UPDATE tacs SET rating = '$newrating', votes = '$newvotes' WHERE id='$tac'";

sker der ingenting. Jeg tror aldrig den udfører dette:

if(isset($_POST["tac_rating"]))
                            {
                                $tac_rating = $_POST["tac_rating"];
                                $newrating = $data[8]+$tac_rating;
                                $newvotes = $data[9]+1;
                            mysql_query("UPDATE tacs SET rating = '$newrating', votes = '$newvotes' WHERE id='$tac'") or die(mysql_error());
                            echo "Din stemme er modtaget.";
Avatar billede olebole Juniormester
08. december 2006 - 14:36 #12
Jo, denne betingelse:
    if(isset($_POST["tac_rating"]))

- er jo opfyldt, når $_POST["tac_rating"] er 2  =)

Prøv at skrive:
    if(isset($_POST["tac_rating"]))
                            { print "Hertil går det";
Avatar billede smolle Nybegynder
08. december 2006 - 14:47 #13
Selv hvis jeg prøver kun at udskrive sætningen "Hertil går det", så virker det ikke. Jeg får ikke den sætning at se, men beholder jeg var_dump i toppen, kan den stadig udskrive indholdet af $_POST["tac_rating"] :/
Avatar billede olebole Juniormester
08. december 2006 - 15:24 #14
Det fatter jeg ikke ...?!??!!!
Avatar billede smolle Nybegynder
08. december 2006 - 15:27 #15
Nej, jeg synes også det virker højst ulogisk. Nu er siden hostet hos frac.dk, ved ikke om de har problemer i øjeblikket eller hvad? Hvis du vil se hvad der sker er det denne side jeg roder med http://csmtacs.frac.dk/details.php?tac=22. Det er altså på details.php det foregår.
Avatar billede smolle Nybegynder
08. december 2006 - 15:59 #16
Nu har jeg ændret lidt på det og fik spurgt en af mine venner over Messenger og kom frem til, at det er fordi variablen $tac ikke kommer videre... Hvis du prøver at stemme på siden nu, så ser det lidt mere rigtigt ud. Jeg skal bare have viderebragt den rigtige værdi i $tac.
Avatar billede smolle Nybegynder
08. december 2006 - 18:32 #17
YES! Nu har jeg fået det til at virke! Jeg vil dog gerne give jer pointene som tak for hjælpen. Bare kom med et svar.
Avatar billede smolle Nybegynder
17. marts 2011 - 20:13 #18
Lukker spørgsmål.
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