Avatar billede flashrider Nybegynder
11. oktober 2004 - 02:40 Der er 9 kommentarer

For hver gang man går ind på siden skal den give et hits

Hejsa, jeg er ved at lave sådan man kan se hvor mange der har set ens profil, men det vil ikke rigtig du. den udskriver bare "0" på siden..
Her er min kode:

<?php
$query = mysql_query("SELECT * FROM profil_hits WHERE ejer = '$_GET[brugernavn]'");
while ($as = mysql_fetch_array($query)){

mysql_query("UPDATE profil_hits SET hits = $as[hits]+1");
?>
<tr>
        <td width="100%" bgcolor="70A0C8">
            <p><b>
<font size="1" face="Verdana">
Profil hits: </font>
</b><
font size="1" face="Verdana"><br>
</font></p>
        </td>
    </tr>
    <tr>
        <td width="100%">

            <p>
<font size="1" face="Verdana">

<?php echo htmlentities($as['hits']); 
if ($as[hits] == ""){

echo "0";
}
?>
<?php } ?>
</font></p>
        </td>
    </tr>
Avatar billede 7th Praktikant
11. oktober 2004 - 05:33 #1
Prøv med bare

<?php
mysql_query("UPDATE profil_hits SET hits = hits + 1 WHERE ejer = '$_GET[brugernavn]'");
?>
Avatar billede Slettet bruger
11. oktober 2004 - 08:19 #2
Der er flere væsentlige fejl i din kode:

1) Først læser du, derefter opdaterer du - dvs, du har læst den gamle værdi.

2) Du opdaterer uden en WHERE - dvs. du opdaterer faktisk hele tabellen, ikke kun den ønskede række.

3) Du kører opdateringen inde i en løkke, så potentielt kan du risikere, at der bliver opdateret mere end en gang. (Kommer an på, om det kan lade sig gøre at lave flere brugere med samme navn.)

4) Du slutter php-blokke og starter igen lige efter hinanden

5) Din HTML er ikke god. <font>-taggen er forældet, og du har endda et blanktegn mellem < og font et sted.

Prøv med dette:

<?php

mysql_query("UPDATE profil_hits SET hits = $as[hits]+1 WHERE ejer='{$_GET[brugernavn]}'");

$query = mysql_query("SELECT * FROM profil_hits WHERE ejer = '$_GET[brugernavn]'");
$as = mysql_fetch_array($query);

?>

<tr>
        <td width="100%" bgcolor="70A0C8">
            <p><b>
<font size="1" face="Verdana">
Profil hits: </font>
</b><font size="1" face="Verdana"><br>
</font></p>
        </td>
    </tr>
    <tr>
        <td width="100%">

            <p>
<font size="1" face="Verdana">

<?php

echo htmlentities($as['hits']);
if ($as[hits] == ""){

echo "0";
}

?>
</font></p>
        </td>
    </tr>
Avatar billede flashrider Nybegynder
11. oktober 2004 - 12:17 #3
Har prøvet begge jeres svar, men virker ikke.

Den udskriver bare 0
Avatar billede flashrider Nybegynder
11. oktober 2004 - 14:10 #4
én der ved det?
Avatar billede Slettet bruger
11. oktober 2004 - 18:30 #5
Så hedder kolonnen i databasen måske noget andet end hits.

Prøv at bede om fejlbeskeder:

mysql_query("UPDATE profil_hits SET hits = $as[hits]+1 WHERE ejer='{$_GET['brugernavn']}'") or die(mysql_error());

$query = mysql_query("SELECT * FROM profil_hits WHERE ejer = '$_GET[brugernavn]'") or die(mysql_error());

Derudover kan det være en ide at se, hvad rækken egentlig indeholder. Prøv at lacve din normale echo-linie om til:

print_r($as);

//echo htmlentities($as['hits']);

(forresten er det ganske overflødigt at køre htmlentities på den værdi, da du jo ved at den enten indeholder et tal eller er tom, og dermed kan den ikke indeholde noget, som htmlentities ville ændre på alligevel.)
Avatar billede web-geek Nybegynder
11. oktober 2004 - 22:50 #6
den udskriver stadig intet :(?

er det fordi mit kolonno felt er varchar?
eller er det fordi den skal starte på 1?
Avatar billede web-geek Nybegynder
11. oktober 2004 - 22:50 #7
Min kode ligenu:

<tr>
       
        <td width="100%">
            <p><font size="1" face="Verdana"><?php

mysql_query("UPDATE profil_hits SET hits = $as[hits]+1 WHERE ejer='{$_GET['brugernavn']}'") or die(mysql_error());

$query = mysql_query("SELECT * FROM profil_hits WHERE ejer = '$_GET[brugernavn]'") or die(mysql_error());
$as = mysql_fetch_array($query);

?>

<tr>
        <td width="100%" bgcolor="70A0C8">
            <p><b>
<font size="1" face="Verdana">
Profil hits: </font>
</b><font size="1" face="Verdana"><br>
</font></p>
        </td>
    </tr>
    <tr>
        <td width="100%">

            <p>
<font size="1" face="Verdana">

<?php
echo "$as[hits]";

?>
Avatar billede flashrider Nybegynder
11. oktober 2004 - 22:56 #8
kan man ikke bare lave
mysql_query("INSERT INTO profil_hits (hits, ejer) VALUES ('$as[hits]+1','$row[brugernavn]')") or die(mysql_error());

også til sidst tæller sammen hvor mange brugeren har?
Avatar billede flashrider Nybegynder
11. oktober 2004 - 23:01 #9
har lavet smid svar
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