selected="selected" implementeren in groot script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jurgen B

Jurgen B

25/05/2009 21:43:00
Quote Anchor link
Dag mensen,

Ik zit met een erg ingewikkeld script dat eerder is gemaakt door een andere programmeur. Nu werkt alles inmiddels prima behalve 1 klein dingetje. Het script is om een opstelling van een team te bewerken. Alleen bij het openen van het script toont hij in de select boxen niet de speler die op dat moment is geselecteerd oftewel ik mis een selected="selected". Zouden jullie kunnen laten zien hoe dat geïmplementeerd moet worden? Ik heb al van alles geprobeerd, maar krijg het in dit script echt niet voor elkaar.

PS. De selectbox is te vinden op 126 en is onderdeel van de functie set_players

Bij deze de volledige code
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<?php

$match_id
= 1;
    
$teams_query = "SELECT
                    m.thuisclub_id,
                    m.uitclub_id,
                    (SELECT naam FROM clubs WHERE id=m.thuisclub_id) AS thuisclub,
                    (SELECT naam FROM clubs WHERE id=m.uitclub_id) AS uitclub
                FROM
                    wedstrijden AS m
                WHERE
                    m.id={$match_id}
                "
;
$clubrow = mysql_fetch_assoc(mysql_query($teams_query));
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $positie_array = array('aanvaller' => 'A', 'middenvelder' => 'M', 'verdediger' => 'V', 'keeper' => 'K');
    $controle = true;
    foreach($_POST as $posities => $pos_array){
        foreach($_POST[$posities] as $team => $speler_array){
            foreach($_POST[$posities][$team] as $pos_nr => $speler){
                $club = $clubrow[$team.'club_id'];
                $positie_nr = $pos_nr+1;
                $query = "
                        INSERT INTO
                            opstelling
                        SET
                            wedstrijd_id = {$match_id},
                            speler_id = {$speler},
                            club_id = {$club},
                            positie = '{$positie_array[$posities]}',
                            tijd_in = 0,
                            tijd_uit = 90,
                            pos_volgnr = {$positie_nr}
                    "
;
                if(!mysql_query($query) && isset($controle)){
                    $controle = false;
                }

                //$posities.' '.$team.' '.$speler.'('.$positie_nr.')<br />';
            }
        }
    }

    if($controle){
        $content .= 'De opstelling is succesvol toegevoegd aan de database. U kunt hem aanpassen op de pagina voor opstelling bewerken.';
    }

    else{
        $content .= 'Er is iets misgegaan bij het toevoegen van de opstelling. U wordt aangeraden om via "opstelling bewerken" te kijken naar de opstelling en deze (indien er iets is toegevoegd) daar aan te passen. Staat er geen opstelling in "opstelling bewerken" dan dient u de opstelling via "opstelling aanmaken" nog een keer proberen toe te voegen.';
    }
}

else{
    $opst_query ="
        SELECT
            COUNT(id) AS aantal,
            club_id,
            (select
                naam
            FROM
                clubs
            WHERE
                id = club_id) AS clubnaam,
            (SELECT
                CASE
                    club_id
                WHEN
                    thuisclub_id
                THEN 'thuis'
                ELSE 'uit'
                END
            FROM
                wedstrijden
            WHERE id=1) AS team,
            positie
        FROM
            opstelling
        WHERE
            wedstrijd_id = {$match_id}
        AND
            tijd_in = 0
        AND
            positie <> 'K'
        GROUP BY
            positie,
            club_id
        ORDER BY
            club_id,
            positie
        "
;
    if($opst_res = mysql_query($opst_query)){
        $aOpstelling = array();
        while($opst_row = mysql_fetch_assoc($opst_res)){
            $aOpstelling[$opst_row['team']][] = $opst_row['aantal'];
        }
    }

    
     
    if(($array_sum['thuis'] = array_sum($aOpstelling['thuis'])) != 10){
        
        $content .= 'De opstelling voor het uitteam is ongeldig, er staan of te veel of te weinig spelers in';
    }

    elseif(($array_sum['uit'] = array_sum($aOpstelling['uit'])) != 10){
        $content .= 'De opstelling voor het uitteam is ongeldig, er staan of te veel of te weinig spelers in';
    }

    else{
    
    function
set_players($team_id){
        $speler_query = "SELECT
                            s.id,
                            CONCAT(s.achternaam, ', ', s.voornaam, ' ', s.tussenvoegsel) AS naam,
                            s.positie
                        FROM
                            spelers AS s
                        INNER JOIN
                            speler_clubs AS sc
                        ON    
                            sc.speler_id = s.id
                        WHERE
                            s.status = 1
                        AND
                            sc.club_id = "
.$team_id."
                        ORDER BY
                            s.positie,
                            s.achternaam"
;
        if($speler_result = mysql_query($speler_query)){
            $aSpelers = array();
            while($speler_row = mysql_fetch_assoc($speler_result)){
                $aSpelers[$speler_row['positie']][] = '<option value="'.$speler_row['id'].'">'.htmlentities($speler_row['naam']).'</option>';
        }
    }

    asort($aSpelers);
    return $aSpelers;
    }
    
    function
set_selectbox ($id, $options, $team) {

        $prev_opt = '';
        $posities = array('K' => 'keepers', 'V' => 'verdedigers', 'M' => 'middenvelders', 'A' => 'aanvallers');
        $return = '';
        $return .= PHP_EOL . '<select id="' . $id . '" name="' . $id . '['.$team.'][]">';
        $return .= PHP_EOL . '<option value="0"> - geen - </option>';
        
        if($id == 'keeper'){
            foreach ($options['K'] as $key => $value) {
                $return.= PHP_EOL.$value;
            }
        }

        unset($options['K']);
        //verderdigers
        if($id != 'keeper'){
            if($id == 'verdediger'){
                $return .= '<optgroup label="verdedigers">';
                foreach($options['V'] as $key => $value){
                    $return .= $value;
                }

                $return .= '</optgroup>';
                unset($options['V']);
            }

            //middenvelders
            if($id == 'middenvelder'){
                $return .= '<optgroup label="middenvelders">';
                foreach($options['M'] as $key => $value){
                    $return .= $value;
                }

                $return .= '</optgroup>';
                unset($options['M']);
            }
        
            //aanvallers
            if($id == 'aanvaller'){
                $return .= '<optgroup label="aanvallers">';
                foreach($options['A'] as $key => $value){
                    $return .= $value;
                }

                $return .= '</optgroup>';
                unset($options['A']);
            }

            foreach($options as $positie => $spelers){
                if($positie != $prev_opt){
                    $return .= '<optgroup label="'.$posities[$positie].'">';
                }

                foreach($spelers as $value){
                    $return .= $value;
                }

                if($positie != $prev_opt){
                    $return .= '</optgroup>';
                }

                $prev_opt = $positie;
            }
        }

        $return.= PHP_EOL . '</select>';
        return $return;
    }


$content .=<<<EOF
    <form id="opstelling" method="post" action="{$_SERVER['REQUEST_URI']}">
    <fieldset>
    <legend>Thuisclub {$clubrow['thuisclub']}</legend>
EOF
;
    $aSpelers = set_players($clubrow['thuisclub_id']);
    $content .= '<p>';
    $content .= set_selectbox('keeper', $aSpelers, 'thuis');
    $content .= '</p>';
    $content .= '<p>';
    for($i = 1; $i <= $aOpstelling['thuis'][0]; $i++){
        $content .= set_selectbox('verdediger',$aSpelers, 'thuis');
       }

    $content .= '</p>';
    $content .= '<p>';
    for($i = 1; $i <= $aOpstelling['thuis'][1]; $i++){
        $content .= set_selectbox('middenvelder',$aSpelers, 'thuis');
       }

    $content .= '</p>';
    $content .= '<p>';
    for($i = 1; $i <= $aOpstelling['thuis'][2]; $i++){
        $content .= set_selectbox('aanvaller',$aSpelers, 'thuis');
       }

    $content .= '</p>';
    $content .=<<<EOF
        </fieldset>
        <fieldset><legend>Uitclub {$clubrow['uitclub']}</legend>
EOF
;
    $aSpelers = set_players($clubrow['uitclub_id']);
    $content .= '<p>';
    $content .= set_selectbox('keeper', $aSpelers, 'uit');
    $content .= '</p>';
    $content .= '<p>';
    for($i = 1; $i <= $aOpstelling['uit'][0]; $i++){
        $content .= set_selectbox('verdediger',$aSpelers, 'uit');
       }

    $content .= '</p>';
    $content .= '<p>';
    for($i = 1; $i <= $aOpstelling['uit'][1]; $i++){
        $content .= set_selectbox('middenvelder',$aSpelers, 'uit');
       }

    $content .= '</p>';
    $content .= '<p>';
    for($i = 1; $i <= $aOpstelling['uit'][2]; $i++){
        $content .= set_selectbox('aanvaller',$aSpelers, 'uit');
       }

    $content .= '</p>';
    $content .=<<<EOF
        </fieldset>
        <input type="submit" value="verstuur" onclick="return check_lineup();"/>
        </form>
    </div>
</body>
</html>
EOF
;
    }
}

?>


Alvast bedankt voor jullie hulp.
 
PHP hulp

PHP hulp

27/11/2020 09:29:46
 
Jurgen B

Jurgen B

26/05/2009 10:16:00
Quote Anchor link
Niemand?
 
Kitty N

kitty N

26/05/2009 10:19:00
Quote Anchor link
Heb je ergens ook nog het idtje van de speler die geselecteerd moet worden? Zie het zo 1 2 3 niet tussen je script te staan.
 
Hipska BE

Hipska BE

26/05/2009 10:21:00
Quote Anchor link
Je weet zelf al waar de relevante code te vinden is, maar plaatst toch nog de volledige 250 regels code? Dit maakt het er niet echt overzichtelijk op. Pas AUB even je post aan en reduceer het aantal lijnen code hier.

En BUMPen mag pas 24u na je laatste post!
 
Jurgen B

Jurgen B

26/05/2009 10:33:00
Quote Anchor link
@Kitty: Nee die heb ik zo niet. Ik zou eerlijk gezegd ook niet weten hoe ik die er uit moet halen. Als je wilt kan ik de sql hier wel posten? Heb je daar wat aan?

@Hipska: Ik heb opzettelijk de volledige code geplaatst zodat het voor de mensen die willen helpen misschien duidelijk is welke gegevens gebruikt kunnen worden.

Ik hoop dat jullie kunnen helpen.
 
Hipska BE

Hipska BE

26/05/2009 10:36:00
Quote Anchor link
Zoals kitty al zegt, moet je ergens in je script kunnen weten welke speler geselecteerd is.

Hoe geef je een geselecteerde speler aan?
 
Kitty N

kitty N

26/05/2009 10:39:00
Quote Anchor link
@ Jurgen,

Hipska geeft het ook al aan. Je moet eerst weten welke speler je moet selecteren daarvoor het het id van de speler nodig, anders kan je deze niet selecteren bij het open van de pagina.
 
Jurgen B

Jurgen B

26/05/2009 10:39:00
Quote Anchor link
Ja nu geef ik die blijkbaar dus nog niet aan.

Hier de SQL:
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
CREATE TABLE IF NOT EXISTS `opstelling` (
  `id` int(12) unsigned NOT NULL AUTO_INCREMENT,
  `wedstrijd_id` int(8) unsigned NOT NULL,
  `speler_id` int(8) unsigned NOT NULL,
  `club_id` int(8) unsigned NOT NULL,
  `tijd_in` int(3) unsigned NOT NULL,
  `tijd_uit` int(3) unsigned NOT NULL,
  `positie` enum('K','V','M','A') NOT NULL,
  `wissel_voor` int(8) unsigned DEFAULT NULL,
  `pos_volgnr` int(3) unsigned NOT NULL,
  `reden_wissel` enum('geen','blessure') NOT NULL DEFAULT 'geen',
  PRIMARY KEY (`id`),
  KEY `speler_id` (`speler_id`),
  KEY `club_id` (`club_id`),
  KEY `wissel_voor` (`wissel_voor`),
  KEY `wissel_voor_2` (`wissel_voor`),
  KEY `wedstrijd_id` (`wedstrijd_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;

--
-- Gegevens worden uitgevoerd voor tabel `opstelling`
--

INSERT INTO `opstelling` (`id`, `wedstrijd_id`, `speler_id`, `club_id`, `tijd_in`, `tijd_uit`, `positie`, `wissel_voor`, `pos_volgnr`, `reden_wissel`) VALUES
(1, 1, 64, 3, 0, 90, 'K', NULL, 1, 'geen'),
(2, 1, 2, 1, 0, 90, 'K', NULL, 1, 'geen'),
(3, 1, 63, 3, 0, 90, 'V', NULL, 1, 'geen'),
(4, 1, 71, 3, 0, 90, 'V', NULL, 2, 'geen'),
(5, 1, 68, 3, 0, 90, 'V', NULL, 3, 'geen'),
(6, 1, 3, 1, 0, 90, 'V', NULL, 1, 'geen'),
(7, 1, 10, 1, 0, 90, 'V', NULL, 2, 'geen'),
(8, 1, 4, 1, 0, 90, 'V', NULL, 3, 'geen'),
(9, 1, 79, 3, 0, 90, 'M', NULL, 1, 'geen'),
(10, 1, 77, 3, 0, 90, 'M', NULL, 2, 'geen'),
(11, 1, 80, 3, 0, 90, 'M', NULL, 3, 'geen'),
(12, 1, 12, 1, 0, 90, 'M', NULL, 1, 'geen'),
(13, 1, 18, 1, 0, 90, 'M', NULL, 2, 'geen'),
(14, 1, 13, 1, 0, 90, 'M', NULL, 3, 'geen'),
(15, 1, 88, 3, 0, 90, 'A', NULL, 1, 'geen'),
(16, 1, 89, 3, 0, 90, 'A', NULL, 2, 'geen'),
(17, 1, 87, 3, 0, 90, 'A', NULL, 3, 'geen'),
(18, 1, 84, 3, 0, 90, 'A', NULL, 4, 'geen'),
(19, 1, 90, 1, 0, 90, 'A', NULL, 1, 'geen'),
(20, 1, 29, 1, 0, 90, 'A', NULL, 2, 'geen'),
(21, 1, 24, 1, 0, 90, 'A', NULL, 3, 'geen'),
(22, 1, 23, 1, 0, 90, 'A', NULL, 4, 'geen');
 
Hipska BE

Hipska BE

26/05/2009 10:44:00
Quote Anchor link
Antwoord nou gewoon eens op onze vragen en wij kunnen uw vraag oplossen.

Quote:
Alleen bij het openen van het script toont hij in de select boxen niet de speler die op dat moment is geselecteerd


HOE moet het script weten welke speler is geselecteerd?

Is het door een POST te doen? of komt dit uit de DB? of nog een andere optie?
 
Kitty N

kitty N

26/05/2009 10:44:00
Quote Anchor link
Jurgen B schreef op 26.05.2009 10:39:
Ja nu geef ik die blijkbaar dus nog niet aan.


Moet je eerst even kijken waar je het id van de speler vandaan gaat halen. Want ik weet niet welke speler je wilt selecteren of aan de hand waarvan.
 
Jurgen B

Jurgen B

26/05/2009 10:51:00
Quote Anchor link
@Hipska & Kitty: Excuses dat ik het niet helemaal begrijp. Helemaal boven in het script staat het match_id. Aan de hand van dit match_id kan er in de database in de tabel opstelling (SQL code hierboven) worden gekeken welke spelers opgesteld staan. In de tabel staat ook een pos_volgnr .. het eerste drowpdown veld is nr 1 en het tweede is volgnr 2.

Is het zo wat duidelijker?
 
Hipska BE

Hipska BE

26/05/2009 10:55:00
Quote Anchor link
En wat wil je nu?

Je haalt dus uit een DB een lijstje met spelers die deze match meegedaan hebben en steekt ze in een dropdown box.

Welke speler moet er dan geselecteerd zijn?
 
Kitty N

kitty N

26/05/2009 10:58:00
Quote Anchor link
Staat deze site ook al online zodat we een voorbeeldje hebben? Ik snap ook niet precies wat er nu gedaan moet worden.


EDIT: Even kijken of ik het begrijp. Je haalt een match id op. Aan de hand daarvan worden er 2 teams opgehaald(uit en thuis). Dan heb je een opstelling voor het thuis team.

De keeper staat ingevuld, op de plaats van de keeper moet dus een dropdown komen. Daar moet dan de keeper automatisch ingevuld staan?

Dus stel je hebt de volgende keepers:
1. pietje
2. jantje

jantje keept die wedstrijd dan moet jantje dus geselecteerd zijn? en pietje er nog gewoon bij staan?
Gewijzigd op 01/01/1970 01:00:00 door kitty N
 
Jurgen B

Jurgen B

26/05/2009 13:51:00
Quote Anchor link
Dag Kitty .. zoals jij het omschrijft klopt het precies!

Momenteel worden alle keepers e.d. al wel opgehaald alleen de juiste keeper wordt nog niet geselecteerd.
 
Kitty N

kitty N

26/05/2009 13:56:00
Quote Anchor link
Heb je al wel een ID van die keeper die opgesteld moet worden in je formulier?

Want als je dat hebt krijg je zoiets:
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
<?php
if($speler_result = mysql_query($speler_query))
{

  $aSpelers = array();
  while($speler_row = mysql_fetch_assoc($speler_result))
  {

     ///Hier $idkeeper vervangen door het id wat je al hebt van de keeper.
     if($speler_row['id'] == $idkeeper)
     {

            $aSpelers[$speler_row['positie']][] = '<option value="'.$speler_row['id'].'" selected>'.htmlentities($speler_row['naam']).'</option>';
     }

     else
     {
           $aSpelers[$speler_row['positie']][] = '<option value="'.$speler_row['id'].'">'.htmlentities($speler_row['naam']).'</option>';
     }
  }
}


?>
Gewijzigd op 01/01/1970 01:00:00 door kitty N
 
Jurgen B

Jurgen B

26/05/2009 15:32:00
Quote Anchor link
Nee die heb ik nog niet. Zou je willen laten zien hoe ik dat voor elkaar krijg? Alsvast bedankt voor het helpen dit maakt het al een stuk duidelijker.

Alleen het implementeren gaat me zo te zien erg slecht af. Ik kan wel wat programmeren, maar dit script is eigenlijk veel te complex voor mij.
 
Kitty N

kitty N

26/05/2009 15:47:00
Quote Anchor link
Nou je moet eerst kijken wat het id van de keeper is, dit zit waarschijnlijk in een variable. Deze variable zet je dan op de plaats $idkeeper

Dat stukje wat ik heb staan moet je in dat stuk plaatsen waar je zelf aan aangaf (126)

Dit stuk dus vervangen(vanaf regel 123):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($speler_result = mysql_query($speler_query)){
            $aSpelers = array();
            while($speler_row = mysql_fetch_assoc($speler_result)){
                $aSpelers[$speler_row['positie']][] = '<option value="'.$speler_row['id'].'">'.htmlentities($speler_row['naam']).'</option>';
        }

?>
 
Jurgen B

Jurgen B

26/05/2009 16:08:00
Quote Anchor link
Bedankt .. nu krijg ik:
Notice: Undefined variable: idkeeper in wedstrijd-detail-opst-bewerk.php on line 127
 
Kitty N

kitty N

26/05/2009 16:13:00
Quote Anchor link
Ja die moet je vervangen door het id van de keeper, ik weet niet waar die vandaan komt namelijk ;)
 
Jurgen B

Jurgen B

26/05/2009 16:30:00
Quote Anchor link
Ja dat is nou juist het probleem! Hij zou uit de database moeten komen denk ik, want als ik het zo zien wordt die nergens anders opgehaald.

In het script waar we de spelers weergeven staat wel deze query, misschien dat je daar wat meer kunt?

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
62
63
$opst_sql = "SELECT
                        o.speler_id,
                        o.club_id,
                        o.tijd_in,
                        o.tijd_uit,
                        o.positie,
                        o.wedstrijd_id,
                        o.wissel_voor AS id_voor,
                        CASE o.pos_volgnr
                            WHEN 'NULL'
                            THEN (SELECT pos_volgnr FROM opstelling WHERE speler_id = id_voor AND wedstrijd_id={$wedstrijd_id})
                            ELSE o.pos_volgnr END AS gen_pos_volgnr,
                        c.naam AS clubnaam,
                        CONCAT(s.tussenvoegsel,' ',s.achternaam) AS spelernaam,
                        CONCAT(s.voornaam,' ',s.tussenvoegsel,' ',s.achternaam) AS volledige_naam,
                        (SELECT CONCAT(s.voornaam,' ',s.tussenvoegsel,' ',s.achternaam) FROM spelers AS s WHERE id=wissel_voor AND wedstrijd_id={$wedstrijd_id}) AS in_voor
                    FROM
                        opstelling AS o
                    INNER JOIN
                            (spelers AS s
                        INNER JOIN
                                (clubs AS c
                            INNER JOIN
                                speler_clubs AS sc
                            ON
                                sc.club_id = c.id)
                        ON
                            sc.speler_id = s.id)
                    ON
                        s.id = o.speler_id
                    WHERE
                        (
                            (
                            o.tijd_in >= {$minuut}
                        AND
                            o.tijd_uit < {$minuut}
                            )
                     OR
                            (
                            o.tijd_in <= {$minuut}
                        AND
                            o.tijd_uit > {$minuut}
                            )
                    OR
                            (
                            o.tijd_in <= {$minuut}
                        AND
                            o.tijd_uit >= {$max_tijd['max_tijd']}
                            )
                        )
                    AND
                        wedstrijd_id={$wedstrijd_id}
                    AND o.club_id={$value}
                    GROUP BY
                        o.id
                    ORDER BY
                        o.wedstrijd_id,
                        o.club_id,
                        o.positie,
                        gen_pos_volgnr,
                        s.achternaam
                    
    ";


Als je wilt kan ik daar ook nog alle bij plakken wat in die foreach lus staat?!
 
Kitty N

kitty N

26/05/2009 16:32:00
Quote Anchor link
Daarin staat o.speler_id, waar geef je die weer?
 

Pagina: 1 2 volgende »



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.