Avatar billede jonatanharring Nybegynder
04. december 2006 - 17:41 Der er 46 kommentarer og
2 løsninger

Simpel PHP virker ikke

Hej.
Jeg har en simpel PHP kode som ganske enkelt ikke vil virke for mig! - Det er efterhånden gået mig på neverne så jeg sender det her ind, i håb om at en klog computer nørd finder fejlen^^

Det er en HTML kode kaldet marquee (rullende tekst til højre eller venstre), blandet med lidt PHP der volder mig problemer.
Jeg vil nemlig gerne sende en lille besked fra min side til PHPmyAdmin - som da også viker optimalt, altså beskeden bliver oplagret i tabellen (Tinytext, not null).

Problemet består altså ikke i det, men derimod i koden jeg fortalte jer om før, som ser således ud:

<?
if (!strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox') !== FALSE)
$sql = mysql_query ("SELECT * FROM shouter ORDER BY id DESC LIMIT 0,1");
if(mysql_num_rows($sql)) {
while($vis = mysql_fetch_array($sql)) {
echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">$vis[besked]</marquee>';
}
}
?>

- Den øverste linie med firefox er bare en simpel PHP kode der undgår koden i at blive vist i Firefox (hvor marquee ikke fungerer efter hensigten).

Koden er den mest simple jeg nogen sinde har set, men åbenbart også den mest bøvlede.
Den siger ikke fejl i PHP kode, men derimod viser den slet ingen tekst ([besked])!

Venlig hilsen
Jonatan Harring

Mange, Mange tak for hjælpen!!
Der gives 200 point (jeg er desparat).. men de gives kun til den som kommer med et kort og kontant svar der fører mig lige til sejeren!
Avatar billede zynzz Praktikant
04. december 2006 - 18:05 #1
Jeg ved ikke hvor meget du skal stole på $_SERVER['HTTP_USER_AGENT']...
prøv:
<?
if (!strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox') !== FALSE)
$sql = mysql_query ("SELECT * FROM shouter ORDER BY id DESC LIMIT 0,1");
if(mysql_num_rows($sql)) {
while($vis = mysql_fetch_array($sql)) {
?>
<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4"><? echo $vis[besked]; ?></marquee>
<?
}
}
?>
Avatar billede zynzz Praktikant
04. december 2006 - 18:05 #2
Og du behøver heller ikke while... :)
Avatar billede jonatanharring Nybegynder
04. december 2006 - 20:01 #3
Tak for forsøget - virkede desværre ikke :(

..Nogle der har andre foreslag?
Avatar billede coderdk Praktikant
04. december 2006 - 20:38 #4
echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">$vis[besked]</marquee>';

skal være:

echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">' . $vis['besked'] . '</marquee>';
Avatar billede coderdk Praktikant
04. december 2006 - 20:43 #5
Kan skrives om til:

<?

if (!strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox') !== FALSE)
{
  $sql = mysql_query ("SELECT * FROM shouter ORDER BY id DESC LIMIT 1");
  if($vis = mysql_fetch_array($sql)) {
    echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">$vis[besked]</marquee>';
  }
}

?>
Avatar billede coderdk Praktikant
04. december 2006 - 20:43 #6
Bah, selvfølgelig med min linje fra 04/12-2006 20:38:37
Avatar billede mcardle Nybegynder
05. december 2006 - 08:40 #7
Hmm, troede ikke der blev opfordret til tags der var udfaset ;-) -Nej, du kan sagtens bruge det, men det svare lidt til at bruge <font></font>.
Avatar billede coderdk Praktikant
05. december 2006 - 10:45 #8
Enig med mcardle :) Hvis du skal bruge en marquee, så brug en af de utallige DHTML-varianter: http://www.dynamicdrive.com/dynamicindex2/cmarquee.htm en googlesøgning efter dhtml marquee giver mange :)
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:07 #9
Jeg vil helst bruge HTML frem for Javascript (you know what i mean). Koden jeg viser øverst virker stadig ikke ?
Avatar billede mcardle Nybegynder
05. december 2006 - 14:18 #10
Hvorfor siger du LIMIT 0,1 og også denne her er unødvendig, if(mysql_num_rows($sql)) {

//mcardle
Avatar billede mcardle Nybegynder
05. december 2006 - 14:20 #11
Prøv at lave denne her: !== om til !=
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:20 #12
Tjah, hvorfor ikke?
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:20 #13
Hm.. prøv lige at skrive hele koden *confused*
Avatar billede mcardle Nybegynder
05. december 2006 - 14:24 #14
<?

if (!strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox') !== FALSE)
{
  $sql = mysql_query ("SELECT besked FROM shouter ORDER BY id DESC");
  if($vis = mysql_fetch_array($sql)) {
    echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">' . $vis['besked'] . '</marquee>';
  }
}

?>
Avatar billede mcardle Nybegynder
05. december 2006 - 14:25 #15
Hov, det var forkert... Hvor mange beskeder har du?
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:25 #16
Jeg ser om den virker! Så så fælde får du pointene!
Avatar billede mcardle Nybegynder
05. december 2006 - 14:27 #17
Hvis det kun er den nyeste besked der skal vises hele tiden, så er det denne her kode:

if (!strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox') !== FALSE)
{
  $sql = mysql_query ("SELECT besked FROM shouter ORDER BY id DESC LIMIT 1");
  if($vis = mysql_fetch_array($sql)) {
    echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">' . $vis['besked'] . '</marquee>';
  }
}

?>
Avatar billede coderdk Praktikant
05. december 2006 - 14:27 #18
Som jeg skrev 04/12-2006 20:43:06:

<?

if (!strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox') !== FALSE)
{
  $sql = mysql_query ("SELECT * FROM shouter ORDER BY id DESC LIMIT 1");
  if($vis = mysql_fetch_array($sql)) {
    echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">' . $vis['besked'] . '</marquee>';
  }
}

?>
Avatar billede mcardle Nybegynder
05. december 2006 - 14:30 #19
Præcis
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:32 #20
Men koden virker ikke ?
Avatar billede mcardle Nybegynder
05. december 2006 - 14:33 #21
Har du husket at connecte til din database?
Avatar billede coderdk Praktikant
05. december 2006 - 14:34 #22
Prøv lige:

<?

if (!strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox') !== FALSE)
{
  $sql = mysql_query ("SELECT * FROM shouter ORDER BY id DESC LIMIT 1") or die( mysql_error() );
  if($vis = mysql_fetch_array($sql)) {
    echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">' . $vis['besked'] . '</marquee>';
  }
  else
  {
    echo '<marquee onmouseover="this.stop()" onmouseout="this.start()" behavior="scroll" direction="left" height="12" width="486" lang="da" scrollamount="1" scrolldelay="4">Ingen shouts...</marquee>';
  }
}

?>
Avatar billede coderdk Praktikant
05. december 2006 - 14:34 #23
Og så naturligvis hvad mcardle siger ;)
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:35 #24
Jeg har connectet databasen - Ja!
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:36 #25
Jeg tror at i er på sporet af noget.. nu står der: Unknown column 'id' in 'order clause'
Avatar billede coderdk Praktikant
05. december 2006 - 14:37 #26
Jaaaah... Hvordan ser din tabel ud?
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:38 #27
der er kun ÈT felt (besked) .. Tinytext.. Not null
Avatar billede mcardle Nybegynder
05. december 2006 - 14:38 #28
Hvis du ikke har nogen id kolonne, så kan du ikke ORDER BY id
Avatar billede mcardle Nybegynder
05. december 2006 - 14:39 #29
Hehe... Set en kolonne ind med auto_increament der hedder id, så skulle det virke
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:42 #30
Fuck.. det har i ret i ??
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:46 #31
altså nyt felt? med navnet "id" også auto_increment & INT??
Avatar billede mcardle Nybegynder
05. december 2006 - 14:46 #32
Jeps...
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:46 #33
I try! :)
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:47 #34
#1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key
Avatar billede mcardle Nybegynder
05. december 2006 - 14:49 #35
Husk, når du så sætter noget ind skal du ikke indsætte i id, det gør den selv, da du har sat den til auto_increament
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:50 #36
i id?
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:50 #37
Feltnavn skal ikke være id??
Avatar billede mcardle Nybegynder
05. december 2006 - 14:50 #38
Ja, du skal sætte din id til at være Primary Key
Avatar billede mcardle Nybegynder
05. december 2006 - 14:51 #39
Jo... :o)
Avatar billede mcardle Nybegynder
05. december 2006 - 14:51 #40
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:52 #41
Sådan der :D
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:52 #42
DET VIRKER!!

Tusinde tak :) Brude jeg give nogle point til ham der coderdk også.. eller har han ellerede nok i forvejen..?
Avatar billede mcardle Nybegynder
05. december 2006 - 14:54 #43
Han skal også ha' :oP
Avatar billede coderdk Praktikant
05. december 2006 - 14:54 #44
hehe jeg behøver ikke
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:54 #45
så skal han skynde sig at skrive svar :D
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:55 #46
I får begge`?..
Avatar billede coderdk Praktikant
05. december 2006 - 14:56 #47
Så lad gå da ;P
Avatar billede jonatanharring Nybegynder
05. december 2006 - 14:56 #48
hvor meget til hver :P`?
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