Avatar billede zorg_86 Nybegynder
24. oktober 2003 - 18:43 Der er 83 kommentarer og
1 løsning

Har problemer med en query

Hej

Nogle der kan hjælpe mig med denne mysql_query ?

$result=mysql_query("SELECT scooter_vote.*, scooter.*, WHERE scooter_vote.scooter_id=scooter.id AND scooter_vote.bruger_id='$bruger' GROUP BY scooter.id ORDER BY RAND() LIMIT 1") or die (mysql_error());
if(mysql_num_rows($result) > 0) {
    echo 'Du har slemt på alle scooterne!';
} else {
    while($row=mysql_fetch_assoc($result)) {
    $resultat = mysql_query("SELECT URL FROM scooter_billeder WHERE scooter_id = '$row[id]' LIMIT 1") or die (mysql_error());
    $rowpic = mysql_fetch_array($resultat);
    echo '<img src="'.$rowpic['URL'].'">';
}
}

Jeg får denne fejl:
You have an error in your SQL syntax near 'WHERE scooter_vote.scooter_id=scooter.id AND scooter_vote.bruger_id='1' GROUP BY' at line 1

Nogle der kan hjælpe mig
Avatar billede erikjacobsen Ekspert
24. oktober 2003 - 19:20 #1
du mangler "FROM enellerfleretabeller"
Avatar billede zorg_86 Nybegynder
24. oktober 2003 - 19:45 #2
Nu får jeg denne fejl:
You have an error in your SQL syntax near 'FROM scooter_vote, scooter WHERE scooter_vote.scooter_id=scooter.id AND scooter_' at line 1
Avatar billede erikjacobsen Ekspert
24. oktober 2003 - 20:02 #3
Måske er der et komma for meget - svært at sige, når du ikke PRÆCIS viser
hvad det er der står i dit script.
Avatar billede zorg_86 Nybegynder
24. oktober 2003 - 20:35 #4
Sig til hvad du skal bruge af koder..
Avatar billede zorg_86 Nybegynder
25. oktober 2003 - 11:57 #5
Her er hele min kode:

<?php
echo '<center>';
$bruger = '1';

$result=mysql_query("SELECT FROM scooter_vote, scooter WHERE scooter_vote.scooter_id=scooter.id AND scooter_vote.bruger_id='$bruger' GROUP BY scooter.id ORDER BY RAND() LIMIT 1") or die (mysql_error());
if(mysql_num_rows($result) > 0) {
    echo 'Du har slemt på alle scooterne!';
} else {
    while($row=mysql_fetch_assoc($result)) {
    $resultat = mysql_query("SELECT URL FROM scooter_billeder WHERE scooter_id = '$row[id]' LIMIT 1") or die (mysql_error());
    $rowpic = mysql_fetch_array($resultat);
    echo '<img src="'.$rowpic['URL'].'">';
}
}

if($_POST['vote']) {
mysql_query("INSERT INTO scooter_vote (scooter_id,bruger_id,vote) VALUES ('$id','1','$_POST[vote]')") or die (mysql_error());
echo "<script>window.location='hotornot.php'</script>";
}

echo '</center><br>';
?>
Avatar billede erikjacobsen Ekspert
25. oktober 2003 - 12:00 #6
Mellem SELECT og FROM skal du angive de felter du vil have trukket, eller *.
Du havde nogle før - hvorfor fjernede du dem?
Avatar billede zorg_86 Nybegynder
26. oktober 2003 - 11:22 #7
Nu kommer den ikke med nogle fejl men nu udskriver den ikkke noget!

http://www.mpj.frac.dk/hotornot.php
Avatar billede erikjacobsen Ekspert
26. oktober 2003 - 12:17 #8
Så er der vel ingen data i din tabel der passer.
Avatar billede zorg_86 Nybegynder
26. oktober 2003 - 19:04 #9
Nej den dur ikke...

Jeg skal have en mysql_query som udskriver id i table scooter men kun hvis $bruger ikke findes i feltet bruger_id i table scooter_vote...

Jeg har prøvet med denne men den dur ikke :(

$result=mysql_query("SELECT * FROM scooter_vote,scooter WHERE scooter_vote.bruger_id != '$bruger' GROUP BY scooter.id ORDER BY RAND() LIMIT 1") or die (mysql_error());
Avatar billede zorg_86 Nybegynder
26. oktober 2003 - 19:41 #10
Nogle der kunne hjælpe mig?
Det er vil eksperter der er her på siden ik? :D
Avatar billede erikjacobsen Ekspert
26. oktober 2003 - 19:43 #11
Der er ikke mange "eksperter" der vil bruge energi bare på oplysningen "dur ikke".
Avatar billede zorg_86 Nybegynder
26. oktober 2003 - 19:46 #12
HeHe :)

Kunne du hjælpe mig?
Avatar billede erikjacobsen Ekspert
26. oktober 2003 - 20:00 #13
Måske - det er ikke til at vide. Der er ikke oplysninger nok til at
afgøre om jeg kan hjælpe dig.
Avatar billede zorg_86 Nybegynder
26. oktober 2003 - 20:04 #14
Så sig frem hvad skal du bruge af oplysninger?
Avatar billede zorg_86 Nybegynder
26. oktober 2003 - 20:12 #15
Jeg har to tabler ved navn scooter og scooter_vote i dem er der disse felter:

Scooter_vote:
id
bruger_id
scooter_id
vote

Scooter:
id
nick

Jeg skal så bruge en mysql_query som udskriver id i tablen scooter men kun hvis $bruger ikke findes i feltet bruger_id hvor at scooter_id = med id'et i scooter tablen.
Avatar billede zorg_86 Nybegynder
27. oktober 2003 - 14:31 #16
nogle der kunne hjælpe mig!??
Avatar billede zorg_86 Nybegynder
27. oktober 2003 - 18:35 #17
?
Avatar billede zorg_86 Nybegynder
27. oktober 2003 - 22:23 #18
?
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 07:08 #19
Jeg skal nok (måske...) kigge på det når du kommer med de de relevante oplysninger.
Du har en query, og du siger "dur ikke". Det ved du da godt selv ikke er nok?
Avatar billede nicklasb Nybegynder
28. oktober 2003 - 07:17 #20
nu har du skrevet hvordan dine tabeller ser ud..
Så mangler vi bare at få et par (mindst tre) eksempler på hvad der kunne stå i de tabeller, og hvad det egentligt er du gerne vil have ud..
Det bliver noget rod at hente fra to tabeller.. Så vil den gange alle resultaterne i den ene, ind på resultaterne på den anden, så alle i den første tabel har en tilknytning til alle rækker i den anden, når du ikke tjekker mere på det..
Hvad er det du gerne vil have ud? Og er der evt steder hvor flere rækker passer?!?
Avatar billede zorg_86 Nybegynder
28. oktober 2003 - 17:01 #21
Det her kan der f.eks stå i de forskelige tabller:

CREATE TABLE scooter (
  id int(11) NOT NULL auto_increment,
  PRIMARY KEY  (id)
) TYPE=MyISAM AUTO_INCREMENT=11 ;

#
# Data dump for tabellen `scooter`
#

INSERT INTO scooter VALUES (1);
INSERT INTO scooter VALUES (2);
INSERT INTO scooter VALUES (3);
INSERT INTO scooter VALUES (4);
INSERT INTO scooter VALUES (5);
INSERT INTO scooter VALUES (6);
INSERT INTO scooter VALUES (7);
INSERT INTO scooter VALUES (8);
INSERT INTO scooter VALUES (9);
INSERT INTO scooter VALUES (10);
# --------------------------------------------------------

#
# Struktur dump for tabellen `scooter_vote`
#
# Creation: 26/10 2003 kl. 14:16:24
# Last update: 26/10 2003 kl. 18:56:45
#

CREATE TABLE scooter_vote (
  id int(11) NOT NULL auto_increment,
  scooter_id int(11) NOT NULL default '0',
  bruger_id int(11) NOT NULL default '0',
  vote int(10) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

#
# Data dump for tabellen `scooter_vote`
#

INSERT INTO scooter_vote VALUES (1, 1, 1, 5);
INSERT INTO scooter_vote VALUES (1, 5, 1, 5);
INSERT INTO scooter_vote VALUES (1, 9, 1, 5);

Jeg skal så bruge en mysql_query som udskriver id'et i tablen scooter men kun hvis $bruger ikke findes i fletet bruger_id i scooter_vote hvor at scooter_id = id'et i tablen scooter.

noget en stil af denne:

$result=mysql_query("SELECT * FROM scooter_vote,scooter WHERE scooter_vote.bruger_id != '$bruger' AND scooter_vote.scooter_id = scooter.id GROUP BY scooter.id ORDER BY RAND() LIMIT 1") or die (mysql_error());
Avatar billede nicklasb Nybegynder
28. oktober 2003 - 19:07 #22
evt
$result = mysql_query("SELECT * FROM scooter LEFT JOIN scooter_vote ON scooter_vote.bruger_id != '$bruger' AND scooter_vote.scooter_id = scooter.id GROUP BY scooter.id ORDER BY RAND() LIMIT 1") or die (mysql_error());

?!?
Avatar billede zorg_86 Nybegynder
28. oktober 2003 - 19:20 #23
Det ser ud som om det virker -> http://www.mpj.frac.dk/hotornot.php men der bliver ikke udskrevet felternes værdi
Avatar billede zorg_86 Nybegynder
28. oktober 2003 - 19:24 #24
Der er bare et problem det er at hvis der ikke er nogle andre brugere som ikke har stemt på f.eks scooter_id 5 så bliver den sprunget over :( scooter_vote.scooter_id = scooter.id
Avatar billede zorg_86 Nybegynder
28. oktober 2003 - 21:52 #25
Så den dur den du har lavet der mangler bare at den også skal udskrive hvad der er i felterne når der ikke er nogle scooter_id med f.eks 5
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 21:59 #26
Jeg forstår fortsat ikke hvad du skal og vil - beklager.
Men når du i din join har to felter med samme navn, id, tager den i
din PHP kun den ene, sådan lidt "tilfældigt".
Avatar billede zorg_86 Nybegynder
28. oktober 2003 - 22:10 #27
Efter hvad jeg kan se så tager den, den rigtige som er id'et i scooter.
Avatar billede zorg_86 Nybegynder
28. oktober 2003 - 22:12 #28
Den nicklasb kom med virker næsten det enste der mangler er at få den til at udskrive data selvom der f.eks ikke findes noget scooter_id med feks. 5 det står jo her: scooter_vote.scooter_id = scooter.id
Avatar billede zorg_86 Nybegynder
28. oktober 2003 - 22:34 #29
Jeg har sat lidt flere points af så nu er der 120 at hente....
Avatar billede nicklasb Nybegynder
29. oktober 2003 - 06:51 #30
jeg må altså lige som erikjacobsen melde pas.. Aner altså ikke lige hvad det er du vil, så kan kun sidde konstant og gætte.. er det en liste over alle scotere den skal tage det ud fra?

for så er det vel noget lignende;

$result = mysql_query('SELECT * FROM scooter_vote a LEFT JOIN scooter b ON b.scooter_id = a.id WHERE a.bruger_id != \'' . $bruger . '\' GROUP BY scooter.id ORDER BY RAND() LIMIT 1') or die (mysql_error());

?!
Avatar billede erikjacobsen Ekspert
29. oktober 2003 - 06:58 #31
...og hvorfor ORDER BY RAND() LIMIT 1 ??
Avatar billede nicklasb Nybegynder
29. oktober 2003 - 07:03 #32
ja, den er taget derekte fra hans eget eksempel ;)
Men kunne forstille mig at den kun skulle udskrive én tilfældig.. Ved dog ikke hvad det er for en skod-tabel der er blevet sat sammen hvis flere brugere har samme id.. Men jeg kan ikke rigtig gøre andet så længe jeg ikke får mere at arbejde ud fra?
Nu ved jeg han har en database med en masse tal i.. Men jeg ved stadig ikke hvilke tal han vil have ud, og hvilken sammenhæng der er mellem tallene..
Avatar billede erikjacobsen Ekspert
29. oktober 2003 - 07:42 #33
Vi er helt enige... det var heller ikke dig jeg spurgte ... :=)
Avatar billede nicklasb Nybegynder
29. oktober 2003 - 14:26 #34
ved jeg ;) men var også mere for indirekte at få spørger til at give lidt flere informationer jeg skrev det.. :)
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 17:56 #35
Sorry havde ikke tid til at skrive tilbage før nu.

tablen scooter er selve "hovedetablen" og scooter_vote er en table som har data om mine brugers bedømmelser af de forskellige scootere...

Scooter_vote:
id <- det siger siger sig selv
bruger_id <- Brugerens id
scooter_id <- id'et fra tablen scooter
vote <-- hvor meget bruger vil give scooteren

Scooter:
id <- det siger siger sig selv

Det vil sige at hvis queryen har valgt at hive f.eks id'et 5 ud af tablen scooter så hvis f.eks brugeren med id'et 2 vil stemme på den så kommer det til at se sådan ud i tablen scooter_vote:

id <- det siger sigselv (f.eks 2)
bruger_id => 2
scooter_id => 5
vote => 6 //Hvor meget brugeren med id'et 2 f.eks har givet scooteren med id'et 5

Jeg skal så have lavet en mysql_query som denne nicklasb har lavet:
$result = mysql_query("SELECT * FROM scooter LEFT JOIN scooter_vote ON scooter_vote.bruger_id != '$bruger' AND scooter_vote.scooter_id = scooter.id GROUP BY scooter.id ORDER BY RAND() LIMIT 1") or die (mysql_error());

Denne query virker kun hvis der er en anden bruger som har stemt på f.eks scooter_id 5 det står jo lige her: scooter_vote.scooter_id = scooter.id //Altså den vil kun hive data ud hvis en anden bruger har stemt på den samme scooter_id

ORDER BY RAND() LIMIT 1 // Jeg bruger RAND() for at den skal tage et tilfældig scooter og LIMIT 1 siger sig selv altså så den kun udskriver en af gangen.

Jeg skal brugen denne mysql_query til Hot Or Not dette er der for at brugeren ikke kan stemme på samme scooter mere end én gang:
scooter_vote.bruger_id != '$bruger' AND scooter_vote.scooter_id = scooter.id

Håber i forstår mig nu, elles så skriv.
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 19:32 #36
Nu er der 150 points at hente...
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 21:51 #37
Kunne i hjælpe mig?
Avatar billede erikjacobsen Ekspert
29. oktober 2003 - 22:15 #38
Ha' nu lidt tålmodighed. Jeg fik vist lavet nogle andre navne end dig,
så du får lige mine tabeller:

Tabel: scooter
ID,NAVN
1,rød scooter
2,blå scooter
3,hvid scooter

Tabel: scooterbruger
ID,NAVN
1,Hans
2,Kurt
3,Peter
4,Viggo

Tabel: scootervote
ID,SCOOTERID,BRUGERID,VOTE
1,1,1,11
2,1,2,8
3,2,1,7

Så vil denne sql give dig alle de scootere, der ikke er blevet stemt
på af bruger nummer 1 (udskift selv 1, og sæt selv din RAND()-halløj på)

select * from
  scooterbruger left join
    (scooter left join scootervote  on scooter.id=scootervote.scooterid )
  on scooterbruger.id=scootervote.brugerid where scooterbruger.id=3
  and scootervote.id is null
Avatar billede erikjacobsen Ekspert
29. oktober 2003 - 22:15 #39
Nå, ok, det blev så bruger nummer 3 ;)
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 22:38 #40
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 22:40 #41
Den ser sådan ud nu...

$result = mysql_query("select * from brugere left join (scooter left join scooter_vote on scooter.id=scooter_vote.scooter_id ) on brugere.id=scooter_vote.bruger_id where brugere.id='$bruger' and scooter_vote.id is null ORDER BY RAND() LIMIT 1") or die (mysql_error());
Avatar billede erikjacobsen Ekspert
29. oktober 2003 - 22:42 #42
Og din mysql version?
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 22:44 #43
Hvad tænker du på? mine tabler?
Avatar billede erikjacobsen Ekspert
29. oktober 2003 - 22:47 #44
Hvilken version af mysql bruger du? Min sql-sætning er aftestet på 4.0.12.

Men er din mysql for gammel kan du jo bare gøre det med 2-3 sql-sætninger
i stedet for een.
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 22:54 #45
MySQL 3.23.56

Men den server den rigtig skal ligge på er MySQL 4.0.15
Avatar billede erikjacobsen Ekspert
29. oktober 2003 - 22:57 #46
Så virker det sikkert på den rigtige. 3.23 er li'som en smule for gammel
til disse nye tricks.
Avatar billede zorg_86 Nybegynder
29. oktober 2003 - 22:59 #47
Det ser ud som om det virker, jeg kigger det færdigt i morgen hopper i seng, er ca. på eksperten ved en 5 tiden igen morgen...
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 12:51 #48
Jeg kan kun finde en fejl og det er at den ikke udskriver noget ved id ( [id] => ), der skal den udskrive id'et fra tablen scooter

Min table ser sådan ud nu:
$result = mysql_query("select * from test_brugere left join (test_scooter left join test_scooter_vote on test_scooter.id=test_scooter_vote.scooter_id ) on test_brugere.id=test_scooter_vote.bruger_id where test_brugere.id='$bruger' and test_scooter_vote.id is null ORDER BY RAND() LIMIT 1") or die (mysql_error());
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 13:01 #49
Så vælger du lige i stedet for * de felter du vil have fx

  test_scooter.id as id1

+ evt andre. Som tidligere sagt får du problemer med navnesammenfald i PHP-delen
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 13:32 #50
Den dur ikke for jeg vil godt have udskrevet alt i tablen scooter..
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 13:37 #51
Så skriver du alle felterne du vil have du
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 13:39 #52
Sådan?

test_scooter.id as id, test_scooter.nick as nick, .....
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 13:44 #53
Yep!  test_scooter.poulnyrup as president ... du har fanget princippet!
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 13:50 #54
Jeg tror sku det virker nu :)

Er det helt forkert lavet: ?

<?php

$bruger = '2';

$result = mysql_query("select test_scooter.id as id, test_scooter.nick as nick from test_brugere left join (test_scooter left join test_scooter_vote on test_scooter.id=test_scooter_vote.scooter_id ) on test_brugere.id=test_scooter_vote.bruger_id where test_brugere.id='$bruger' and test_scooter_vote.id is null ORDER BY RAND() LIMIT 1") or die (mysql_error());
if (mysql_num_rows($result) == '0') {
    echo 'Du har stemt på alle scooterne.';
} else {
while($row=mysql_fetch_assoc($result))
{
   
        echo '
        <form method="POST" action="'.$_SERVER['REQUEST_URI'].'">
        <center><select size="1" name="vote" style="background-color:#465B71; font: 11px verdana;">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
        </select>
        <input type="submit" value="Bedøm" Class="Submitknap">
        </center></form>';
       
    $id = $row['id'];
    echo '<PRE>';
    print_r($row);
    echo '</PRE>';
   
    if($_POST['vote']) {
    mysql_query("INSERT INTO test_scooter_vote (scooter_id,bruger_id,vote) VALUES ('$id','$bruger','$_POST[vote]')");
    $_SERVER['PHP_SELF'];
    }
}
}

?>
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 13:53 #55
Jeg forstår ikke hvorfor du laver din opdatering til sidst. Det skal da
være det allerførste du gør på siden.
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 13:57 #56
Er dette bedre?

<?php
include('config.php'); //Connect til db

$bruger = '1';

$result = mysql_query("select test_scooter.id as id, test_scooter.nick as nick from test_brugere left join (test_scooter left join test_scooter_vote on test_scooter.id=test_scooter_vote.scooter_id ) on test_brugere.id=test_scooter_vote.bruger_id where test_brugere.id='$bruger' and test_scooter_vote.id is null ORDER BY RAND() LIMIT 1") or die (mysql_error());
if (mysql_num_rows($result) == '0') {
    echo 'Du har stemt på alle scooterne.';
} else {
while($row=mysql_fetch_assoc($result))
{
    $id = $row['id'];
   
    if($_POST['vote']) {
    mysql_query("INSERT INTO test_scooter_vote (scooter_id,bruger_id,vote) VALUES ('$id','$bruger','$_POST[vote]')");
    $_SERVER['PHP_SELF'];
    }

    echo '
    <form method="POST" action="'.$_SERVER['REQUEST_URI'].'">
    <center><select size="1" name="vote" style="background-color:#465B71; font: 11px verdana;">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
    </select>
    <input type="submit" value="Bedøm" Class="Submitknap">
    </center></form>';

    echo '<PRE>';
    print_r($row);
    echo '</PRE>';
}
}

echo '<hr>';
show_source('hotornot.php');
?>
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 13:59 #57
Eller er det bedre med header('hotornot.php'); i stedet for $_SERVER['PHP_SELF']; ?
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 14:11 #58
Læs lige Kommentar: erikjacobsen 30/10-2003 13:53:22 igen
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 14:29 #59
Den står ikke øverst fordi elles ville der ikke være nogle værdi i $id
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 14:31 #60
For hvis jeg sætter den øverst og så længere nede under på siden står der: $id = $row['id']; så bliver den nød til at være efter $id = $row['id'];
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 14:37 #61
Men det er jo ikke samme id du så opdaterer. Det er et nyt id, som du
trækker ud med din RAND() i sql-sætningen.

Nej, den skal helt øverst, og du skal have med hvilken id, der er tale om
fx fra din form, eller i en session-variabel.
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 14:42 #62
Hvad med nu er det rigtigt lavet?

<?php
include('config.php'); //Connect til db

$bruger = '1';

    if($_POST['vote']) {
    mysql_query("INSERT INTO test_scooter_vote (scooter_id,bruger_id,vote) VALUES ('$_GET[id]','$bruger','$_POST[vote]')");
    header('Location: hotornot.php?last_id='.$_GET['id']);
    }

if($_GET['last_id']) {
$query=mysql_query("SELECT * FROM test_scooter WHERE id = '$_GET[last_id]'");
while($row = mysql_fetch_array($query)) {
    $ialt_stemmer=mysql_result(mysql_query("SELECT COUNT(bruger_id) FROM test_scooter_vote WHERE scooter_id = '$_GET[last_id]'"),0);
    $gennemsnit=mysql_result(mysql_query("SELECT ROUND(AVG(vote),2) AS gennemsnit FROM test_scooter_vote WHERE scooter_id = '$_GET[last_id]'"),0);
    echo 'stemmer: ('.$ialt_stemmer.') :<br>Gennemshit: '.$gennemsnit.'<br>'.$row['nick'].'<br><br>';
}
}

$result = mysql_query("select test_scooter.id as id, test_scooter.nick as nick from test_brugere left join (test_scooter left join test_scooter_vote on test_scooter.id=test_scooter_vote.scooter_id ) on test_brugere.id=test_scooter_vote.bruger_id where test_brugere.id='$bruger' and test_scooter_vote.id is null ORDER BY RAND() LIMIT 1") or die (mysql_error());
if (mysql_num_rows($result) == '0') {
    echo 'Du har stemt på alle scooterne.';
} else {
while($row=mysql_fetch_assoc($result))
{
    $id = $row['id'];

    echo '
    <form method="POST" action="hotornot.php?id='.$id.'">
    <center><select size="1" name="vote" style="background-color:#465B71; font: 11px verdana;">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
    </select>
    <input type="submit" value="Bedøm" Class="Submitknap">
    </center></form>';

    echo '<PRE>';
    print_r($row);
    echo '</PRE>';
}
}

echo '<hr>';
show_source('hotornot.php');
?>
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 14:48 #63
Bedre - bortset fra enhver hacker med respekt for sig selv kan ændre det id
og stemme på et vilkårligt id.
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 14:57 #64
Sådan nu er det lidt bedre:

<?php
include('config.php'); //Connect til db

$id = intval($_GET['id']);
$last_id = intval($_GET['last_id']);

$bruger = '1';

if($_POST['vote']) {
mysql_query("INSERT INTO test_scooter_vote (scooter_id,bruger_id,vote) VALUES ('$id','$bruger','$_POST[vote]')");
header('Location: hotornot.php?last_id='.$id);
}

if($last_id) {
$query=mysql_query("SELECT * FROM test_scooter WHERE id = '$last_id'");
while($row = mysql_fetch_array($query)) {
    $ialt_stemmer=mysql_result(mysql_query("SELECT COUNT(bruger_id) FROM test_scooter_vote WHERE scooter_id = '$last_id'"),0);
    $gennemsnit=mysql_result(mysql_query("SELECT ROUND(AVG(vote),2) AS gennemsnit FROM test_scooter_vote WHERE scooter_id = '$last_id'"),0);
    echo 'stemmer: ('.$ialt_stemmer.') :<br>Gennemshit: '.$gennemsnit.'<br>'.$row['nick'].'<br><br>';
}
}

$result = mysql_query("select test_scooter.id as id, test_scooter.nick as nick from test_brugere left join (test_scooter left join test_scooter_vote on test_scooter.id=test_scooter_vote.scooter_id ) on test_brugere.id=test_scooter_vote.bruger_id where test_brugere.id='$bruger' and test_scooter_vote.id is null ORDER BY RAND() LIMIT 1") or die (mysql_error());
if (mysql_num_rows($result) == '0') {
    echo 'Du har stemt på alle scooterne.';
} else {
while($row=mysql_fetch_assoc($result))
{
    $id = $row['id'];

    echo '
    <form method="POST" action="hotornot.php?id='.$id.'">
    <center><select size="1" name="vote" style="background-color:#465B71; font: 11px verdana;">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
    </select>
    <input type="submit" value="Bedøm" Class="Submitknap">
    </center></form>';

    echo '<PRE>';
    print_r($row);
    echo '</PRE>';
}
}

echo '<hr>';
show_source('hotornot.php');
?>

Kan du ikke lave så enhver hacker med respekt for sig selv kan ændre det id
og stemme på et vilkårligt id ?
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 14:58 #65
Det var sådan :)

Kan du ikke lave så en hacker ikke kan ændre det id
og stemme på et vilkårligt id ?
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 15:04 #66
Nej - det gider jeg ikke ;)  Gør det noget? Du kan jo f.x blot
opdatere hvis samme bruger stemmer på samme ting igen ved at hacke,
i stedet for blot at indsætte.

Det er da mere spændende om man kan snyde med brugere.
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 15:07 #67
Kan du så ikke forklare mig hvordan man hacker det id så kan jeg selv lave så det ikke er muligt og så kan jeg også teste alle mine andre sider :/
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 15:13 #68
Like this?

if($_POST['vote']) {
$vote=mysql_query("SELECT id FROM test_scooter_vote WHERE scooter_id = '$id' AND bruger_id = '$bruger'");
if (mysql_num_rows($vote) == '0') {
mysql_query("INSERT INTO test_scooter_vote (scooter_id,bruger_id,vote) VALUES ('$id','$bruger','$_POST[vote]')");
header('Location: hotornot.php?last_id='.$id);
} else {
    header('Location: hotornot.php');
}
}
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 15:16 #69
Tror du min kode kan hackes nu ?
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 15:25 #70
Det ser da umiddelbart fornuftigt ud. Har du allerede et brugersystem med sessions
var det nu nok der jeg ville prøve at gøre det.
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 16:53 #71
Hvor henne ? i min login_ok.php?

Her?

$resultat = mysql_query("SELECT id, mail, nick FROM brugere WHERE nick = '$post_nick' AND password=MD5('$post_password')");
$row = mysql_fetch_array($resultat);
$number=mysql_num_rows($resultat);
if($number == 1) {
        $_SESSION['logget_ind'] = '1';
        $_SESSION['user'] = $row['nick'];
        $_SESSION['mail'] = $row['mail'];
        $_SESSION['user_id'] = $row['id'];
}

Men den er vil god nok for den tjekker jo om brugeren har stemt på scooteren....
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 18:42 #72
Så kan du jo bruge en session-variabel til at gemme scooter-id-et
i stedet for i url-en
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 19:52 #73
Jeg skal jo også have udskrevet et billede af scooteren det gør jeg via denne:

$pic = mysql_query("SELECT id FROM scooter_billeder WHERE scooter_id = '$id' ORDER BY id DESC LIMIT 1");
$rowpic = mysql_fetch_array($pic);
echo '<img border="0" src="scooter_image.php?hotornot='.$rowpic['id'].'" style="border: 1px solid #000000">';

Men efter jeg har lagt den ind i min while fra den query du lavet så hvis jeg opdatere siden et par. gange så står den bare og prøver på at loade siden ind men den bliver aldrig færdig :(

Hvordan kan man fixe dette problem??
Avatar billede erikjacobsen Ekspert
30. oktober 2003 - 19:58 #74
Hvor skulle jeg vide det fra?
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 20:00 #75
Har jeg ikke fortalt da jeg trode jeg bare kunne lægge den ind..

Men der er ikke meget i Hot Or Not uden et billede...
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 20:10 #76
Der er heller ikke nogle problemer hvis jeg gør sådan:

        $pic = mysql_query("SELECT id FROM scooter_billeder WHERE scooter_id = '$id' ORDER BY id DESC LIMIT 1");
        $rowpic = mysql_fetch_array($pic);
        echo $rowpic['id'];

Men lige så snart jeg laver det til et billede så "fyrser" den nogle gange..
Avatar billede zorg_86 Nybegynder
30. oktober 2003 - 20:13 #77
Jeg bruger GD lib til billederne, kan det være den som er problemet?

sådan ser den ud:

$hotornot = intval($_GET['hotornot']);

$query = mysql_query("SELECT URL FROM scooter_billeder WHERE id = '$hotornot'");
while($row = mysql_fetch_array($query)) {
   
    $font = $_SERVER['DOCUMENT_ROOT'].'/galleri/font/verdana.ttf';
    $text = 'MPJ.Frac.dk';   
   
    $image = ''.$row['URL'].'';
    $size = getimagesize($row['URL']);
       
    $height = 360;
    $width = 480;
   
    $right = $width-230;
    $bottom = $height-10;
    $right2 = $width-230;
    $bottom2 = $height-8;
   
    $src_img = imagecreatefromjpeg($image);
    $dst_img = imagecreatetruecolor($width, $height);
    imagecopyresampled($dst_img, $src_img, 0,0,0,0, $width,$height, imagesx($src_img), imagesy($src_img));
    $color = ImageColorAllocate($dst_img,255,0,0);
    $color2 = ImageColorAllocate($dst_img,255,255,255);
    imagettftext($dst_img,15,0,$right2,$bottom2,$color2,$font,$text);
    imagettftext($dst_img,15,0,$right,$bottom,$color,$font,$text);
    header('Content-type: image/jpeg');
    ImageJPEG($dst_img, '', 65);
    ImageDestroy($dst_img);   
}
Avatar billede zorg_86 Nybegynder
01. november 2003 - 18:04 #78
Skriv et svar så du kan få pointsne...
Avatar billede zorg_86 Nybegynder
02. november 2003 - 15:54 #79
erikjacobsen.......
Avatar billede zorg_86 Nybegynder
03. november 2003 - 17:51 #80
Hvor bliver du af?
Avatar billede zorg_86 Nybegynder
04. november 2003 - 16:46 #81
?
Avatar billede zorg_86 Nybegynder
07. november 2003 - 18:06 #82
?
Avatar billede zorg_86 Nybegynder
08. november 2003 - 12:57 #83
erikjacobsen ville du have de 150 points ?
Avatar billede zorg_86 Nybegynder
08. november 2003 - 23:06 #84
Så lukker jeg!
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