Avatar billede ronniej Nybegynder
06. april 2009 - 22:09 Der er 8 kommentarer og
1 løsning

Opdater mysql table script

Jeg behøver lidt hjælpe her. har lavet et script der lister alle ting i min mysql table, jeg vil meget gerne have en checkbox ude i siden af alle de ting som jeg kan checke og så klikke opdater og den opdatere mysql tabellen, også ved multiple checks.

$query  = "SELECT * FROM training_stock";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
  echo "<tr>";
  echo "<td width=300 bgcolor=$bgcolour>$row[product]</td>";
  echo "<td width=300 bgcolor=$bgcolour>$row[sn]</td>";
  echo "<td width=300 bgcolor=$bgcolour>$row[note]</td>";
  echo "<td width=25><input type='checkbox' name='faulty' value='1'></td>";

  echo "</tr>";
}

Jeg er ikke sikker på jeg sætte value til 1 eller om jeg skal sætte den til f.eks $row[id] så når jeg opdatere mysql and den kigger på product id.
Jeg vil meget gerne have feltet "faulty" i min mysql tabel product_stock til at opdatere til 1 og det skulle så virke hvis jeg tjekker mere end 1 ad gangen.

Håber nogen kan hjælpe

Ronnie
Avatar billede Hardball21 Nybegynder
06. april 2009 - 23:34 #1
Du er ikke langt fra - du kan bruge navnet på checkboxen som en array

<input type='checkbox' name='CB[1]' value='1'>
...
<input type='checkbox' name='CB[33]' value='1'>
...
<input type='checkbox' name='CB[232]' value='1'>
...

når du så kommer over på den anden side kan du hente alle dine checkboxe sådan:

$Arr = $_POST['CB'];

($Arr indeholder en liste over alle de checkboxe som er blevet krydset af)
Avatar billede ronniej Nybegynder
07. april 2009 - 06:48 #2
Det lyder faktisk til at være en rigtig god løsning. hvordan ville mit update mysql script so se ud ?

Hvis du ikke lige har noget imod at starte mig med det ..

Ronnie
Avatar billede Hardball21 Nybegynder
07. april 2009 - 09:27 #3
Så vidt Jeg husker ser det nogenlunde sådan ud:

$Arr = $_POST['CB'];

foreach ($Arr as $CheckBox => $CheckValue) {

    @mysql_query("UPDATE tabel SET felt=1 WHERE nogle=$CheckBox");

}

Du bruger ikke $CheckValue til noget i dette eksempel - er altid 1 -- men den kunne du bruge hvis du f.eks. brugte en Radio box som kan have een værdi ud af et sæt (f.eks. ja/nej/måske)
Avatar billede ronniej Nybegynder
07. april 2009 - 09:57 #4
Jeg forstår ikke helt hvor vi har $checkbox og $checkvalue fra, er det nogen vi laver ? ellers ser resten OK ud...
Avatar billede Hardball21 Nybegynder
07. april 2009 - 12:17 #5
ikke noget problem - for du bruger "foreach" til at køre gennem din array ($Arr) sker dette:

  foreach (array_expression as $key => $value) {

  }

for hver emne i $Arr får man både Nøglen og værdien af nøglen så hvis vi bruger den tidligere form vi brugte får du tre nøgler (og værdier):

$Arr[1]  = 1
$Arr[33]  = 1
$Arr[232] = 1

Håber jeg ikke træder for meget i det :)

Reference:
http://dk.php.net/manual/en/control-structures.foreach.php
Avatar billede ronniej Nybegynder
07. april 2009 - 13:39 #6
Så jeg putter flg ind på min side der lister ting

<input type='checkbox' name='CB[1]' value='1'>

Og så bruger jeg flg for at updatere min mysql

$Arr = $_POST['CB'];

foreach ($Arr as $CheckBox => 1) {

    @mysql_query("UPDATE tabel SET felt=1 WHERE nogle=$CheckBox");

}


Regner med at jeg skulle redigere $CheckValue til 1 hvis jeg vil ha alle til at blive opdateret med 1 ?


Hvis jeg vil lave det automatisk så når jeg lister produkterne og vi brugte

name='CB[1]'

Hvordan gør jeg så den opdatere med en for hver entry ?

Ronnie
Avatar billede Hardball21 Nybegynder
07. april 2009 - 14:48 #7
Du skal have en variabel som den sidste parameter i foreach:

  foreach ($Arr as $CheckBox => $IkkeBrugtVariabel)

sådan er syntaksen - men du behøver ikke bruge den til noget.


Når du bygger din tabel hvor du har checkboxen indsætter du den enkelte's post nøgle i navnet.

Du bruger 'product', 'sn' og 'note' felterne til at vise info så når du bygger gør du det på samme måde:

    echo "<input type='checkbox' name='CB[" . $row['nogle'] . "]' value='1'>";

(går ud fra din tabel har en unik nøgle 'nogle' - erstat med hvad du bruger)

Din SQL syntax er lige i skabet!
Avatar billede ronniej Nybegynder
07. april 2009 - 15:21 #8
Oki, så lad os opsummere det hele.

Så når jeg lister ud, bruger jeg flg eksempel hvor nøglen ID er unik.

echo "<input type='checkbox' name='CB[" . $row['id'] . "]' value='1'>";

og når jeg så har markeret den checkbox og sender den form så sker flg.

$Arr = $_POST['CB'];

foreach ($Arr as $CheckBox => $IkkeBrugtVariabel) {

    @mysql_query("UPDATE mintabel SET faulty=1 WHERE id=$CheckBox");

}

Skulle det gøre trikket ?
Avatar billede Hardball21 Nybegynder
07. april 2009 - 15:29 #9
Ja, det ser rigtigt ud!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester