Actibus Skrevet 14. desember 2011 Del 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] Lenke til kommentar
Runar Skrevet 14. desember 2011 Del 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 Lenke til kommentar
Actibus Skrevet 14. desember 2011 Forfatter Del 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 Lenke til kommentar
Gjest Skrevet 14. desember 2011 Del 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'] Lenke til kommentar
Actibus Skrevet 14. desember 2011 Forfatter Del 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"; Lenke til kommentar
Thomas. Skrevet 14. desember 2011 Del 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. Lenke til kommentar
Gjest Skrevet 14. desember 2011 Del 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 Lenke til kommentar
Actibus Skrevet 14. desember 2011 Forfatter Del 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 Lenke til kommentar
Thomas. Skrevet 14. desember 2011 Del 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]; Lenke til kommentar
Actibus Skrevet 14. desember 2011 Forfatter Del 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. Lenke til kommentar
Gjest Skrevet 14. desember 2011 Del Skrevet 14. desember 2011 Gir det php error eller IDE error? (Ide som et verktøy du utvikler i) Lenke til kommentar
Thomas. Skrevet 14. desember 2011 Del 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] . "'"; Lenke til kommentar
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å