Avatar billede Slettet bruger
31. december 2000 - 14:01 Der er 26 kommentarer og
2 løsninger

Nem en!

Jeg har følgende sætning:

$sql = \"INSERT INTO favorites ( to_userid, msg_time, msg_text) VALUES (\'$userdata[user_id]\', \'$time\', \'$tousername\')\";

$userdata[user_id] kunne f.eks. være \"1\"
og $tousername kunne f.eks. være \"Jørgen\".

Hvordan laver jeg en funktion der tjekker om der allerede findes en række hvor user_id er 1 og msg_text er $tousername?

Sådan at der ikke kan indsættes i tabellen hvis \"Jørgen\" allerede står i en række med user_id\'en \"1\".

user_id\'en må gerne have forskellige rækker med \"Bitten\", \"Mette\", \"Hans\" osv. Men ikke 2 af den samme!
Avatar billede mortenfn Nybegynder
31. december 2000 - 14:09 #1
\"select * from favorites where user_id = \'1\' and msg_text = \'$tousername\'\"
Avatar billede mortenfn Nybegynder
31. december 2000 - 14:17 #2
if(!row = mysql_query(\"select * from favorites where user_id = \'1\' and msg_text = \'$tousername\'\") echo \"ingen bruger\";
else
echo \"Der er en bruger\";

Avatar billede mortenfn Nybegynder
31. december 2000 - 14:19 #3
where user_id = \'1\' a fejl >>

where user_id = \'to_userid\' a
Avatar billede mortenfn Nybegynder
31. december 2000 - 14:21 #4
nu kludre jeg rundt i dit script


if(!row = mysql_query(\"select * from favorites where user_id = \'$userdata[user_id]\' and msg_text = \'$tousername\'\") echo \"ingen bruger\";
else
echo \"Der er en bruger\";

nu tror jeg den er der

Avatar billede Slettet bruger
31. december 2000 - 15:44 #5
Det duer squ ikke!
For det første har du glemt en afsluttende parantes, for det andet giver det bare en parse eror pga. din if(row....
Avatar billede jd Nybegynder
31. december 2000 - 16:15 #6
Hvis morten har forstået det korrekt, men han bare ikke kan finde ud af syntaxen :O), så vil dette nok virke::

$q = mysql_query(\"select * from favorites where user_id = \'$userdata[user_id]\' and msg_text = \'$tousername\'\");
if(!mysql_num_rows())
  echo \"ingen bruger\";
else
  echo \"Der er en bruger\";
Avatar billede mortenfn Nybegynder
31. december 2000 - 16:18 #7
if(!$row = mysql_query(\"select * from favorites where user_id = \'$userdata[user_id]\' and msg_text = \'$tousername\'\")) echo \"ingen bruger\";
else
echo \"Der er en bruger\";

der mangelde også et $ - den burde da virke
Avatar billede mortenfn Nybegynder
31. december 2000 - 16:19 #8
nej den duer ikke
Avatar billede mortenfn Nybegynder
31. december 2000 - 16:24 #9
$row = mysql_query(\"select * from favorites where user_id = \'$userdata[user_id]\' and msg_text = \'$tousername\'\");
if(!$row) echo \"ingen bruger\";
else
echo \"Der er en bruger\";

sådan så
Avatar billede mortenfn Nybegynder
31. december 2000 - 16:25 #10
hvad med den her

if(!mysql_query(\"select * from favorites where user_id = \'$userdata[user_id]\' and msg_text = \'$tousername\'\")) echo \"ingen bruger\";
else
echo \"Der er en bruger\";
Avatar billede jd Nybegynder
31. december 2000 - 16:29 #11
...måske vil de sidste 2 virke...
Avatar billede Slettet bruger
31. december 2000 - 16:42 #12
Intet af det virker ordenligt.. Jeg kan ikke få lov at indsætte med følgende kode, uanset hvordan jeg vender og drejer det... Det skal lige nævnes at user_id skal være to_userid istedet.. og $action bliver self. sat til add!

#//// Add favorite function
if ($action == \'add\')
{

if(!$row = mysql_query(\"select * from favorites where to_userid = \'$userdata[user_id]\' and msg_text = \'$tousername\'\"))

{
$time = date(\"d M, Y H:i\");

$sql = \"INSERT INTO favorites ( to_userid, msg_time, msg_text) VALUES (\'$userdata[user_id]\', \'$time\', \'$tousername\')\";

if(!mysql_query($sql, $db)) {
echo $sql . \" : \" . mysql_error() . \"<br>\";
die(\"<p align=\\\"center\\\">Fejl - Kunne ikke opdatere databasen. Klik venligst tilbage og prøv igen\");
}
}
else
{
echo \"Der er en bruger i forvejen\";
}
#////
Avatar billede Slettet bruger
31. december 2000 - 16:50 #13
Det lader til at problemet ligger her:

#////Denne kode virker ikke...
if(!$row = mysql_query(\"select to_userid from favorites where to_userid = \'$userdata[user_id]\' and msg_text = \'$tousername\'\"))
#////Slut på uduelig kode...
Avatar billede mortenfn Nybegynder
31. december 2000 - 17:01 #14
--> jeg har da også rettet den !!
Avatar billede Slettet bruger
31. december 2000 - 17:05 #15
if(!mysql_query(\"select * from favorites where to_userid = \'$userdata[user_id]\' and msg_text = \'$tousername\'\")) echo \"ingen bruger\";

virker lige så lidt som:

if(!$row = mysql_query(\"select to_userid from favorites where to_userid = \'$userdata[user_id]\' and msg_text = \'$tousername\'\"))

og bedre er denne heller ikke:

  $row = mysql_query(\"select * from favorites where to_userid = \'$userdata[user_id]\' and msg_text = \'$tousername\'\");
if(!$row) 
Avatar billede Slettet bruger
31. december 2000 - 17:16 #16
I det sidste eksempel returnere $row jo en Resource id lige meget hvad der sker! Derfor har $row jo fået en værdi og kan derfor ikke bruges som !$row.....
Avatar billede Slettet bruger
31. december 2000 - 17:25 #17
Ha! Fandt løsningen!! Wuhuu!

#//// Add favorite function
if ($action == \'add\')
{

$row = mysql_query(\"select * from favorites where to_userid = \'$userdata[user_id]\' and msg_text = \'$tousername\'\");

$res = mysql_fetch_array($row); // get\'s 0 since there\'s no return

echo $res;

if(!$res)

{
    $time = date(\"d M, Y H:i\");
    $sql = \"INSERT INTO favorites ( to_userid, msg_time, msg_text) VALUES (\'$userdata[user_id]\', \'$time\', \'$tousername\')\";

    if(!mysql_query($sql, $db)) {
        echo $sql . \" : \" . mysql_error() . \"<br>\";
        die(\"<p align=\\\"center\\\">Fejl - Kunne ikke opdatere databasen. Klik venligst tilbage og prøv igen\");
    }

}
else

echo \"Der er en bruger i forvejen\"; 


}
#////
Avatar billede Slettet bruger
31. december 2000 - 17:29 #18
Godt nytår! :-)

Tak for hjælpen!
Avatar billede mortenfn Nybegynder
31. december 2000 - 17:35 #19
det er vist det her

$row = mysql_query(\"select * from favorites where user_id = \'$userdata[user_id]\' and msg_text = \'$tousername\'\");
if(!$row) ......

undskyld jeg rodede så meget , men jeg sad selv med noget der drillede

GODT NYTÅR

/morten

Avatar billede erikjacobsen Ekspert
01. januar 2001 - 01:16 #20
Jeg synes I roder rundt i det, så man kan have svært ved at se hvad der er
korrekt og hvad der ikke er. Det der kommer tilbage fra en mysql_query kan testes
for om det var korrekt SQL-syntaks eller ej - IKKE om der var tupler i eller ej. Man
kan altså godt:

    $result = mysql_query(\"SELECT ....\");
    if (!$result) {
      echo \"Fejl: \".mysql_error().\"<br>\\n\";
      exit();
    }

Men spørgsmålet er netop om der er, eller ikke er, et tupel i svaret. Linierne ovenover
kan derfor med fordel efterfølges af

    if (mysql_num_rows($result)==0) {
      echo \"Den var da da godt nok ikke<br>\\n\";
    } else {
      echo \"Der var gevinst<br>\\n\";
    }

Strengt taget er der ingen grund til at hente række, med mysql_fetch_row og
lignende, blot for at checke eksistensen - men det gør nok ingen forskel
i praksis.

Så er den vist på plads.
Avatar billede Slettet bruger
01. januar 2001 - 01:25 #21
Jeg kunne ikke bruge mortenfn\'s svar til noget, ej heller jd\'s, da jeg ikke kunne gennemskue den korrekte syntaks i problemet.

Kunne ikke forstå at mysql_query gav en resource id når array\'et burde indeholde ingenting??

BTW Happy new year!!

Den angivne løsning (min ;-)) virker, men hvis din er bedre (mindre res. krævende) vil jeg da bruge den!

Avatar billede erikjacobsen Ekspert
01. januar 2001 - 01:28 #22
Det gør nok ingen forskel, el_barto, med mindre du skal køre et par
tusind i sekundet... ;-)  Og så må jeg da sige, at jeg ikke ved hvilken
der er bedst, men så kan man jo sætte sig ned og måle.

Jeg kunne bare ikke holde ud at se alle de forkerte svar, og havde
såmænd overset din løsning ;-O
Avatar billede jd Nybegynder
01. januar 2001 - 15:47 #23
Jeg viste at jeg havde ret!! :)

Jeg sagde også if(!mysql_num_rows($result)) echo ingen bruger\"; osv...
Avatar billede mortenfn Nybegynder
01. januar 2001 - 15:55 #24
jd--> ja da, men så må denne også virke

Kommentar fra mortenfn 
31/12 2000 16:25:55 
Avatar billede jd Nybegynder
01. januar 2001 - 16:08 #25
morten-> Det tror jeg ikke, da den jo altid vil returnere true, med mindre der opstår en fejl?
Avatar billede jd Nybegynder
01. januar 2001 - 16:10 #26
Jeg kiggede i manualen, og jeg har ret!! :O)
Avatar billede jd Nybegynder
01. januar 2001 - 16:14 #27
snip::

mysql_query() returns TRUE (non-zero) or FALSE to indicate whether or not the query succeeded. A return value of TRUE means that the query was legal and could be executed by the server. It does not indicate anything about the number of rows affected or returned. It is perfectly possible for a query to succeed but affect no rows or return no rows.
Avatar billede mortenfn Nybegynder
01. januar 2001 - 16:55 #28
jd - ok du har ret - jeg har også testet og nu læst. Det min if gør er at krontrolere om mysql_query() lykkes, ikke om resultatet er tomt.

Mit script kan bruges, hvis man vil krontrollere om f.eks. \"select\" udføres  - ikke om select giver et resultat.
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
Computerworld tilbyder specialiserede kurser i database-management

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