Foreach -> update + delete query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jason de Ridder

Jason de Ridder

23/05/2006 10:32: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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
if(isset($_POST['submitedit'])) {
        foreach($_POST['naam'] as $key => $naam) {
            $key2 = $key + 1;
            if($naam == '' || $_POST['link'][$key] == '' ) {
                $sql = "DELETE linkpartner WHERE id=".$key2." LIMIT 1";
                if(!mysql_query($sql)) {
                    trigger_error(mysql_error());
                    echo 'Couldn\'t delete '.$naam.' ('.$_POST['link'][$key].')';
                    exit();
                }
            }

            else{
                $sql = "UPDATE linkpartner SET naam='".$naam."' AND link='".$_POST['link'][$key]."' WHERE id=".$key2." LIMIT 1";
                if(!mysql_query($sql)) {
                    trigger_error(mysql_error());
                    echo 'Could\'t edit '.$naam.' ('.$link[$key].').';
                    exit();
                }
            }
        }
        
     echo 'Linkpartners are modified/deleted with succes!';
    }

    else {
        $sql="SELECT * FROM linkpartner";
        if(!$result = mysql_query($sql)) {
            echo 'Could\'t not load linkpartners!';
            exit();
        }

        echo '<form action="admin.php?page=linkpart&tag=edit" method="post"><table>';
        while($row = mysql_fetch_assoc($result)) {
            echo '<tr><td><input type="text" name="naam[]" value="'.$row['naam'].'"></td><td><input type="text" name="link[]" value="'.$row['link'].'"></td></tr>';
        }

        echo '<tr><td><input type="submit" name="submitedit" value="edit"></td></tr></table></form>';
}

?>


Dit is dus mijn code, wat doe ik fout?

Nee grapje,

Ik laat dus met een foreach-lus updaten en/of deleten. Maar als ik update krijg veranderd $_POST['link'][$key] niet en $naam wordt standaard 0 of 1.
Deleten gebeurt ook niet, de query wordt wel uitgevoerd, en er wordt gezegd dat er succesvol is gedelete/update. Maar er gebeurt dus niks...
Iemand een idee??

Alvast weer hartelijk bedankt!
 
PHP hulp

PHP hulp

16/11/2024 22:56:10
 
Gerben G

Gerben G

23/05/2006 11:09:00
Quote Anchor link
misschien een dom vraagje maar kun je zo

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(!mysql_query($sql))
?>


een query uitvoeren????
 
Eris -

Eris -

23/05/2006 11:21:00
Quote Anchor link
Ja
 
Gerben G

Gerben G

23/05/2006 11:27:00
Quote Anchor link
@ eris

weer wat geleerd :P
 
Willem Jan Z

Willem Jan Z

23/05/2006 11:32:00
Quote Anchor link
Er gebeurt dan gewoon dit:
als false mysql_query($sql)

Dus hij voert mysql_query uit, en kijkt dan of er true of false uit komt.
 
Jason de Ridder

Jason de Ridder

23/05/2006 16:28:00
Quote Anchor link
en wat moet ik dan veranderen?
 
Jason de Ridder

Jason de Ridder

23/05/2006 18:42:00
Quote Anchor link
* bump * (A)
 
Willem Jan Z

Willem Jan Z

23/05/2006 19:55:00
Quote Anchor link
Het enige foute wat ik kan ontdekken is je UPDATE query, je doet zo:
UPDATE tabel SET kolom = AND kolom =
Maar moet zo:
UPDATE tabel SET kolom = , kolom =

Ik ga nog even verder proberen met de resultaten uit het formulier. Of er wel uit komt wat we denken dat er uit komt.

Edit
Nee, dat klopt wel, het enige wat volgens mij dan nog fout kan gaan is het handmatig id toewijzen ($key2), ik geef meestal in mijn formulier de id ook al mee.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<input type="text" name="naam['.$rij['id'].'][]" />';
?>


En nog wat typo's
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 
Jason de Ridder

Jason de Ridder

23/05/2006 23:33:00
Quote Anchor link
ok ga ik morgen even proberen, tnx!
 
Willem Jan Z

Willem Jan Z

24/05/2006 13:33:00
Quote Anchor link
Heeft het gewerkt?
 
- SanThe -

- SanThe -

24/05/2006 13:53:00
Quote Anchor link
Ik zou deze regel
$sql="SELECT * FROM linkpartner";
op id sorteren want nu staan ze willekeurig en je behandelt ze na submit alsof ze op id gesorteerd zijn.

Dus
$sql="SELECT * FROM linkpartner ORDER BY id";

En wat als er id 's tussenuit zijn? Dan gaat het volgens mij ook niet goed.

Bijvoorbeeld als je in je form als vierde de data van link met id 7 heb staan omdat er al een paar zijn verwijderd, dan is naam[] in je form naam[4] en jij telt daar 1 bij op en dan update je id 5.
 
Jason de Ridder

Jason de Ridder

24/05/2006 14:04:00
Quote Anchor link
Ok het werkt, dank je wel:
nieuwe 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
<?
elseif($_GET['tag'] == 'edit') {
    if(isset($_POST['submitedit'])) {
        foreach($_POST['naam'] as $key => $naam) {
            $key2 = $key + 1;
            if($naam == '' || $_POST['link'][$key] == '' ) {
                $sql = "DELETE FROM linkpartner WHERE id=".$_POST['id'][$key];
                if(!mysql_query($sql)) {
                    trigger_error(mysql_error());
                    echo 'Couldn\'t delete '.$naam.' ('.$_POST['link'][$key].')';
                    exit();
                }
            }

            else{
                $sql = "UPDATE linkpartner SET naam='".$naam."', link='".$_POST['link'][$key]."' WHERE id=".$_POST['id'][$key];
                if(!mysql_query($sql)) {
                    trigger_error(mysql_error());
                    echo 'Couldn\'t edit '.$naam.' ('.$_POST['link'][$key].').' . $_POST['id'][$key];
                    exit();
                }
            }
        }
        
        echo 'Linkpartners are modified/deleted with succes!';
    }

    else {
        $sql="SELECT * FROM linkpartner";
        if(!$result = mysql_query($sql)) {
            echo 'Could\'t not load linkpartners!';
            exit();
        }

        echo '<form action="admin.php?page=linkpart&tag=edit" method="post"><table>';
        while($row = mysql_fetch_assoc($result)) {
            echo '<tr><td><input type="text" name="naam[]" value="'.$row['naam'].'"></td><td><input type="text" name="link[]" value="'.$row['link'].'"></td><td><input type="hidden" name="id[]" value="'.$row['id'].'"></td></tr>';
        }

        echo '<tr><td><input type="submit" name="submitedit" value="edit"></td></tr></table></form>';
    }
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Jason de Ridder
 
- SanThe -

- SanThe -

24/05/2006 14:07:00
Quote Anchor link
Die nieuwe code is inderdaad een stuk beter.
 



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.