Gå til innhold

Vanskeligheter med mysql query


Anbefalte innlegg

Jeg har laget et script for å sette opp ting

jeg må huske å få tak i.

liste.jpg

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
Videoannonse
Annonse

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 av audunr
Lenke til kommentar

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
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

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

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
Funker fett å sette inn én og én, så jeg tror nok

det 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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...