Toon posts:

[CF/SQL] delete from tabel where idnr = 1,2,6,9

Pagina: 1
Acties:

Verwijderd

Topicstarter
[sql-gedeelte al beantwoord, nu het CF VRAAGSTUK nog (scroll down)]
ken dat? waarschijnlijk de categorie newbee, maar ik wil in de formpagina alle records weergeven met een checkbox daarvoor, (zoals hotmail) en de geselecteerde records verwijderen in 1 query. Of moet het met een loop (en hoe is zou dat moeten?) :? :? :?

Verwijderd

WHERE id IN(1,2,3) ofzo (want heb het nog niet vaak gebruikt)

zoek maar eens op mysql.com

is handig om een array van "wiswaarden" te exploden en zo ineens mee te geven aan de query.

Verwijderd

Topicstarter
thanx-je-wel ik ga kijken! *D

Verwijderd

Topicstarter
Die code van jou werkt wel

<cfquery datasource="blabla">
DELETE from nws2 WHERE idnr IN(1,7,8,9)
</cfquery>

Maar het probleem nu is hoe je van alle checkboxen op de FORM-pagina 1 regel krijgt zoals 1,7,8,9 ??

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:42

gorgi_19

Kruimeltjes zijn weer op :9

cfquery; houdt dat in ColdFusion? Of eventueel welke taal heb je nodig?

[no offence]
Misschien zou je ook jouw kennis met betrekking tot programmeren kunnen delen? Ik kom af en toe topics tegen (schiet me even niet eentje te binnen) waar jouw ervaring waarschijnlijk de topicstarter verder mee geholpen kan worden
[/no offence]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
yep koude fusie

Verwijderd

Topicstarter
Dit heb ik nu maar het werkt niet :'(

<!- FORMPAGINA ->

<INPUT TYPE="Checkbox" NAME="box1" VALUE="#idnr#">
<INPUT TYPE="Checkbox" NAME="box2" VALUE="#idnr#">
<INPUT TYPE="Checkbox" NAME="box3" VALUE="#idnr#">


<!- DELETEPAGINA ->

<CFSET teller=1>
<CFSET regeltje="0,">
<CFLOOP FROM="1" TO="50" INDEX="maakRegeltje">
<CFSET huidigeBox = "box"&teller>
<CFIF #ParameterExists(evaluate(FORM.huidigeBox))#>
<CFSET regeltje = #regeltje#&"#huidigeBox#,">
</CFIF>
<CFSET teller=#teller#+1>
</CFLOOP>

<cfquery datasource="egpn">
DELETE from nws2
WHERE idnr IN(#regeltje#)
</cfquery>

Verwijderd

Op zaterdag 06 juli 2002 23:14 schreef plukvandepetteflat het volgende:
Dit heb ik nu maar het werkt niet :'(

..
Met php zou je het met de functies implode/explode kunnen doen, maar van koude fusie ken ik niets :)

Verwijderd

Topicstarter
ik meen ergens gelezen te hebben over dat implode/explode ofzo in CFML is: EVALUATE , maar het lukt me daar niet mee. (zie mijn script, daar probeer ik het ook met evaluate)

hoe zou de scriptregel er in PHP uitzien dan?

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Op zaterdag 06 juli 2002 23:14 schreef plukvandepetteflat het volgende:
Dit heb ik nu maar het werkt niet :'(

<CFSET teller=1>
<CFSET regeltje="0,">
<CFLOOP FROM="1" TO="50" INDEX="maakRegeltje">
<CFSET huidigeBox = "box"&teller>
<CFIF #ParameterExists(evaluate(FORM.huidigeBox))#>
<CFSET regeltje = #regeltje#&"#huidigeBox#,">
</CFIF>
<CFSET teller=#teller#+1>
</CFLOOP>

<cfquery datasource="egpn">
DELETE from nws2
WHERE idnr IN(#regeltje#)
</cfquery>
Je geeft niet aan welke foutmelding je krijgt, maar ik gok erop dat je SQL niet geldig is. Die gaat namelijk luiden:
code:
1
2
DELETE from nws2
WHERE idnr IN (1, 2, 3,) <-- let op die komma na de 3

Die komma mag daar dus niet staan... je moet je loop een klein beetje aanpassen, of na de loop het laatste karakter uit #regeltje# wissen.

Verwijderd

Topicstarter
Op zaterdag 06 juli 2002 23:54 schreef Delphi32 het volgende:

[..]

Je geeft niet aan welke foutmelding je krijgt,
...
let op die komma na de 3
Nu heb ik dit:

<CFSET teller=1>
<CFSET regeltje="0">
<CFLOOP FROM="1" TO="50" INDEX="maakRegeltje">
<CFSET THIS.huidigeBox = #evaluate('box'&#teller#)#>
<CFIF #ParameterExists(huidigeBox)#>
<CFSET regeltje = #regeltje#&", #huidigeBox#">
</CFIF>
<CFSET teller=#teller#+1>
</CFLOOP>

<cfquery datasource="egpn">
DELETE from nws2
WHERE idnr IN(#regeltje#)
</cfquery>


EN DE FOUTMELDING is dit:

Error Diagnostic Information

An error occurred while evaluating the expression:


THIS.huidigeBox = #evaluate('box'&#teller#)#



Error near line 20, column 8.
--------------------------------------------------------------------------------

An error has occurred while processing the expression:

box4


Error near line 1, column 1.


--------------------------------------------------------------------------------

Error resolving parameter BOX4


ColdFusion was unable to determine the value of the parameter. This problem is very likely due to the fact that either:

You have misspelled the parameter name, or
You have not specified a QUERY attribute for a CFOUTPUT, CFMAIL, or CFTABLE tag.



The error occurred while processing an element with a general identifier of (CFSET), occupying document position (20:2) to (20:53).

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

aangezien je een Coldfusion probleem hebt ff CF in de titel erbij gezet aangezien de eerste reactie in principe de "SQL" categorie al heeft beantwoord.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
ik heb bovenaan het eerste bericht geschreven dat de sql vraag beantwoord is, nu de cf nog... (dus als je daar een oplossing voor weet...) :P

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

code:
1
2
<INPUT TYPE="Checkbox" NAME="box" VALUE="#idnr#">
<INPUT TYPE="Checkbox" NAME="box" VALUE="#idnr#">

Resultaat is dat "box" een array is van al de items die gechecked zijn.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
JIPPEEE! Bedankt! het werkt

eenvoud ruleZ

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
[kuch]
ParameterExists()?
Evaluate()?
[/kuch]

Misschien verstandig om de ColdFusion Coding Guidelines eens door te nemen.

Verwijderd

Topicstarter
en dan?? het werkt toch? :P

Verwijderd

Op zondag 07 juli 2002 00:43 schreef dusty het volgende:
Resultaat is dat "box" een array is van al de items die gechecked zijn.
Ahum... nee dat is geen array, dat wordt een list. En je moet de resultaten dus ook als een list benaderen.

Overigens kun je beter IsDefined ipv ParameterExists gebruiken ivm met performance drop van de laatste.

Verwijderd

Topicstarter
bedoel je nou in dit geval of gewoon over het algemeen?? Want die code hierboven is helemaal niks, dat weet ik. Maar nu gaat het wel goed door dus op de FORM-pag een array te maken van 50 checkboxen met de naam BOX
code:
1
2
<INPUT TYPE="Checkbox" NAME="box" VALUE="#idnr#">
<INPUT TYPE="Checkbox" NAME="box" VALUE="#idnr#">

en dan op de deletepagina
code:
1
2
3
<cfquery datasource="egpn">
DELETE from nws2 WHERE idnr IN(#box#) 
</cfquery>

Verwijderd

En dan maak je gebruik van een list. Een list is niets anders als een string met meerdere values gescheiden door een comma.

Een array is een "database structuur" met rows en column en evt. diepte in een values.

Verwijderd

Topicstarter
Op zondag 07 juli 2002 00:43 schreef dusty het volgende:

Resultaat is dat "box" een array is van al de items die gechecked zijn.
Ik neem ook maar zijn termen over :D

Verwijderd

Op zondag 07 juli 2002 17:12 schreef plukvandepetteflat het volgende:

[..]

Ik neem ook maar zijn termen over :D
De values die je terugkrijgt zijn in de volgende format

value box1 node1, value box1 node2

En niet
value box1[1] = value
value box1[2] = value

Verwijderd

Topicstarter
maar dat is in dit geval ook nie tnodig (zie delete query)

Verwijderd

<cfquery datasource="blabla">
DELETE from nws2 WHERE idnr IN(1,7,8,9)
</cfquery>

Maar het probleem nu is hoe je van alle checkboxen op de FORM-pagina 1 regel krijgt zoals 1,7,8,9 ??
---------------------------------------------------------------------------------------------------------

Alle form velden hebben dezelfde naam toch .....dan kun je ook gebruiken

<cfquery datasource="blabla">
DELETE from nws2 WHERE idnr =#FORM.box#
</cfquery>

form.box maakt dan een list gescheiden door een comma...geen gedoe met arrays en super snel.

Verwijderd

Topicstarter
het enige probleem daarmee, bbommel, is dat die functie niet werkt, dat was de probleem, en de oplossing was (anderhalve maand geleden :) ) delete from nws2 WHERE idnr IN (#FORM.box#).
Pagina: 1