Hallo,

Ik heb een kolom Sequence, deze moet per insert één erbij optellen. Dus als er maar 1 record geinsert wordt, staat er maar een keer een 1. Worden er meerdere records geinsert in één keer, komt er bv 1,2,3 te staan.
dus de kolom ziet er dan ongeveer als volgt uit:

1
2
3
4
1
2
1
2
3
1
1

Hoe kan ik bovenstaande voor elkaar krijgen zonder Auto Increment? Met behulp van php of sql?

Alvast bedankt!
Ik heb een andere applicatie die blijkbaar op die manier werkt bij het aanmaken van bijvoorbeeld een order. Inderdaad, de functie werkt niet, ik maak trouwens gebruik van mssql database. De gegevens worden inderdaad via een lus weggeschreven.

Maar het probleem van het nummertje is dat ik niet weet op welke manier je het nummertje kunt bepalen en bij een nieuwe reeks bij 1 laten beginnen.
Ik begrijp niet helemaal wat het probleem is, de volgorde waarop je invoert is de volgorde waarmee je selecteert, dus het is niet nodig om een volgorde aan te geven.
Dat begrijp ik, maar ik heb 2 applicaties, één applicatie werkt op die manier en ik ga liever niet in de database zaken daarvoor aanpassen.

Daarom dat ik het in mijn script wil regelen.
Controleer als je in de lus een insert doet of het vorige orderid gelijk is aan het nieuwe orderid.
Is het orderid gelijk aan het vorige orderid --> teller +1, anders teller=1

Laat anders eens de code zien, waarmee je de records invoegt.

if (isset($_POST['plaatsorder'])) {
{
$query = "INSERT INTO Order (OrderID, Seq) SELECT artcode FROM winkelwagen WHERE sessionid = '".$_POST['sessionid']."'";
$result = sqlsrv_query($dbhandle,$query2);
}
}


[size=xsmall]Toevoeging op 30/10/2014 23:40:56:[/size]

Ik heb de overbodige code er uitgegooid, zodat het wat overzichtelijker is :)

[size=xsmall]Toevoeging op 30/10/2014 23:41:30:[/size]

en met de Seq wordt hier nog niets gedaan, dat snap ik dus niet
In SQL server kan je dit als volgt doen:
[code lang="sql"]
INSERT INTO [Order] (OrderID, Seq)
SELECT artcode, ROW_NUMBER() OVER (ORDER BY idcol)
FROM winkelwagen
WHERE session_id = 'xxxxxxx'
[/code]
Wat zie jij als overbodige code? De code die je op 30/10/2014 om 23:40:16 post, bevat (nu) in ieder geval geen lus (meer).
Dennis B op 30/10/2014 23:16:44

De gegevens worden inderdaad via een lus weggeschreven.


Ik dacht dat het een loop was, dit is toch niet het geval, hij kopieert alles vanaf de winkelwagen tabel naar de order tabel.
Hieronder de volledige code:


<?php
if (isset($_POST['plaatsorder'])) {
								{
$query = 	"INSERT INTO Order
											(OrderID, Seq, QtyOrdered, ItemID)
											SELECT sessionid, ........, wwartaantal, wwartcode
											FROM winkelwagen 
											WHERE sessionid = '".$_POST['sessionid']."'";
								
$result = sqlsrv_query($dbhandle,$query);

}
?>


Alvast bedankt.
Dennis B op 31/10/2014 18:13:53

Ik dacht dat het een loop was, dit is toch niet het geval, hij kopieert alles vanaf de winkelwagen tabel naar de order tabel.

Waarom ga je gegevens kopiëren?
Los daarvan; in een winkelwagen kan, normaal gesproken, meer dan 1 product. Dus zal er wel een lus/loop zijn?
> Waarom ga je gegevens kopiëren?

Een winkelwagen is in principe maar een tijdelijk iets, dus ik kan me voorstellen dat je bij het afrekenen de inhoud verplaatst (oftewel kopieert en verwijdert) naar een andere tabel.

Wat ik wel ernstig vind, is dat er een joekeloeris van een SQL-injection-mogelijkheid in die ene query zit waarmee je in essentie de inhoud van de winkelwagentjes van andere bezoekers ook meteen kan overhevelen naar de ordertabel.

Reageren