Snel en eenvoudig nieuwe roosters toevoegen
Ik heb een script gemaakt, waarbij de users opgehaald worden. Deze worden in een $count geteld. In de FOR loop, wordt gekeken hoevaak de query uitgevoerd moet worden. Echter wordt er wel wat aan de database toegevoegd, alleen niet de koppeling (user_id).
Iemand een idee?
Code (php)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
include ('../connect/connect.php');
$result_get_users = mysql_query ("SELECT * FROM users WHERE authentication='1' "); //Users ophalen die toegevoegd moeten worden
$count = "0"; // Tellen van toegevoegde roosters
while ($row = mysql_fetch_array($result_get_users)){
$count++; //Start het tellen
echo $row['username'].'<br />'; //Controleren of waarde USERNAME wordt weergeven
echo $row['user_id']; Controleren of waarde USER_ID wordt weergeven
}
//Invoegen van Query
for ($i=1; $i<=$count; $i++)
{
$sql_insert_user = mysql_query ("INSERT INTO planning (
rooster_id,
week_nr,
koppeling,
ma_start,
ma_eind,
di_start,
di_eind,
wo_start,
wo_eind,
do_start,
do_eind,
vrij_start,
vrij_eind,
za_start,
za_eind,
zo_start,
zo_eind
)
VALUES
(
'',
'".mysql_real_escape_string($_POST['week'])."',
'".mysql_real_escape_string($row['user_id'])."',
'".mysql_real_escape_string($ma_start)."',
'".mysql_real_escape_string($ma_eind)."',
'".mysql_real_escape_string($di_start)."',
'".mysql_real_escape_string($di_eind)."',
'".mysql_real_escape_string($wo_start)."',
'".mysql_real_escape_string($wo_eind)."',
'".mysql_real_escape_string($do_start)."',
'".mysql_real_escape_string($do_eind)."',
'".mysql_real_escape_string($vrij_start)."',
'".mysql_real_escape_string($vrij_eind)."',
'".mysql_real_escape_string($za_start)."',
'".mysql_real_escape_string($za_eind)."',
'".mysql_real_escape_string($zo_start)."',
'".mysql_real_escape_string($zo_eind)."')");
}
echo "Teller staat op".$count; //Weergeef toegevoegde roosters
?>
include ('../connect/connect.php');
$result_get_users = mysql_query ("SELECT * FROM users WHERE authentication='1' "); //Users ophalen die toegevoegd moeten worden
$count = "0"; // Tellen van toegevoegde roosters
while ($row = mysql_fetch_array($result_get_users)){
$count++; //Start het tellen
echo $row['username'].'<br />'; //Controleren of waarde USERNAME wordt weergeven
echo $row['user_id']; Controleren of waarde USER_ID wordt weergeven
}
//Invoegen van Query
for ($i=1; $i<=$count; $i++)
{
$sql_insert_user = mysql_query ("INSERT INTO planning (
rooster_id,
week_nr,
koppeling,
ma_start,
ma_eind,
di_start,
di_eind,
wo_start,
wo_eind,
do_start,
do_eind,
vrij_start,
vrij_eind,
za_start,
za_eind,
zo_start,
zo_eind
)
VALUES
(
'',
'".mysql_real_escape_string($_POST['week'])."',
'".mysql_real_escape_string($row['user_id'])."',
'".mysql_real_escape_string($ma_start)."',
'".mysql_real_escape_string($ma_eind)."',
'".mysql_real_escape_string($di_start)."',
'".mysql_real_escape_string($di_eind)."',
'".mysql_real_escape_string($wo_start)."',
'".mysql_real_escape_string($wo_eind)."',
'".mysql_real_escape_string($do_start)."',
'".mysql_real_escape_string($do_eind)."',
'".mysql_real_escape_string($vrij_start)."',
'".mysql_real_escape_string($vrij_eind)."',
'".mysql_real_escape_string($za_start)."',
'".mysql_real_escape_string($za_eind)."',
'".mysql_real_escape_string($zo_start)."',
'".mysql_real_escape_string($zo_eind)."')");
}
echo "Teller staat op".$count; //Weergeef toegevoegde roosters
?>
Gewijzigd op 02/01/2013 18:57:10 door Donny Wie weet
$count = 0;
Not Moose op 02/01/2013 18:57:47:
$count = 0;
Jah?
Oh wacht, je echo'ed alles. Wil je dat echt, of is dat alleen maar voor het testen?
$row[user_id] moet in koppeling geplaatst worden, maar zijn allemaal wisselende user_id's
Gewijzigd op 02/01/2013 19:07:49 door Donny Wie weet
Je variable $row bestaat niet buiten de while loop. Dus je moet je insert query binnen de while loop plaatsen
En nu hoop ik dat je niet meteen gaat vragen 'hoe moet ik dat dan doen', maar eerst even serieus gaat begrijpen wat ik hierboven zeg.....
Code (php)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
include ('../connect/connect.php');
$result_get_users = mysql_query ("SELECT * FROM users WHERE authentication='1' "); //Users ophalen die toegevoegd moeten worden
$count = "0"; // Tellen van toegevoegde roosters
$userIds = array();
while ($row = mysql_fetch_array($result_get_users)){
$count++; //Start het tellen
echo $row['username'].'<br />'; //Controleren of waarde USERNAME wordt weergeven
echo $row['user_id']; Controleren of waarde USER_ID wordt weergeven
$userIds[] = $row['user_id'];
}
//Invoegen van Query
for ($i=1; $i<=$count; $i++)
{
$sql_insert_user = mysql_query ("INSERT INTO planning (
rooster_id,
week_nr,
koppeling,
ma_start,
ma_eind,
di_start,
di_eind,
wo_start,
wo_eind,
do_start,
do_eind,
vrij_start,
vrij_eind,
za_start,
za_eind,
zo_start,
zo_eind
)
VALUES
(
'',
'".mysql_real_escape_string($_POST['week'])."',
'".mysql_real_escape_string($userIds[$i])."',
'".mysql_real_escape_string($ma_start)."',
'".mysql_real_escape_string($ma_eind)."',
'".mysql_real_escape_string($di_start)."',
'".mysql_real_escape_string($di_eind)."',
'".mysql_real_escape_string($wo_start)."',
'".mysql_real_escape_string($wo_eind)."',
'".mysql_real_escape_string($do_start)."',
'".mysql_real_escape_string($do_eind)."',
'".mysql_real_escape_string($vrij_start)."',
'".mysql_real_escape_string($vrij_eind)."',
'".mysql_real_escape_string($za_start)."',
'".mysql_real_escape_string($za_eind)."',
'".mysql_real_escape_string($zo_start)."',
'".mysql_real_escape_string($zo_eind)."')");
}
echo "Teller staat op".$count; //Weergeef toegevoegde roosters
?>
include ('../connect/connect.php');
$result_get_users = mysql_query ("SELECT * FROM users WHERE authentication='1' "); //Users ophalen die toegevoegd moeten worden
$count = "0"; // Tellen van toegevoegde roosters
$userIds = array();
while ($row = mysql_fetch_array($result_get_users)){
$count++; //Start het tellen
echo $row['username'].'<br />'; //Controleren of waarde USERNAME wordt weergeven
echo $row['user_id']; Controleren of waarde USER_ID wordt weergeven
$userIds[] = $row['user_id'];
}
//Invoegen van Query
for ($i=1; $i<=$count; $i++)
{
$sql_insert_user = mysql_query ("INSERT INTO planning (
rooster_id,
week_nr,
koppeling,
ma_start,
ma_eind,
di_start,
di_eind,
wo_start,
wo_eind,
do_start,
do_eind,
vrij_start,
vrij_eind,
za_start,
za_eind,
zo_start,
zo_eind
)
VALUES
(
'',
'".mysql_real_escape_string($_POST['week'])."',
'".mysql_real_escape_string($userIds[$i])."',
'".mysql_real_escape_string($ma_start)."',
'".mysql_real_escape_string($ma_eind)."',
'".mysql_real_escape_string($di_start)."',
'".mysql_real_escape_string($di_eind)."',
'".mysql_real_escape_string($wo_start)."',
'".mysql_real_escape_string($wo_eind)."',
'".mysql_real_escape_string($do_start)."',
'".mysql_real_escape_string($do_eind)."',
'".mysql_real_escape_string($vrij_start)."',
'".mysql_real_escape_string($vrij_eind)."',
'".mysql_real_escape_string($za_start)."',
'".mysql_real_escape_string($za_eind)."',
'".mysql_real_escape_string($zo_start)."',
'".mysql_real_escape_string($zo_eind)."')");
}
echo "Teller staat op".$count; //Weergeef toegevoegde roosters
?>
misschien zoiets?
Ik snap waarom mijn query niet ingevoegd wordt... Ik ga dit wijzigen :) Piece of a cake :D
Donny van Grondelle op 02/01/2013 19:25:10:
Bo Ter Ham, je doet hetzelfde als dat ik doet :P
Ik snap waarom mijn query niet ingevoegd wordt... Ik ga dit wijzigen :) Piece of a cake :D
Ik snap waarom mijn query niet ingevoegd wordt... Ik ga dit wijzigen :) Piece of a cake :D
Hij doet niet precies hetzelfde. Zijn code gaat namelijk wel werken
Dat denk ik ook.... hoewel het niet de mooiste manier is....
En net zo belangrijk, niemand werkt 7 dagen per week (alhoewel) dus heb je nog wat extra tabellen nodig
Erwin H op 02/01/2013 19:31:20:
Dat denk ik ook.... hoewel het niet de mooiste manier is....
Erwin H: Wat zou een betere manier zijn dan volgens jou?
En ik zie inderdaad dat de code niet hetzelfde is, ik gooide even mijn blik er kort op voor ik moest werken, en zag de array niet.
Ger van Steenderen op 02/01/2013 19:32:05:
Let op dat op een identity (ie AUTO_INCREMENT) kolom NOOIT '' als waarde mee mag geven, je neemt hen niet mee of geeft NULL als value mee.
En net zo belangrijk, niemand werkt 7 dagen per week (alhoewel) dus heb je nog wat extra tabellen nodig
En net zo belangrijk, niemand werkt 7 dagen per week (alhoewel) dus heb je nog wat extra tabellen nodig
@ger: Kort gezegd dus wat jij bedoelt: heel het ID weg laten in de query zodat de database zelf een waarde toevoegd? Daarnaast: niemand werkt 7 dagen in de week, de dagen query moet ook weg gehaald worden. Ik heb nu een andere methode in gebruik en wou het makkelijker en sneller en kwam met deze oplossing en kopieerde deze query van mijn oude code. De dagen gaan weg en zullen in de DB standaard op 0 komen te staan. Wanneer de start en eind tijd gelijk zijn aan elkaar (00:00) echo= Vrij.
Donny van Grondelle op 03/01/2013 06:17:38:
Erwin H: Wat zou een betere manier zijn dan volgens jou?
Een betere manier is om de insert gewoon in de while loop te doen, dan heb je die array niet nodig.
Een nog veel betere manier is om het hele zaakje in 1 query te doen.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
"INSERT INTO planning(week_nr, koppeling, ma_start, ...)
SELECT
'".mysql_real_escape_string($_POST['week'])."',
user_id,
'".mysql_real_escape_string($ma_start)."',
...
FROM users
WHERE authentication = 1"
?>
"INSERT INTO planning(week_nr, koppeling, ma_start, ...)
SELECT
'".mysql_real_escape_string($_POST['week'])."',
user_id,
'".mysql_real_escape_string($ma_start)."',
...
FROM users
WHERE authentication = 1"
?>
Hier gebruik je dus een select om alle users te selecteren en die gegevens vul je aan met de vaste waardes die je erbij wil invoeren. Ik heb nog even $ma_start meegenomen om aan te geven hoe het werkt, maar volgens mij ga je dat al weghalen, blijft alleen het week nummer over. user_id is dus een kolom uit de users tabel.
Wat ik bedoel is dat als je '' gebruikt als waarde voor AI kolom, dit normaal gesproken een foutmelding oplevert. Maar je kunt hem inderdaad gewoon uit de query weghalen.
Wat ik bedoelde met de werkdagen is dat ik vind dat die kolommen niet in de tabel thuishoren.
Bij mij zou zo'n tabel er zo uit zien:
- dag_nr
- week_nr
- jaartal
- user_id
- starttijd
- eindtijd
Pas als iemand op een bepaalde dag/week/jaar wordt ingepland komt ie/ze in de planning tabel terecht.