Actibus Skrevet 14. desember 2011 Skrevet 14. desember 2011 Hvordan kan jeg få denne til å virke? Nekter å godta at jeg har en variabel i $_POST UPDATE service SET delnr$start = '$_POST[delnr$start]
Runar Skrevet 14. desember 2011 Skrevet 14. desember 2011 (endret) Hva skal delnr$start forestille? Redigert: delnr$start er da ingen gyldig variabel? Prøv $_POST['delnr' . $start]. Endret 14. desember 2011 av Runar waits for alice
Actibus Skrevet 14. desember 2011 Forfatter Skrevet 14. desember 2011 (endret) Får bare beskjed om syntax feil om jeg prøver som du skriver. Det jeg prøver å få til er følgende: Jeg har 20 felt som skal oppdateres inn i en table, her kalt "service" Istedetfor å manuelt lage kode for hvert enkelt felt tenkte jeg at man kunne bruke en "while" loop som da øker med 1 for hver gang. $start = 1; $stopp = 20; while ($start < $stopp) { $sql = "UPDATE service SET delnr$start = '$_POST[delnr$start]' WHERE serviceId = '$_POST[serviceId]'"; $start++; } if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } Jeg har da laget en variabel som heter $start og den økes med 1 etter hver loop, hadde jeg fått koden til å virke skulle det vært på en slik måte: UPDATE service SET delnr1 = '$_POST[delnr1]', delnr2 = '$_POST[delnr2]' etc. Endret 14. desember 2011 av Actibus
Gjest Skrevet 14. desember 2011 Skrevet 14. desember 2011 Problemet er at du ikke kan skrive slik: $_POST[delnr1] for en $_POST, det må f.eks skrives slik: $_POST['delnr1']
Actibus Skrevet 14. desember 2011 Forfatter Skrevet 14. desember 2011 Jeg kan ikke bruke $_POST['delnr1'] i en sql spørring, det gir syntax feil. Følgende kode virker så sant start og stopp er samme, altså at den kun skal lagre en verdi, setter jeg stopp høyere lagrer den kun siste (høyeste) verdien, hvorfor? $start = 11; $stopp = 12; echo $_POST['serviceId']; while ($start <= $stopp) { echo $start; $sql = "UPDATE service SET delnr$start = '$_POST[delnr4]' WHERE serviceId = '$_POST[serviceId]'"; $start++; } if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "Servicen er blitt oppdatert";
Thomas. Skrevet 14. desember 2011 Skrevet 14. desember 2011 Jeg kan ikke bruke $_POST['delnr1'] i en sql spørring, det gir syntax feil. Følgende kode virker så sant start og stopp er samme, altså at den kun skal lagre en verdi, setter jeg stopp høyere lagrer den kun siste (høyeste) verdien, hvorfor? $start = 11; $stopp = 12; echo $_POST['serviceId']; while ($start <= $stopp) { echo $start; $sql = "UPDATE service SET delnr$start = '$_POST[delnr4]' WHERE serviceId = '$_POST[serviceId]'"; $start++; } if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "Servicen er blitt oppdatert"; Fordi du overskriver $sql i hver while loop.
Gjest Skrevet 14. desember 2011 Skrevet 14. desember 2011 (endret) Tok meg litt frihet og forbedret koden din mot MySQL-Injections, du kan jo Google å se hva det er $start = 11; $stopp = 12; echo $_POST['serviceId']; while ($start <= $stopp) { echo $start; $sql = "UPDATE service SET delnr".$start." = '".mysql_real_escape_string($_POST['delnr4'])." WHERE serviceId = '".mysql_real_escape_string($_POST['serviceId'])."'" ; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } $start++; } echo "Servicen er blitt oppdatert"; Bare å teste i vei å se om dette fungerer noe bedre Endret 14. desember 2011 av Gjest
Actibus Skrevet 14. desember 2011 Forfatter Skrevet 14. desember 2011 (endret) Se der ja, virket litt bedre det Takk for hjelpen! Når det gjelder sikkerheten, systemet skal kun brukes på en lokal (offline) server og kun av meg selv, så ofret ikke det en tanke, men kanskje greit å venne seg til å bruke det uansett. Noe forslag til hvordan jeg kan få til samme i POST funksjonen, altså for $_POST[delnr".$start."] Endret 14. desember 2011 av Actibus
Thomas. Skrevet 14. desember 2011 Skrevet 14. desember 2011 Se der ja, virket litt bedre det Takk for hjelpen! Når det gjelder sikkerheten, systemet skal kun brukes på en lokal (offline) server og kun av meg selv, så ofret ikke det en tanke, men kanskje greit å venne seg til å bruke det uansett. Noe forslag til hvordan jeg kan få til samme i POST funksjonen, altså for $_POST[delnr".$start."] Skrive variabel i POST-funksjonen? Eksempel: $_POST['string'] $_POST['string' . $var];
Actibus Skrevet 14. desember 2011 Forfatter Skrevet 14. desember 2011 Det virker ikke, gir syntax feil i sql funksjonen, virker hvis det hadde vært en variabel. Men løste det vet å gjøre litt merarbeid: ..... $delnr = $_POST['delnr'.$var]; også bruke $delnr istedetfor POST i SQL: $sql = "UPDATE service SET delnr".$start'" = '$delnr' etc.
Gjest Skrevet 14. desember 2011 Skrevet 14. desember 2011 Gir det php error eller IDE error? (Ide som et verktøy du utvikler i)
Thomas. Skrevet 14. desember 2011 Skrevet 14. desember 2011 Det virker ikke, gir syntax feil i sql funksjonen, virker hvis det hadde vært en variabel. Men løste det vet å gjøre litt merarbeid: ..... $delnr = $_POST['delnr'.$var]; også bruke $delnr istedetfor POST i SQL: $sql = "UPDATE service SET delnr".$start'" = '$delnr' etc. Det virker. Du har nok ikke gjort det riktig Du må jo bytte ut $var med variabelen din. F.eks: $sql = "UPDATE `service` SET `delnr" . $start . "` = '" . $_POST['delnr' . $start] . "'";
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå