Avatar billede jps2mt Nybegynder
07. januar 2003 - 22:07 Der er 19 kommentarer og
1 løsning

Random post i mysql problem

Flg. kode henter KUN de 2 sidste poster i databasen, istedet for at hente en random af de poster der er i basen:

<?
header("refresh: 2");

$conn = mysql_connect("localhost", "***", "***");
mysql_select_db("***");

$result = mysql_query("SELECT * FROM Banner WHERE ID <> '$seneste' ORDER BY RAND() LIMIT 0,1") or print mysql_error();

while ($row = mysql_fetch_array($result)) {
  echo "($row[ID])<br><img src='".$row["Billede"]."' border='0' width='468' height='60'>\n";
}
?>

Eks. kan ses på http://www.blackchart.dk/rand_link.php

Hvorfor er det lige at den ikke vil hente en random istedet for bare en af de sidste 2 fra databasen??
Avatar billede ztyxx Nybegynder
07. januar 2003 - 22:15 #1
måske kan dette gøre det
$result = mysql_query("SELECT * FROM Banner WHERE ID NOT LIKE '$seneste' ORDER BY RAND() LIMIT 0,1") or print mysql_error();
Avatar billede jps2mt Nybegynder
07. januar 2003 - 22:19 #2
Nopes...Det giver ingen forskel...Den henter stadig kun de 2 sidste poster i DB'en...
Avatar billede ztyxx Nybegynder
07. januar 2003 - 22:20 #3
hvordan definerer du $seneste
Avatar billede jps2mt Nybegynder
07. januar 2003 - 22:25 #4
Hov...Den var lige smuttet i farten...

while ($row = mysql_fetch_array($result)) {
  setcookie("seneste",$row["ID"],time()+3600);
  echo "($row[ID])<br><img src='".$row["Billede"]."' border='0' width='468' height='60'>\n";
}

Men jeg bruger bare cookien for at sikre mig at det ikke er samme banner der bliver vist 2 gang i træk...
Avatar billede ztyxx Nybegynder
07. januar 2003 - 22:30 #5
hvad sker der hvis du kører den uden at sætte den cookie, og så med
$result = mysql_query("SELECT * FROM Banner ORDER BY RAND() LIMIT 0,1") or print mysql_error();

bare for lige at se om den vil vise andre
Avatar billede jps2mt Nybegynder
07. januar 2003 - 22:43 #6
Den eneste forskel er at den kan finde på at loade samme banner 2 eller flere gange i træk...Men det er stadig kun de sidste 2 poster den henter...
Avatar billede ztyxx Nybegynder
07. januar 2003 - 22:43 #7
hmm, det burde virke med din oprindelige kode, har lige testet det lokalt, og der er ingen problemer
Avatar billede jakoba Nybegynder
07. januar 2003 - 22:48 #8
echo "seneste indeholder >" .$seneste ."< <br>";  // fortæl hvad der står i den.
$result = mysql_query("
    SELECT *
    FROM Banner
    WHERE ID <> $seneste
    ORDER BY RAND()
    LIMIT 0,1
") or print mysql_error();
// jeg har fjernet anførselstegn omkring $seneste

og det bør virke.
Avatar billede ztyxx Nybegynder
07. januar 2003 - 22:56 #9
jakoba> jeg har også lige testet din, men den vil ikke uden anførselstegn på min maskine, men okay det er nok et opsætningsproblem i PHP, men med anførselstegn er der ingen probs
Avatar billede jps2mt Nybegynder
07. januar 2003 - 22:58 #10
Men det gør det ikke... :( ...Databasen indeholder ID's som er flg. 1,2,3 og 5

Den vil kun vise 3 og 5...
Avatar billede ztyxx Nybegynder
07. januar 2003 - 22:59 #11
prøv at smide et dump af den database, både struktur og data
Avatar billede jps2mt Nybegynder
07. januar 2003 - 23:03 #12
# phpMyAdmin MySQL-Dump
# version 2.3.3
# http://www.phpmyadmin.net/ (download page)
#
# Vært: localhost
# Genereringstidspunkt: 07/01 2003 kl. 23:02:42
# Server version: 3.23.53
# PHP version: 4.2.1
# Database: : `smilly_dk_db`
# --------------------------------------------------------

#
# Struktur dump for tabellen `banner`
#

CREATE TABLE banner (
  ID mediumint(9) NOT NULL auto_increment,
  Billede varchar(255) NOT NULL default '',
  Link varchar(255) NOT NULL default '',
  PRIMARY KEY  (ID)
) TYPE=MyISAM COMMENT='Database til bannere i toppen af forsiden';

#
# Data dump for tabellen `banner`
#

INSERT INTO banner (ID, Billede, Link) VALUES (1, 'http://www.blackchart.dk/images/banner/blackchart_banner_468_60.gif', 'http://www.blackchart.dk'),
(2, 'http://www.smilly.dk/images/banner/banner_jenner.gif', 'http://bror.smilly.dk'),
(3, 'http://www.chatportal.dk/design/banner/Banner26.gif', 'http://www.chatportal.dk'),
(5, 'http://www.reneord.dk/banner/reneord03.jpg', 'http://www.reneord.dk');
Avatar billede ztyxx Nybegynder
07. januar 2003 - 23:13 #13
prøv at sætte din cookie sådan
$_COOKIE["seneste"] = setcookie("seneste",$row["id"],time()+3600);
Avatar billede jakoba Nybegynder
07. januar 2003 - 23:19 #14
er 'ID' ikke case sensitivt i et associativt array indeks?
$_COOKIE["seneste"] = setcookie("seneste",$row["ID"],time()+3600);
Avatar billede ztyxx Nybegynder
07. januar 2003 - 23:24 #15
joda, det kan det jo være, alt efter serveren, på min maskine er den ikke casesensitiv
Avatar billede jps2mt Nybegynder
08. januar 2003 - 01:15 #16
Selvom jeg kører helt UDEN cookies virker det ikke...Den henter kun de sidste 2 poster...
Avatar billede jakoba Nybegynder
08. januar 2003 - 01:51 #17
grunden til at jeg skev linien:

echo "seneste indeholder >" .$seneste ."< <br>";  // fortæl hvad der står i den.

er at jeg gerne vil vide hvad der står i variablen $seneste på det tidspunkt.

vil du være rar at fortælle det?
Avatar billede jps2mt Nybegynder
08. januar 2003 - 11:02 #18
http://www.blackchart.dk/rand_link.php
Der kan du selv se hvordan den ter sig...

$seneste indeholder selvfølgelig det seneste id der blev vist...
Avatar billede jakoba Nybegynder
08. januar 2003 - 11:28 #19
der er et par ting du kan rette på:

i din insert angiver du værdier til et auto-increment felt. det skal man ikke, brug istedet:

INSERT INTO banner (ID, Billede, Link) VALUES (0, 'http://www.blackchart.dk/images/banner/blackchart_banner_468_60.gif', 'http://www.blackchart.dk'),
(0, 'http://www.smilly.dk/images/banner/banner_jenner.gif', 'http://bror.smilly.dk'),
(0, 'http://www.chatportal.dk/design/banner/Banner26.gif', 'http://www.chatportal.dk'),
(0, 'http://www.reneord.dk/banner/reneord03.jpg', 'http://www.reneord.dk');

(eller lav ID feltet om så det ikke er auto-increment)


hvis dit operativsystem på serveren er unix eller linux skal du være opmærksom på at 'banner' og 'Banner' vil give to forskellige tabeller med 2 forskellige filnavne (der er forskel på store og små bogstaver)
måske det er en tabel der er tilovers fra tidligere i din debugging og testning

test med et andte lille script at de fire poster virkelig findes i tabellem Banner
<?php
$sql_kommando = "
    SELECT *
    FROM Banner
";
$result = mysql_query( $sql_kommando ) or die( mysql_error() );

echo "Der er ialt " .mysql_num_rows( $result ) ." poster i tabellen Banner<br>";

?>

mvh JakobA


mvh JakobA
Avatar billede jps2mt Nybegynder
08. januar 2003 - 12:10 #20
Jeg lavede scriptet om så den henter hele DB'en ned i et array, og så vælger en random værdi ud fra count(array)

Men takker for forsøgene...
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