Hej, hur gör man lättast för att uppdatera värdena i ett formulär till databasen?
Har en mysql-hämtning som hämtar olika rader från databasen som sen skrivs ut i ett formulär. De utskrivna värdena ska man alltså kunna uppdatera. Nu lyckas jag bara att uppdatera den sista raden men inte alla.
Alltså, först och främst varför öppnar du mer än en connection i scriptet? Gör mysql_connect en gång endast. Du kan ställa flera frågor till samma connection. Men som det funkar just nu stänger du inte den första innan du (helt i onödan) öppnar en till. Det tar definitivt onödig tid och onödiga resurser, och jag vet inte huruvida det också kan ge upphov till fel i skripten. Börja med att plocka bort nummer två!
I detta fall verkar det inte spela någon roll för jag har testat att hämta data från en tabell bara, men det fungerar inte ändå. Felet är ju att bara den sista utskriften uppdateras eftersom jag använder $_POST[] när jag ska uppdatera och då tar den bara den sista $_POST[] och inte alla.
I detta fall verkar det inte spela någon roll för jag har testat att hämta data från en tabell bara, men det fungerar inte ändå. Felet är ju att bara den sista utskriften uppdateras eftersom jag använder $_POST[] när jag ska uppdatera och då tar den bara den sista $_POST[] och inte alla.
Alltså, det kanske inte påverkar ditt fel, men det är ändå inte bra att ha två connect i samma fil. Minst av allt utan close emellan.
Men, du måste införa ändringarna direkt du postat någon. Du kan inte vånta till tre sidladdningar senare för då får du mycket riktigt bara den sista.
Vad är det du vill göra då? Varför laddar du om och om innan uppdateringen? Eller missförstår jag?
Jag laddar om uppdateringen för att jag trodde det var det enda möjliga för att alla rader ska uppdateras. Hur ska jag annars skriva? Måste jag döpa varje utskriven rad med något speciellt?
Ursäkta såg inte ditt senaste svar. Vad som händer beror ju på hur koden är skriven för vad som händer vid tryck på den knappen.
filipbh skrev:
Jag laddar om uppdateringen för att jag trodde det var det enda möjliga för att alla rader ska uppdateras. Hur ska jag annars skriva? Måste jag döpa varje utskriven rad med något speciellt?
Exakt. Enklast är att antingen ge dom namn efter idnr i databasen eller löpnummer modell: u1, u2, u3, ...
Rowid = det id som produkten har i databasen
id i newantal är produktens artikelnummer
Nej, de skriver över varandra! Varje rad lagrar innehållet i samma (två) fack i $_POST. "rowid" blir just strängen med 'r','o','w','i' och 'd' i.Om din databasstruktur är vettig borde du kunna få fram produktens artikelnummer om du känner idnumret i databasen?
Pröva följande:
//för varje rad:
<?php $nameN = "newantal".$rowid;
//Förutsatt at $rowid har idvärdet från databasen
echo "<input type=\"text\" class=\"form\" name=\"$nameN\" id=\"$shop_prodnr\" value=\"$shop_antal\">";
//i mottagarfilen
if($_GET['recount']){
$link = mysql_connect("localhost","$u","$p");
$databas = mysql_select_db("databas");
foreach ($_POST as $ix => $info){
if (strstr($ix, 'newantal') !== FALSE) {
$id = substr($_POST[rowid], 8); //Den del av strängen som håller i $rowid
$sql = "UPDATE fyrshop_temporder SET kop_antal='$info' WHERE id = $id";
mysql_query("$sql");
echo "görs om";
}
}
Tabell temporder
----------------
rowid = produktens id i databasen.
shop_prodnr = produktens artikelnummer.
De variablarna som börjar med $shop är hämtade från temporder. Sen för att kunna skriva ut produktens namn använder jag mig av den andra sql-hämtningen. De utskrifter får namnet $product i början.