[Mysql & PHP] Updaten van meerdere records

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 03-09 16:36
Ik heb een admin gedeelte op mijn site waar ik alles wil beheren zo ook de poll gedeelde.

Zit hier al tijdje op vast. Heb eindelijk voor elkaar gekregen dat hij een while loop doet om alle antwoorden uit DB te halen met een bepaalde vraagid.

Maar nu wil ik ook kunnen updaten en ik weet bij god niet hoe ik dat doe met meerdere records en of ik de submit functie wel goed geplaatst heb (of die uberhaubt goed is geschreven in dit geval)

Wie kan mij weer wat op weg helpen?

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
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
//Bewerken

elseif ($_GET["show"] == "edit" || $_POST["show"] == "edit")
{
    if ($_POST["antwoord"])
    {
        $uAntwoordenQ = "UPDATE poll_antwoorden SET antwoord = '$_POST[antwoord]' WHERE id = '$_POST[id]'";
        $res = mysql_query($uAntwoordenQ);

        if ($res)
        {
            echo "Het bericht is bijgewerkt.";?><br><br><?
            echo $_POST['antwoord'];
            
        }

        else
        {
            echo "Het bericht is niet bijgewerkt.";
        }
    }

    else
        {
        
            $sPollVragenQ = mysql_query("SELECT id, vraag, totaal_stemmen FROM poll_vragen WHERE id = $_GET[id] ORDER BY id DESC");
            $resultaat_vragen = mysql_num_rows($sPollVragenQ);
            
            if (empty($resultaat_vragen))
            
                {
                    
                  echo "<p><k>Er zijn geen vragen gevonden die al afgesloten zijn.</p>";
                  
                } 
            
            else 
            
              {
                  
              while ($vraag = mysql_fetch_array($sPollVragenQ))
              
                      {
                        echo "<td class=\"download\" colspan=\"2\"><div class=\"entryFooterReacties\"><strong class=\"reacties\">".$vraag[vraag]."</strong></div><br><br></td>";
                        
                        // Antwoorden ophalen
                        
                        $antwoordQuery = mysql_query("SELECT id, antwoord FROM poll_antwoorden WHERE poll_id = '$vraag[id]' ORDER BY id");
                        $resultaat_antwoorden = mysql_num_rows($antwoordQuery);
                       
                        if (empty($resultaat_antwoorden))
                        {
                            echo "Fout: Geen antwoorden gevonden!";
                        } 
                        
                        else 
                            {
            echo "<p><b>Bewerk een poll</b></p>";
            echo "<form method=\"post\" action=\"$PHP_SELF\">";
            echo "<input type=\"hidden\" name=\"show\" value=\"edit\">";
            echo "<input type=\"hidden\" name=\"id\" value=\"$antwoord[id]\">";
                              
                              while ($antwoord = mysql_fetch_array($antwoordQuery))
                                  {
                                    // Laat de antwoorden zien
                                        
                                        echo "Antwoord ID:<br> "; 
                                        echo "<input id=\"knoppen\" type=\"text\" size=\"2\" name=\"antwoord\" value=\"$antwoord[id]\"><br><br>";        

                                                                        
                                        echo "Antwoord:<br> "; 
                                        echo "<input id=\"knoppen\" type=\"text\" size=\"40\" name=\"antwoord\" value=\"$antwoord[antwoord]\"><br><br>";        
                                        
                                  }                           
                            }
            echo "<input id=\"knoppen\" type=\"submit\" name=\"submit\" value=\"Verstuur\">";
            echo "</form>";

                      }
                }
                
        
        }
        

}

[ Voor 88% gewijzigd door SoeperKees op 02-06-2006 18:35 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat lukt er niet dan? :? Voor meerdere records maak je gewoon meer forms inputs? Als je arrays gebruikt kun je er nog netjes doorheen lopen ook.

offtopic:
ID's behoor je niet aan te kunnen passen in je applicatie. ID's hebben maar één functie: uniek zijn.

[ Voor 5% gewijzigd door NMe op 02-06-2006 14:20 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 03-09 16:36
-NMe- schreef op vrijdag 02 juni 2006 @ 13:51:
Wat lukt er niet dan? :? Voor meerdere records maak je gewoon meer forms? Als je arrays gebruikt kun je er nog netjes doorheen lopen ook.

offtopic:
ID's behoor je niet aan te kunnen passen in je applicatie. ID's hebben maar één functie: uniek zijn.
Meerdere records updaten. Meerdere forms? hij loopt tot dat er geen record meer is met dat id. Dus hoe wil je daar meerdere forms inplaatsen?

Heb OP wat geedit...

[ Voor 4% gewijzigd door SoeperKees op 02-06-2006 14:04 ]


Acties:
  • 0 Henk 'm!

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 03-09 16:36
Ok hij update nu wel, maar update alle antwoord records in database. Maar hij update de antwoorden met het stemmen veld.

Acties:
  • 0 Henk 'm!

  • elmer25
  • Registratie: Februari 2002
  • Laatst online: 01-12-2021

elmer25

ooit was ik 25

Probeer dit eens:

http://www.google.com/sea...afe=off&q=sql&btnG=Search

En je wilt waarschijnlijk meer weten over UPDATE in combinatie met een WHERE-clause. Succes!

Acties:
  • 0 Henk 'm!

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 03-09 16:36
MySQL:
1
$uAntwoordenQ = "UPDATE poll_antwoorden SET antwoord = '$_POST[antwoord]' WHERE id = '$_POST[id]'";


Zoiets bedoel je?
Modbreak:Schoppen van topics staan we niet toe binnen 24 uur. Je bent niet de enige die hier een topic heeft, als iedereen maar na 2½ uur zijn topic omhoog gaat schoppen wordt het één grote chaos.

[ Voor 71% gewijzigd door NMe op 02-06-2006 17:35 ]


Acties:
  • 0 Henk 'm!

  • RSchellhorn
  • Registratie: Augustus 2001
  • Laatst online: 20-09 09:01
PHP:
1
$uAntwoordenQ = "UPDATE poll_antwoorden SET antwoord = '$_POST[antwoord]'"

Dit update meerdere rijen (alle rijen zelfs!) uit de tabel, je moet inderdaad een WHERE gebruiken om aan te geven welke rijen je wilt updaten. Dit werkt in princiepe het zelfde als de WHERE van een SELECT statement.

Kijk ook hier.

"Ik heb zo veel soep gegeten, dat kan een mens niet aan. Ik heb zo veel soep gegeten, kan bijna niet meer staan. Ik zat daar maar te slurpen achter die grote kop en als ik bijna klaar was, dan schepten ze weer op!" (Hans Teeuwen)


Acties:
  • 0 Henk 'm!

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 03-09 16:36
Ok, maar klopt de rest van mijn code wel? want daar twijfel ik aan.

Acties:
  • 0 Henk 'm!

Verwijderd

Let vooral op de mogelijkheid tot misbruik van je SQL code. Zo te zien kan gewoon willekeurige SQL code geinjecteerd worden, waardoor een hacker zo je database om zeep kan helpen...

(edit:) En let ook op het correct quoten van namen binnen de [] bij gebruik van arrays.

[ Voor 21% gewijzigd door Verwijderd op 02-06-2006 18:38 ]


Acties:
  • 0 Henk 'm!

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 19:55
Verander name="antwoord" bij je eerste input in name="antwoordID"

Je stuurt nu geen ID mee.

LinkedIn - Collega worden?


Acties:
  • 0 Henk 'm!

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 03-09 16:36
Verwijderd schreef op vrijdag 02 juni 2006 @ 18:35:
Let vooral op de mogelijkheid tot misbruik van je SQL code. Zo te zien kan gewoon willekeurige SQL code geinjecteerd worden, waardoor een hacker zo je database om zeep kan helpen...

(edit:) En let ook op het correct quoten van namen binnen de [] bij gebruik van arrays.
Ok hoe los ik dat op, want zou bij goed niet weten hoe je zoiets moeten beveiligen? links voor me zodat ik dat uit kan zoeken?

Zal zelf ook even wat zoeken op google...tx

Acties:
  • 0 Henk 'm!

Verwijderd

Gewoon checken: Is het goede type invoer (met behulp van een van de vele is_<variabeltype> functies), verder alle text altijd: http://nl3.php.net/manual...ql-real-escape-string.php

Dat scheelt al enorm veel.

Dus: nummers bijvoorbeeld:

PHP:
1
2
3
4
if (is_numeric($variable) and (int) $variable > ondergrens and (int) $variable < bovengrens)
{
    // goede waarde
}


En voor teksten:
PHP:
1
2
3
4
5
6
7
// eventueel nog een inhoud check met bijvoorbeeld een preg_match
// DIe preg_match kan dus op zich weg
if (strlen($variable) > ondergrens and strlen ($variable) < bovengrens and preg_match($pattern, $variable))
{
      // Nu nog escapen
      $variable = mysql_real_escape_string($variable, $JERESOURCELINKINDENTIFIER);
}

Nog wel letten bij WHERE clausules: op wildcards.

Maar kern: Check altijd of het goede type is, en aan de vereiste voldoet, en daarnaast: alle teksten altijd escapen.

[ Voor 5% gewijzigd door Verwijderd op 03-06-2006 15:25 ]


Acties:
  • 0 Henk 'm!

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 03-09 16:36
Super dankje!

Zal me er in verdiepen.
Pagina: 1