Snel en eenvoudig nieuwe roosters toevoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donny Wie weet

Donny Wie weet

02/01/2013 18:55:37
Quote Anchor link
Beste,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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


?>
Gewijzigd op 02/01/2013 18:57:10 door Donny Wie weet
 
PHP hulp

PHP hulp

24/04/2024 05:31:16
 
Moose -

Moose -

02/01/2013 18:57:47
Quote Anchor link
$count = 0;
 
Donny Wie weet

Donny Wie weet

02/01/2013 19:00:48
Quote Anchor link
Not Moose op 02/01/2013 18:57:47:
$count = 0;


Jah?
 
Erwin H

Erwin H

02/01/2013 19:02:04
Quote Anchor link
Hmm, waarom niet gewoon een count query? De gegevens die uit de query komen gebruik je verder toch niet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT COUNT(*)
FROM ...
WHERE ...
Gewijzigd op 02/01/2013 19:02:37 door Erwin H
 
Donny Wie weet

Donny Wie weet

02/01/2013 19:02:09
Quote Anchor link
@ not moose: Wat moet ik daaruit opmaken? (moest een toevoeging zijn)

En hoe bedoel je count query?
Gewijzigd op 02/01/2013 19:03:14 door Donny Wie weet
 
Erwin H

Erwin H

02/01/2013 19:03:37
Quote Anchor link
Oh wacht, je echo'ed alles. Wil je dat echt, of is dat alleen maar voor het testen?
 
Donny Wie weet

Donny Wie weet

02/01/2013 19:05:53
Quote Anchor link
Het is om te testen. Het toevoegen lukt wel, alleen het toevoegen van de koppeling werkt niet... Koppeling is het user_id, en die wordt er niet in geplaatst... Dit heeft niks met tellen te maken verder... Enige waarvoor geteld wordt is om te kijken hoe vaak de query uitgevoerd moet worden :)


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

Moose -

02/01/2013 19:07:37
Quote Anchor link
Je variable $row bestaat niet buiten de while loop. Dus je moet je insert query binnen de while loop plaatsen
 
Erwin H

Erwin H

02/01/2013 19:08:43
Quote Anchor link
Ok, dat dacht ik nu inderdaad al te begrijpen. Maar zie je dan niet dat je die insert buiten de while loop doet? De while loop stopt zodra $row = mysql_fetch_array($result_get_users) false geeft. Met andere woorden, $row is false geworden. Je kan dus helemaal niets meer eruit halen, $row['user_id'] bestaat dus helemaal niet, laat staan al die tig user_ids.

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.....
 
Bo Ter Ham

Bo Ter Ham

02/01/2013 19:09:44
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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


?>


misschien zoiets?
 
Donny Wie weet

Donny Wie weet

02/01/2013 19:25:10
Quote Anchor link
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
 
Moose -

Moose -

02/01/2013 19:27:00
Quote Anchor link
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


Hij doet niet precies hetzelfde. Zijn code gaat namelijk wel werken
 
Erwin H

Erwin H

02/01/2013 19:31:20
Quote Anchor link
Dat denk ik ook.... hoewel het niet de mooiste manier is....
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

02/01/2013 19:32:05
Quote Anchor link
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
 
Donny Wie weet

Donny Wie weet

03/01/2013 06:17:38
Quote Anchor link
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


@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.
 
Erwin H

Erwin H

03/01/2013 09:55:02
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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"

?>

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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

03/01/2013 10:14:13
Quote Anchor link
@Donny
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.