Avatar billede xeno-morph Nybegynder
22. februar 2001 - 11:02 Der er 28 kommentarer og
1 løsning

PHP og mysql

jeg er i gang med at prøve at bygge et bannersystem gennem mysql og php, jeg har lige nu i min database :
- en url til billedet(banneret)
- en url til hvor man skal hen hvis man klikker
nu skal jeg bare have den til at vise bannerne i tilfældig rækkefølge, og man skal kunne begrænse hvor mange gange det enkelte banner bliver vist ud fra min mysql, så hvis man fx har et banner der har maxshows : 2000, så må dette kun blive vist 2000 gange i løbet af en dag, mit problem er at jeg ikke aner hvordan jeg skal trække alt det sammen til et system, og slet ikke hvordan man random vælger et banner ud fra min mysql... flere point vil blive givet efter kvaliteten af hjælpen...
Avatar billede Slettet bruger
22. februar 2001 - 11:06 #1
Hvad med at hente et gratis bannersystem, istedet for at bygge et selv? *S*
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 11:09 #2
fordi jeg ikke kan finde et der passer til det jeg skal bruge...
Avatar billede spiri Nybegynder
22. februar 2001 - 12:07 #3
Jeg har en idé til hvad du kan gøre.

Hvordan ser din tabel, som indeholder banneroplysninger, ud?
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 12:25 #4
spiri :
jeg har :
row0    row1    row2  row3    row4    row5  row6
ID    PICURL  URL    NAME  clicks  shows  maxshow


ID = siger sig selv
PICURL = der hvor banneret ligger
URL = Der hvor banneret skal ligge
NAME = navnet
clicks = hvor mange clicks der har været
shows = hvor mange gange det er blevet vist
maxshow = max visninger af banneret

:)
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 12:32 #5
Hej xeno-morph

Det kan f.ex. laves sådan her:
Jeg regner med at din tabel hedder: Banner
At du har 2 felter der hedder: Antal, som er en tæller og Max, som angíver maxshows f.ex. 2000
At du har 2 felter: Banner og Link som indeholder hhv url til banneret og url til hvor man skal hen hvis man klikker

<?
$sql=\"select * from Banner where Antal<Max\";
$result=mysql_query($sql);
$antal=mysql_num_rows($result);
mt_srand((double)microtime()*1000000);
if ($antal==0)
{
echo \"Der er ikke nogle ledige bannere\";
}
else
{
if ($antal==1)
{
$r=0;
}
else
{
$r=mt_rand(0,$antal-1);
}
$bannerURL=mysql_result($result,$r,\"Banner\");
$linkURL=mysql_result($result,$r,\"Link\");
$ID=mysql_result($result,$r,\"ID\");
$sql=\"update banner set Antal=Antal+1 where ID=$ID\";
mysql_query($sql);

echo \"$bannerURL og $linkURL\";
}

Hilsen

Mads
?>
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 12:36 #6
Hej Xeno-morph

Jeg er at du lige har postet hvordan tabellen ser ud, men det er jo helt fint. Den indeholde jo de felter jeg også foreslår (men lidt andre navne) + lidt mere. Så det er jo bare at rette navnene.

Mads
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 12:39 #7
takker mkelle1 : jeg prøver det af og ser hvad der sker... :))
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 12:52 #8
jeg får en fejl i linie :
$antal=mysql_num_rows($result);
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 13:11 #9
Hvilken fejl?
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 13:16 #10
Warning: Supplied argument is not a valid MySQL result resource in http://www.domain.dk/bannershow.php on line 6
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 13:19 #11
OK, det betyder at der er fejl i sql-sætningen. Det kunne tyde på at du ikke har fået rettet alle feltnavnene eller tabelnavnet. (Jeg går ud fra at du er connectet til databasen).

Mads
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 13:23 #12
jeg har connected, og jeg har nu :
$sql=\"select * from Banner where maxshow<Max\";
$result=mysql_query($sql);
$antal=mysql_num_rows($result);
mt_srand((double)microtime()*1000000);
if ($antal==0)


der er noget galt, men kan ikke finde ud af hvor....
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 13:27 #13
Hedder din tabel Banner?

Iøvrigt skal den hedde:

$sql=\"select * from Banner where shows<maxshow\";

hvis tabellen ser ud som det du skrev tidligere.

Ellers skulle der ikke være nogen problemer

Mads
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 13:35 #14
ok, det ser ud som om det virker nu, men nu vil jeg gerne have at den i stedet for bare at vise teksten til url\'erne så viser billedet og laver det til et <a href>
og er det muligt at lave det sådan at de skifter hele tiden, så hvert banner får 10 sekunder ??
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 13:38 #15
Ja - vender tilbage!!

Mads
Avatar billede xeno-morph Nybegynder
22. februar 2001 - 13:40 #16
jeg har også noget andet... den opdaterer ikke shown og clicks... den skriver ikke når man har set et banner, den står bare stille...
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 13:47 #17
Hvis den ikke opdaterer shows, så er det fordi du ikke har rettet update-sql-sætningen fra feltnavn=Antal til feltnavn=show. Ang clicks har jeg af gode grunde ikke forholdt mig til det, da det ikke var med i dit spørgsmål. Jeg gik ud fra at det var noget du selv havde klaret (det troede jeg egentlig også om det med at vise bannerne og evt skifte dem).

Mads
Avatar billede mkelle1 Nybegynder
22. februar 2001 - 14:00 #18
Hej xeno-morph
For at lave en pæn måde at skifte bannere på skal man nok over i JavaScript. Det kan også sagtens lade sig gøre, men det tager lidt længere tid, da jeg ikke er så rutineret i JS som i PHP.

- og nu forlader jeg min pind, for resten af eftermiddagen. Vi snakkes ved.

Mads
Avatar billede xeno-morph Nybegynder
23. februar 2001 - 09:03 #19
Hej mkelle1.... nu har jeg et problem, efter et stykke tid, så siger den jo at \"Der er ikke nogle ledige bannere\"... men, det gør den efter meget kort tid, ikke efter de er blevet vist de 15000 gange jeg har skrevet i min mysql... men kun omkring 9, og det sker så snart det ene banner er vist 9 gange, selv om de andre kun er vist 2 eller 3 gange... hvad faen er der galt ?!?
Avatar billede xeno-morph Nybegynder
23. februar 2001 - 09:42 #20
så er der også det med at jeg gerne vil have den til at registrere når man klikker på et banner... hvordan i ¤!¤!¤!\"%=)(/!¤ gør man det ?!?
Avatar billede mkelle1 Nybegynder
23. februar 2001 - 12:57 #21
Hej xeno-morph

Ka\' du ikke lige poste koden her, for det med 9 gange lyder mærkeligt.

Mads
Avatar billede xeno-morph Nybegynder
23. februar 2001 - 13:23 #22
<?

$sql=\"select * from banner where shown<maxshow\";

$result=mysql_query($sql);

$antal=mysql_num_rows($result);

mt_srand((double)microtime()*1000000);
?>

<?

  if ($antal==0) {
  echo \"Der er ikke nogle ledige bannere\";
  }
  else {
  if ($antal==1) {
    $r=0;
  }
  else {
  $r=mt_rand(0,$antal-1);
  }

    $urlpic=mysql_result($result,$r,\"urlpic\");

    $urlgoto=mysql_result($result,$r,\"urlgoto\");

    $id=mysql_result($result,$r,\"id\");

    $sql=\"update banner set shown=shown+1 where id=$id\";
 
    $sql1=\"update banner set clicks=clicks+1 where id=$id\";


mysql_query($sql);

mysql_query($sql1);

echo \"<a href=\'http://$urlgoto\'><img border=\'0\' src=\'http://$urlpic\'></a>\";

}

?>
Avatar billede mkelle1 Nybegynder
23. februar 2001 - 14:57 #23
Hej Xeno

Jeg har testet det på min maskine og der virker det ganske fortrinligt. Jeg har lavet følgende konstruktion så du får opdateret dine clicks rigtigt:

Det er opbygget af 2 sider (det kan muligvis gøres smartere, men sådan i farten fungerer det ihvertfald)

Side1: Banner.php

<html>
<head>
<title></title>
</head>

<body>
<?
mysql_connect(\"localhost\",\"\",\"\");
mysql_select_db(\"test_1\");

$sql=\"select * from banner where shown<maxshow\";
$result=mysql_query($sql);
$antal=mysql_num_rows($result);

mt_srand((double)microtime()*1000000);

if ($antal==0)
  {
    echo \"Der er ikke nogle ledige bannere\";
  }
else
  {
    if ($antal==1)
      {
        $r=0;
      }
    else
      {
        $r=mt_rand(0,$antal-1);
      }

    $urlpic=mysql_result($result,$r,\"urlpic\");
    $urlgoto=mysql_result($result,$r,\"urlgoto\");
    $id=mysql_result($result,$r,\"id\");
    $sql=\"update banner set shown=shown+1 where id=$id\";
    mysql_query($sql);

    echo \"<form action=\'PHPbannerframe.php\' name=\'urlgotoform\'>\";
    echo \"<input type=image src=$urlpic>\";
    echo \"<input type=hidden name=\'ID\' value=$id>\";
    echo \"<input type=hidden name=\'urlgoto\' value=$urlgoto>\";
    echo \"</form>\";

  }
?>
</body>
</html>


Side 2: Frame.php

<html>
<head>
<title></title>
   
<?
mysql_connect(\"localhost\",\"\",\"\");
mysql_select_db(\"test_1\");
$sql1=\"update banner set clicks=clicks+1 where id=$ID\";
mysql_query($sql1);
?>

</head>

<FRAMESET name=\"frame\" COLS=\"*\">
  <frame src=\"<?echo $urlgoto;?>\" name=\"urlgoto\" id=\"urlgoto\" frameborder=\"0\" scrolling=\"Auto\">
</frameset>

</html>

Dermed får du opdateret dine cliks når der bliver trykket på banneret og kun der. Om end det måske ikke er den færdige løsning kan det måske give dig nogle ideer. Det er testet og virker fint hos mig.
(Jeg har fjernet \"http://\" adresserne, men dem kan du jo bare sætte ind igen)

Mads
Avatar billede mkelle1 Nybegynder
23. februar 2001 - 14:59 #24
Ups.

I linien:

echo \"<form action=\'PHPbannerframe.php\' name=\'urlgotoform\'>\";

skal der selvfølgelig stå:

echo \"<form action=\'frame.php\' name=\'urlgotoform\'>\";

Jeg havde ændret navnet før jeg postede den, men åbentbart ikke konsekvent

Mads
Avatar billede xeno-morph Nybegynder
23. februar 2001 - 15:18 #25
ok, det virker NOGENLUNDE nu, men jeg har et problem.. den vil kun give mig 9 visninger, hvis jeg f.eks. sætter min maxshow til 5000 vil den stadig kun vise mig 9, men hvis jeg derimod sætter den til 9000 vil den gerne... det er som om den tager KUN efter det første tal... kan man gøre noget ved det ?
Avatar billede mkelle1 Nybegynder
23. februar 2001 - 15:24 #26
Hej xeno-morph

Prøv lige at kikke på din tabel. Hvad er datatypen på feltet \'maxshow\'.

Mads
Avatar billede xeno-morph Nybegynder
23. februar 2001 - 15:32 #27
maxshow  varchar(150)    No     
Avatar billede xeno-morph Nybegynder
23. februar 2001 - 15:32 #28
hvad skal den da være ?
Avatar billede mkelle1 Nybegynder
23. februar 2001 - 15:43 #29
Den skal være \"int\", det er jo et tal. Det skal \"shown\" og \"clicks\" også være.

Mads
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