meerdere rijen updaten met checkbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dirk

Dirk

18/09/2007 15:55:00
Quote Anchor link
Ik heb een tabel 'uren' (kolommen 'id', 'project', 'datum', 'uren' en 'akkoord'). Ik wil hier mijn uren bijhouden die ik aan een project besteed. Het punt is dat de klant mijn uren moet goedkeuren. Ik heb een lijstje met al mijn uren, en met selectievakjes kan de klant in één query een aantal (of alle) uren goedkeuren. Ik de volgende code gemaakt:

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
<?php
//connect met db
include("connect.php");

//als formulier gepost is
if( $_SERVER['REQUEST_METHOD'] == "POST") {

    foreach ($_POST['upd'] as $update)

        {

            mysql_query("UPDATE t_uren SET akkoord = 1 WHERE  id = '" . $akkoord . "'") or die(mysql_error());
        }

}
else {


$sql = "SELECT * FROM t_uren";
$query = mysql_query($sql);
?>

    <table>
    <tr>
        <td>ID:</td>
        <td>Project:</td>
        <td>Datum:</td>
        <td>Uren:</td>
        <td>Akkoord?</td>
    </tr>
<?php
    while($data = mysql_fetch_array($query)) {
    ?>

    
    <form method="post" action="uren.php" name="akkoord">
    <input type="hidden" name="id" value="<?php $data['id']; ?>">
    <tr>
        <td><?php echo $data['id'];?></td>
        <td><?php echo $data['project'];?></td>
        <td><?php echo $data['datum'];?></td>
        <td><?php echo $data['uren'];?></td>
        <td><input type="checkbox" value="<?php $data['id']; ?>" name="upd[]"></td>
    </tr>
    
    <?php
    }
    ?>

    <tr>
        <td colspan="2"><input type="submit"></td>
    </tr>
    </form>
    </table>    
<?php
}
?>


Die doet het niet... geen errors, gewoon een leeg scherm.
Ik heb al diverse tutorials over loops, checkboxes en arrays doorgelopen, maar ik kom er maar niet achter wat er mis gaat. Kan iemand me op weg helpen?
 
PHP hulp

PHP hulp

20/05/2024 06:55:15
 
Frank -

Frank -

18/09/2007 16:31:00
Quote Anchor link
Quote:
geen errors

Goh, dat is gek! Waar is jouw foutafhandeling die errors op het scherm zou moeten zetten? Jij doet de aanname dat alles wel goed gaat, maar dat blijkt weer eens niet zo te zijn.

Oplossing: Foutafhandeling inbouwen
 
Frank -

Frank -

18/09/2007 16:31:00
Quote Anchor link
Edit: dubbelpost....
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Dirk

Dirk

18/09/2007 16:40:00
Quote Anchor link
Okee...
Ik heb de error reporting op E_ALL gezet, nog steeds een leeg scherm. Mijn SQL-query doet ook niks: er wordt niks ge-update en er komt ook geen foutmelding over de query.
 
GaMer B

GaMer B

18/09/2007 16:42:00
Quote Anchor link
Bijvoorbeeld hier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$sql = "SELECT * FROM t_uren";
$query = mysql_query($sql);


Hier neem je gewoon aan dat de query lukt. Verander dat eens naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$sql = "SELECT * FROM t_uren";
$query = mysql_query($sql) or die(mysql_error());
 
Dirk

Dirk

18/09/2007 16:55:00
Quote Anchor link
Heb ik gedaan, maakt geen verschil.
Ik krijg ook netjes een tabel met mijn gegevens erin, maar wanneer ik het formulier submit krijg ik een leeg scherm.

Vanwege het lege scherm en het gebrek aan foutmeldingen denk ik dat het probleem bij het doorgeven van de variabelen zit...

Wanneer ik de update-query vervang door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo ($_POST['upd']);


en ik klik twee selectievakjes aan geeft hij terug:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ArrayArray
 
GaMer B

GaMer B

18/09/2007 17:02:00
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
<?php
//als formulier gepost is
if( $_SERVER['REQUEST_METHOD'] == "POST") {

    foreach ($_POST['upd'] as $update)
    // Lever het aan als een array, dus: $_POST

        {
            mysql_query("UPDATE t_uren SET akkoord = 1 WHERE  id = '" . $akkoord . "'") or die(mysql_error());
            // Waar komt die $akkoord vandaan??
        }

}

?>
 
Frank -

Frank -

18/09/2007 17:15:00
Quote Anchor link
Waar controleer jij of de update-query wel iets heeft gedaan? Ik zie nergens mysql_affected_rows() terugkomen waarmee je dat controleert. Alleen controleren of de query technisch is gelukt, zegt namelijk nog niks.

Verder echo je binnen de if ook helemaal niks, daar hoef je dus geen output/resultaat van te verwachten. Alle output staat in de else.
 
Dirk

Dirk

18/09/2007 20:11:00
Quote Anchor link
Ik kijk in m'n phpmyadmin of er iets gebeurd, er gebeurd dus niks.
Ik kan echoen wat ik wil, maar er gebeurt niks. Zoals ik eerder al zei, het probleem zit waarschijnlijk in het feit dat ik de variabelen niet goed doorgeef Ik weet nog niet zo heel veel van PHP om de fout te vinden, dus daar heb ik jullie hulp bij nodig...

@GaMer13: wat bedoel je met 'lever het aan als een array, dus $_POST? Dat doe ik toch?
De $akkoord komt uit het formulier dat ik submit, of geef ik die niet goed door?
 
Frank -

Frank -

18/09/2007 20:49:00
Quote Anchor link
$akkoord is wat anders dan $_POST['akkoord']. Welke gebruik jij?

Verder zul je echt een controle met mysql_affected_rows() moeten inbouwen, anders heb je nooit enige zekerheid over het resultaat van een UPDATE- of DELETE-query. (INSERT laat ik even buiten beschouwing, maar zou je eigenlijk ook moeten checken)

Hoe heb jij de error_reporting() ingesteld?
 



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.