[MySQL][Javascript] Array schrijven naar MySQL Dbase

Pagina: 1
Acties:

  • Drak0z
  • Registratie: November 2002
  • Laatst online: 02-02-2015
Hallo lui :)

Ik ben voor mijn werk bezig met een website waarin ze voor iedere werkgever (die ze overigens zelf invoegen in de mysql Dbase) aan kunnen geven of er uren voor een week zijn ingevoerd dmv een vakje aanklikken.

De huidige 'status' wordt uit de mysql database gelezen dmv een php script die een array vult (zie onder) om daarna met een ander php scriptje een table te bouwen vanuit deze array.

Array bouwen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//lees gegevens uit de database en bouw daarmee een array vol
//[n][0] = werkgever(0)/werknemer(1)
//[n][1] = id
//[n][2] = string naam
//[n][3 .. 55 (?)] = niet ingevuld(0)/ingevuld(1)

$jaar = date(Y);
$count = 0;
$wgresult = mysql_query("SELECT * FROM uren_werkgevers WHERE jaar = " . $jaar . " ORDER BY `naam`");
while ($werkgever = mysql_fetch_assoc($wgresult)) {
  //vul een deel van nieuwe array, daarna gooi alle werknemers die hieronder hangen er ook echt onder.
  $array[$count][0] = '0';
  $array[$count][1] = $werkgever["id"];
  $array[$count][2] = $werkgever["naam"];
  for ($i = 0; $i < 52; $i++) {
    //array om de ingevulde weken uit te lezen
    $array[$count][$i+3] = $werkgever[$i+1];
  }
  $count++;
  $wnresult = mysql_query("SELECT * FROM uren_werknemers WHERE jaar = " . $jaar . " AND gekoppelt_aan = " . $werkgever["id"] . " ORDER BY `naam`");
  while ($werknemer = mysql_fetch_assoc($wnresult)) {
    //zet alle werknemers die bij deze werkgever horen eronder
    $array[$count][0] = '1';
    $array[$count][1] = $werknemer["id"];
    $array[$count][2] = $werknemer["naam"];
    for ($i = 0; $i < 52; $i++) {
      //array om de ingevulde weken uit te lezen
      $array[$count][$i+3] = $werknemer[$i+1];
    }
    $count++;
  }
}


Table bouwen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$row = 0;
      $col = 0;
      while ($row < count($array)) {
        $count = 1;
        ?>
        <tr bordercolor="#666666">
        <td <?php if ($array[$row][0] == 1) { echo "style=\"background: #ababab;\""; } ?>><?php echo $array[$row][2]; ?></td>
        <?php
        while ($count <= 52) {
          if (($count / 4) - round(($count / 4),0) != 0) {
            ?>
              <td height="14" align="center" bordercolor="#0066CC" <?php if ($array[$row][$count+2] == 1) { echo "style=\"background: #0380b7;\""; } ?> onClick="changeColor(this)"><span class="style1">&nbsp;</span></td>
            <?php
          }
          else {
            ?>
              <td height="14" align="center" bordercolor="#cc6600" <?php if ($array[$row][$count+2] == 1) { echo "style=\"background: #0380b7;\""; } else { echo "style=\"background: #cc6600;\""; } ?> onClick="change4thColor(this)"><span class="style1">&nbsp</span></td>
            <?php
          }
        $count++;
        }
        ?></tr><?php
      $row++;
      }


De site zelf:
http://dev.drake.nl/Projects/Urencontrole/

Bij een klik wordt een javascriptje geactiveert die kijkt of de this.style.background gelijk is aan blauw, zo niet dan maakt ie hem blauw, zo wel dan maakt ie hem wit (of als de change4thColor wordt aangeroepen oranje, omdat ieder 4e veld oranje is ivm 4 wekelijkse uitbetaling)

Nu kom ik dus bij het probleem dat ik graag de veranderingen terug wil sturen naar mijn dbase.. dus als iets blauw is dat het in de dbase een 1 wordt, als iets niet blauw is een 0.
Ik zat zelf te denken aan een array te maken dmv javascript en die daarna naar php te 'sturen' om daarna php hem terug te laten schrijven.. maar ik heb echt geen idee hoe ik dat zou kunnen doen..
Hopelijk heeft iemand suggesties :)

[ Voor 21% gewijzigd door Drak0z op 15-09-2004 13:48 ]


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
De link die je geeft werkt niet.

Waarom gebruik je niet gewoon een checkbox?
HTML:
1
<input type="checkbox" ... >

| Toen / Nu


  • Drak0z
  • Registratie: November 2002
  • Laatst online: 02-02-2015
SuperRembo schreef op 15 september 2004 @ 13:41:
De link die je geeft werkt niet.

Waarom gebruik je niet gewoon een checkbox?
HTML:
1
<input type="checkbox" ... >
Link gefixt (excuses.. typfout :) )
Ik gebruik geen checkbox omdat ik die checkboxen niet mooi vind... en het zijn er 52 per regel (immers, 52 weken per jaar) .. + ze waren me iets te groot :)

Verwijderd

Je zou de array die je genereerd op kunnen slaan in een (long)text field in je database.
Stop hem er dan in met serialize(), en haal hem er weer uit met unserialize().

  • Drak0z
  • Registratie: November 2002
  • Laatst online: 02-02-2015
Verwijderd schreef op 15 september 2004 @ 13:58:
Je zou de array die je genereerd op kunnen slaan in een (long)text field in je database.
Stop hem er dan in met serialize(), en haal hem er weer uit met unserialize().
Hiermee kan ik mijn php array 'opslaan' en doorgeven naar een andere pagina? .. op zich wel interessant.. maar dan ben ik er nog niet achter hoe ik de 'status' van een cell kan meegeven..

Ik ga zo maar eens slapen eerst denk ik (heb een nachtje doorgewerkt.. merk ik ook aan hoe hard ik doorwerk nu :P ) om daarna maar eens helder na te denken

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Drak0z schreef op 15 september 2004 @ 13:49:
[...]
Link gefixt (excuses.. typfout :) )
Ik gebruik geen checkbox omdat ik die checkboxen niet mooi vind... en het zijn er 52 per regel (immers, 52 weken per jaar) .. + ze waren me iets te groot :)
Het opslaan van de wijzgingen zal je toch via een form moeten doen. Het makkelijkste gaat het met checkboxen.
Als je dat werkend hebt dan kan je aan de layout gaan werken. Volgens mij heb je voorlopig genoeg te doen (te leren).

| Toen / Nu


  • Drak0z
  • Registratie: November 2002
  • Laatst online: 02-02-2015
Ik heb het nu opgelost door bij iedere klik een popunder te genereren die de informatie van de cel krijgt (type [0,1] (0=werkgever, 1=werknemer), id[mysql id], weeknr[1..52]) en een bitje 0 of 1 die aangeeft welke status hij is.. In deze popunder zit een php scriptje die deze waarden in een session variabele (array) opslaat dmv de $_GET["bla"] methode. Nu kan ik ook gewoon bij 'opslaan' zeggen dat hij de sessie array weg moet schrijven naar de dbase... Took me a while to figure out :P
Pagina: 1