webForumDet fria alternativet

2 frågor -> 1

11 svar · 269 visningar · startad av K@llen

K@llenMedlem sedan mars 20032 667 inlägg
#1
$sql ="update pm set fromFolder = $fId where messId in $mId and fromUid = " . $_SESSION['uid'] . "";

$sql ="update pm set toFolder = $fId where messId in $mId and toUid = " . $_SESSION['uid'] . "";

Går det göra dessa två sql-strängarna till en, isf hur?

dbms: mysql

LarsGMedlem sedan dec. 200012 464 inlägg
#2
$sql ="update pm " & _
" set fromFolder = case when fromUid = " .
$_SESSION['uid']  . " then " . $fId . " else fromUid end , " .
" toFolder = case when toUid = " .
$_SESSION['uid']  . " then " . $fId . " else toUid end " .
" where messId in $mId and " . $_SESSION['uid'] . 
" in (fromUid,toUid) ";
K@llenMedlem sedan mars 20032 667 inlägg
#3

Ahhh, nice, tack LarsG!

Ändrar dock från VB/PHP till enbart PHP. ;)

K@llenMedlem sedan mars 20032 667 inlägg
#4

Ropade hej lite tidigt:

Utskrift:

update pm set fromFolder = case when fromUid = 1 then 33 else fromUid end , toFolder = case when fromUid = 1 then 33 else toUid end where messId in 5 and 1 in (fromUid, toUid)

fel:

You have an error in your SQL syntax near '5 and 1 in (fromUid, toUid) ' at line 1

LarsGMedlem sedan dec. 200012 464 inlägg
#5

I så fall är det $mid/in som är fel. Eftersom du använde in så trodde jag att det var en lista dvs "(47,11)".

$sql ="update pm " & _
" set fromFolder = case when fromUid = " .
$_SESSION['uid']  . " then " . $fId . " else fromUid end , " .
" toFolder = case when toUid = " .
$_SESSION['uid']  . " then " . $fId . " else toUid end " .
" where messId = $mId and " . $_SESSION['uid'] . 
" in (fromUid,toUid) ";
K@llenMedlem sedan mars 20032 667 inlägg
#6

Du trodde rätt, det är en lista från checkboxar, raden över sql-frågan är:

$mId = implode(",", $_POST['mId']);

$mId innehåller i detta fallet siffran 5 eftersom enbart en (1) checkbox var ikryssad.

K@llenMedlem sedan mars 20032 667 inlägg
#7

När flera är ikryssade får jag felet:

You have an error in your SQL syntax near '6,5 and 1 in (fromUid, toUid) ' at line 1
LarsGMedlem sedan dec. 200012 464 inlägg
#8
$sql ="update pm " & _
" set fromFolder = case when fromUid = " .
$_SESSION['uid']  . " then " . $fId . " else fromUid end , " .
" toFolder = case when toUid = " .
$_SESSION['uid']  . " then " . $fId . " else toUid end " .
" where messId in(" . $mId . ") and " . $_SESSION['uid'] . 
" in (fromUid,toUid) ";
K@llenMedlem sedan mars 20032 667 inlägg
#9

He, he, nu fungerar det nästan i varje fall. Problemet är att den uppdaterar både fromFolder och toFolder trots att sessionId:et enbart kan vara lika med en av fromUid och toUid. Dessa två kan aldrig vara samma, för man kan ej skicka pm till sig själv.

Den ska ju uppdatera fromFolder om fromUid = sessionId och toFolder om toUid = sessionId

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Jag skrev ju fel kolumnnamn

$sql ="update pm " & _
" set fromFolder = case when fromUid = " .
$_SESSION['uid']  . " then " . $fId . " else [b]fromFolder[/b] end , " .
" toFolder = case when toUid = " .
$_SESSION['uid']  . " then " . $fId . " else [b]toFolder[/b] end " .
" where messId in(" . $mId . ") and " . $_SESSION['uid'] . 
" in (fromUid,toUid) ";
K@llenMedlem sedan mars 20032 667 inlägg
#11

Nu så :D

Tack LarsG, du är ju en riktig hajare på sql. ;)

K@llenMedlem sedan mars 20032 667 inlägg
#12

.

134 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)