hm87 Skrevet 25. august 2004 Del Skrevet 25. august 2004 Jeg har laget et script for å sette opp ting jeg må huske å få tak i. Og da har jeg et lite problem med mysql queryen.. Det går greit hvis jeg krysser av en og en, men hvis jeg skal krysse av og oppdatere flere vet jeg ikke hvordan jeg skal gjøre det.. UPDATE stuff SET skaffet = 'ja' WHERE id = $skaffet_id Lenke til kommentar
audunr Skrevet 25. august 2004 Del Skrevet 25. august 2004 (endret) Quick and dirty: UPDATE stuff SET skaffet = 'ja' WHERE id = IN($skaffet_streng) $skaffet_streng er en komma-separert tekststreng over de IDene som skal oppdateres. Denne listen lager du f.eks. slik: Skjemaet: <input type="checkbox" name="skaffet_id[]" value="' . $IDen '"> PHPen før SQL-queryen over: $skaffet_streng = implode(",", $skaffet_id) Du blir nok nødt til å bytte ut $skaffet_id med $_POST["skaffet_id"]. EDIT: Alternativ som ikke bare løser problemet ditt, er å lage en liste over alle IDene på siden, lagre denne som en tekststreng i skjemaet: <input type="hidden" name="alleIDer" value="' . $TekststrengMedAlleIDerSeparertMedKomma . '"> I PHPen går du gjennom denne listen, og setter skaffet til "nei" for alle som ikke finnes i arrayet skaffet_id, som beskrevet over. MVH Audun Endret 25. august 2004 av audunr Lenke til kommentar
diskvask Skrevet 25. august 2004 Del Skrevet 25. august 2004 Checkboxene for de filmene du har kan settes til f.eks. "name=skaffet[]". foreach($_POST['skaffet'] as $skaffet_id) { echo "Film med id, $har_id, oppdateres"; } Husker ikke helt sql-syntax for å oppdatere flere felt i ett jaffs, men det er vel muligens "... WHERE id = 1 OR id = 2" etc. Lenke til kommentar
hm87 Skrevet 25. august 2004 Forfatter Del Skrevet 25. august 2004 Prøvde UPDATE stuff SET skaffet = 'ja' WHERE id = IN($skaffet_id) hvor $skaffet_id er alle id'ene separert med komma, (eks: 30,19,34) men det funka ikke.. Lenke til kommentar
audunr Skrevet 25. august 2004 Del Skrevet 25. august 2004 Prøvde UPDATE stuff SET skaffet = 'ja' WHERE id = IN($skaffet_id) hvor $skaffet_id er alle id'ene separert med komma, (eks: 30,19,34) men det funka ikke.. Det funka ikke, skriver du. Men hva skjedde? Fikk du en feilmelding? Forsøkte du andre ting? Sjekket du om tabellen ble oppdatert? Er koden som viser innholdet i tabellen riktig? MVH Audun Lenke til kommentar
hm87 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 Jeg fikk ingen feilmelding, og det ble ingen endringer i databasen. Det er ikke noe feil med koden som henter ut data heller. Hvor id'ene skrives ut: <input name=\"skaffet[]\" type=\"checkbox\" value=\"$row[0]\"> Her er koden som skal sette inn infoen: if($_POST['submit-skaffet']) { foreach ($_POST['skaffet'] as $key => $value) { $skaffet_id .= "$value,"; } $skaffet_id = substr($skaffet_id, 0, -1); //Kutter vekk siste komma tegnet $query = "UPDATE stuff SET skaffet = 'ja' WHERE id = IN($skaffet_id)"; $result = mysql_query($query); } // If slutt Det er bare problem hvis jeg skal sette inn flere id'er.. Lenke til kommentar
audunr Skrevet 26. august 2004 Del Skrevet 26. august 2004 if($_POST['skaffet']) { $skaffet_id = implode(",", $_POST['skaffet']); $query = "UPDATE stuff SET skaffet = 'ja' WHERE id = IN($skaffet_id)"; $result = mysql_query($query); } // If slutt Tipper det var if($_POST['submit-skaffet']) som var problemet, elller er det en egen variabel? (Submit-knappen?) Når det ikke skjer noe, som i dette tilfellet, bør du legge inn noe for å sjekke om if-statementet er true: if ($variabel) { echo "OK!"; kode som gjør et eller annet her; } Hvis du ser "OK!" på nettsiden, så vet du at koden også blir kjørt. MVH Audun Lenke til kommentar
hm87 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 Det er ikke noe feil med submit eller noe nei.. Funker fett å sette inn én og én, så jeg tror nok det er noe feil rundt den IN() funksjonen.. Lenke til kommentar
epsil Skrevet 26. august 2004 Del Skrevet 26. august 2004 Funker fett å sette inn én og én, så jeg tror nokdet er noe feil rundt den IN() funksjonen.. Ja. Feilen er likhetstegnet. Korrekt syntaks er UPDATE stuff SET skaffet = 'ja' WHERE id IN ($skaffet_id) IN er for øvrig et alias for «= ANY». Du kan også skrive UPDATE stuff SET skaffet = 'ja' WHERE id = ANY ($skaffet_id) Lenke til kommentar
hm87 Skrevet 26. august 2004 Forfatter Del Skrevet 26. august 2004 Jepp det funka.. Thanks! 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å