PHP probleempje

Pagina: 1
Acties:
  • 527 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,
Voor een schoolproject moet ik een site maken. En ik ben opzich dus best een groentje in PHP.

Hierbij heb ik een tabelletje in mn MySQL met gebruikers.
En die moet vanuit een "control panel" worden beheert.

Omdat deze site toch lokaal gehost word (dus ook de SQL), en er waarschijnlijk niet meer dan 5 gebruikers in komen te staan, maakt het niet uit dat het misschien "veeleisend" is voor de server.

Mijn idee was dus namelijk een tabel te printen, met alle gebruikers, en alle data uit de SQL in Text fields zetten, zodat je een hele hoop gebruikers tegelijk kan wijzigen.

code:
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
<?php

    require "connect.php";

    $sq1 = "SELECT * FROM brillen";
    $resultaat = mysql_query($sq1);

    if (isset ($_POST["submit"]))
       {     
         while ($item = mysql_fetch_array($resultaat)){
                $id=$item['id'];             
                $voornaam = $_POST['voornaam'.$id];
                $achternaam = $_POST['achternaam'.$id];
                $user = $_POST['user'.$id];
                $email = $_POST['email'.$id];
                $groep = 1*$_POST['groep'.$id];
                    $sql= "UPDATE members SET Voornaam = '$voornaam' WHERE id = $id";
                    $sql2= "UPDATE members SET Achternaam = '$achternaam' WHERE id = $id";
                    $sql3= "UPDATE members SET user = '$user' WHERE id = $id";
                    $sql4= "UPDATE members SET email = '$email' WHERE id = $id";
                    $sql5= "UPDATE members SET groep = $groep WHERE id = $id";
              mysql_query($sql);
              mysql_query($sql2);
              mysql_query($sql3);
              mysql_query($sql4);
              mysql_query($sql5);
            
         }
       }


echo '<table width="600" border="1">';
echo '<tr>';
echo '<td>Naam</td>';
echo '<td>Achternaam</td>';
echo '<td>Username</td>';
echo '<td>Email</td>';
echo '<td>Groep</td>';
echo '</tr>';

?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<?php
$sq1 = "SELECT * FROM members";
$resultaat = mysql_query($sq1);
if ($resultaat)
    {
        while ($item = mysql_fetch_array($resultaat))
        {
            echo '  <tr> ';
            echo '      <td>
                            <input
                                name="voornaam'.$item['id'].'"
                                type="text"
                                value="'. $item['Voornaam'].'"
                                size="14"
                                 />
                        </td>';
            echo '      <td>
                            <input
                                name="achternaam'.$item['id'].'"
                                type="text"
                                value="'. $item['Achternaam'].'"
                                size="14"
                                 />
                        </td>';
            echo '      <td>
                            <input
                                name="user'.$item['id'].'"
                                type="text"
                                value="'. $item['user'].'"
                                size="14"
                                 />
                        </td>';         
            echo '      <td>
                            <input
                                name="email'.$item['id'].'"
                                type="text"
                                value="'. $item['email'].'"
                                size="14"
                                 />
                        </td>';     
            echo '      <td>
                            <input
                                name="groep'.$item['id'].'"
                                type="text"
                                value="'. $item['groep'].'"
                                size="14"
                                maxlength="1" />
                        </td>';
            echo '  </tr> ';
        }
    }

echo '</table>';

?>

    <input name="submit" type="submit" value="Submit">
    </form>


Deze code werkt.
Maar bij sommige niet.
Ik heb een tabel van bijvoorbeeld:
| John | John@email.com | 5 |
| Piet | Piet@email.com | 4 |
| Karel | karel@email.com | 3 |

Als ik John of Karel dan wijzig, dan doet die dat gewoon, bij elk veld.
Maar als ik dan Piet wijzig, pakt die dat gewoon niet.

Wat is hier in godsnaam het probleem?

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Waarom maak je er niet 1 query van per persoon en debug je die en gooi je die door je mysql heen om te kijken wat er fout gaat.

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Controleer (*&%$@^$* nou eens de return values van system en database calls. Er gaat wellicht meer fout, maar zonder deze controle debug je als een kip zonder kop. :>

En dit kan inderdaad best in minder queries.

*: Het vloeken is niet persoonlijk, maar puur omdat het laatste tijd in praktisch elk topic raak is.

[ Voor 22% gewijzigd door Voutloos op 15-06-2009 15:38 ]

{signature}


Acties:
  • 0 Henk 'm!

  • muksie
  • Registratie: Mei 2005
  • Laatst online: 17-09 18:14
Idd, check de return-value, en druk een error-message af met mysql_error().

Bovendien heeft je code een enorm SQL injection beveiligingslek, maar misschien dat je dat zelf ook wel door hebt :)

Acties:
  • 0 Henk 'm!

Verwijderd

Bovendien heeft je code een enorm SQL injection beveiligingslek, maar misschien dat je dat zelf ook wel door hebt
Het word toch lokaal gehost voor een school projectje, who cares :P

[ Voor 47% gewijzigd door Verwijderd op 15-06-2009 15:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou, ik ben dus eens gaan debuggen.
Maar dat bevestigd bij mij eigenlijk alleen maar dat die het niet doet. Maar ik heb echt GEEN idee waarom.
code:
1
2
3
4
5
6
7
8
9
10
11
12
              $id=$item['id']; 
              echo                  $_POST['voornaam'.$id];
              echo "<br>";
              echo                  $_POST['achternaam'.$id];
              echo "<br>";
              echo                  $_POST['user'.$id];
              echo "<br>";
              echo                  $_POST['email'.$id];
              echo "<br>";
              echo                  $_POST['groep'.$id];
              echo "<br>";
                          mysql_error();

Dit had ik er dus even in plaats van de update code neergezet.
mysql_error(); gaf niks.
Wat mij opviel, hij gaf netjes weer wat er in de hokjes stond, bij de eerste rij zegmaar.
Als 2e rij gaf die weer wat op de site als 5e rij ofzo staat.
En verder ging het gewoon goed, en liet die alles zien zoals het hoorde.

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

Weet je eigenlijk wel hoe mysql_error() werkt? Je moet wel een query uitvoeren, anders geeft hij geen fouten terug (immers, welke fout kan zich hebben voorgedaan als je geen query hebt uitgevoerd? ;))

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:47

MueR

Admin Tweakers Discord

is niet lief

Beste wabsta,

Ga naar je leraar en vertel dat je geen PHP beheerst. Vraag hem om een paar uur begeleiding. Ga vervolgens eens wat tutorials op het internet doorlopen. Wat je hier nu aan het inkloppen bent slaat als een tang op een varken. Lees voor de grap eens door wat mysql_error() doet, om maar een voorbeeld te noemen.

Je zegt dat dit een schoolproject is, dus ongetwijfeld is je leraar bereid je te helpen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-09 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Patriot schreef op maandag 15 juni 2009 @ 16:08:
(immers, welke fout kan zich hebben voorgedaan als je geen query hebt uitgevoerd? ;))
Error: there are no errors yet! :+

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

  1. Gebruik arrays voor het doorsturen van lijsten aan data. <input name="voornaam[$id]"> dus. Vervolgens kun je er veel beter doorheen loopen.
  2. Ga debuggen. En debuggen doe je niet door naar je code te staren. Debuggen doe je door op strategische plaatsen waarden van variabelen en returnwaardes van functies te bekijken. Door stap voor stap mogelijke problemen te elimineren tot alleen de daadwerkelijke oorzaak overblijft. Zie ook Programming FAQ - Debuggen: hoe doe ik dat?
  3. Praat met je leraar. Aan je code is duidelijk te zien dat je een paar basisdingetjes van PHP (1*$iets doen om te casten naar integer :? ) en vooral ook SQL (5 verschillende queries voor het aanpassen van één record :? ) niet door hebt. Niemand verwacht dat je alles meteen goed doet, en om hulp vragen is niet direct een teken dat je het niet aankan; de meeste leraren zijn er zelfs op uit om gerichte vragen te krijgen.
Ik ga dit topic sluiten. Het is niet de bedoeling dat wij je code gaan debuggen. Doe dat eerst zelf even, en mocht je aan de hand daarvan nog vragen hebben, dan kun je daarover een nieuw topic openen waarbij je die debuginformatie vermeldt.

'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.

Pagina: 1

Dit topic is gesloten.