Multiple rows laden en updaten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ferdi Verbeek

Ferdi Verbeek

26/07/2011 20:54:16
Quote Anchor link
Ja, de titel zegt het eigen al. Ik wil data uit een tabel laden, met alle rijen. Dan wil ik vervolgens dat deze allemaal aanpasbaar zijn en door middel van een update knop te updaten zijn.

De tabel heeft 4 kolommen:
- id
- positie
- naam
- prijs

Ik wil dat de gebruiker de laatste 3 kan wijzigen. De positie is van belang omdat ik wil dat de producten zeg maar op positie worden geplaatst, dit is echter pas later belangrijk.

Het probleem is de update, die werkt niet!

Ik zit op dit moment echt vast en wordt er gek van, het lijkt zo simpel.

Iemand een tip?

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
<?php
$_POST
= RealEscape($_POST);

$id = $_POST['editid'];
$positie = $_POST['positie'];
$naam  = $_POST['naam'];
$prijs    = $_POST['prijs'];

   if ($_POST['submit'] == "Update" && $editid > 0)
      {
$query = "UPDATE $tab_prijzen SET positie='$positie', naam='$naam', prijs='$prijs'
                 WHERE id='$editid'"
;
       mysql_query($query);
       echo "<script language=\"javascript\">location.href='editprijzen.php';</script>";
      }


$query="SELECT * FROM $tab_prijzen";
$fetch = mysql_query($query);

echo "<form id=\"editprijzenform\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
      <table id=\"editprijzen\">"
;
      while ($rows = mysql_fetch_array($fetch))
          {

          echo "<tr>
            <td><input type=\"text\" name=\"positie\" size=\"5\" value=\""
.$rows['positie']."\"></td>
            <td><input type=\"text\" name=\"naam\" size=\"20\" value=\""
.$rows['naam']."\"></td>
            <td><input type=\"text\" name=\"prijs\" size=\"10\" value=\""
.$rows['prijs']."\"></td>
          </tr>"
;
          }

          echo "<tr>
            <td>
              <input type=\"submit\" name=\"submit\"
               value=\"Update\">
              <input type=\"hidden\" name=\"editid\" value=\""
.$rows['id']."\">
            </td>
          </tr>
      </table>
      </form>"
;

?>
Gewijzigd op 26/07/2011 21:42:25 door Ferdi Verbeek
 
PHP hulp

PHP hulp

25/04/2024 00:30:10
 
- SanThe -

- SanThe -

26/07/2011 21:17:18
Quote Anchor link
Je voert een SELECT in een SELECT uit terwijl de eerste al alles ophaalt. Beetje dubbelop.

Verder geen vars zomaar kopiëren. Vars buiten quotes. Denk aan sql-injection. Je kontroleert niks. Ook foutafhandeling ontbreekt. Gebruik bij echo enkele quotes zodat je de dubbele html-quotes niet hoeft te escapen.
 
Ferdi Verbeek

Ferdi Verbeek

26/07/2011 21:19:11
Quote Anchor link
Klopt, kwam het ook op deze site tegen:

http://www.phpeasystep.com/mysql/10.html

Heb dat dus aangepast. Ik zie nu beide rijen, maar kan nog niet updaten :(

Er is een sql check, dat gaat realscape, staat in andere php file. Maar dezelfde reactie gaf je een tijd geleden ook al in een oudere topic van mij. Ik ga geen controles inbouwen, dat kost me uren werk en het is net of hier reclame heerst voor dat scriptje. We zijn hier toch om elkaar te helpen in de codes?

Goed, nu weer on topic. De update werkt nog steeds niet. Ik weet niet precies hoe ik nu onderscheid maak bij het updaten tussen de verschillende rijen. De update moet toch per rij gaan?
Gewijzigd op 26/07/2011 21:23:50 door Ferdi Verbeek
 
- SanThe -

- SanThe -

26/07/2011 21:31:03
Quote Anchor link
Gebruik array's in het formulier.
Dus niet name="positie" maar name="positie[en_hier_het_record_id]".
 
Ferdi Verbeek

Ferdi Verbeek

26/07/2011 21:40:18
Quote Anchor link
Mmm ok, ik heb een aantal dingen geprobeerd maar ze werken niet. Weet niet precies wat ik er dan moet neerzetten. Moet ik dan $id, editid of POST id kiezen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
name=\"naam[$id]\"
?>


Dit werkt dus niet, ik begrijp ook het volgende niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
WHERE id='$editid'
?>


Dit staat in de update query. Hoe weet de query nou wat de editid is?

Toevoeging op 26/07/2011 22:12:17:

Blijkbaar moet ik meer gaan kijken naar dat [] gedoe en het count gebeuren dat ook op die site staat. Maar ik heb het idee dat dat zo oud is, dat sommige dingen nu anders moeten. Anyway, ik hoop te gaan snappen wat er staat.
Gewijzigd op 26/07/2011 21:51:17 door Ferdi Verbeek
 
Sven b

Sven b

27/07/2011 06:57:04
Quote Anchor link
name = $_POST['id'];

Waar haal je die $editid vandaan en werkt het wel waar je hem vandaan haalt? MIsschien wat echo's in je script zetten om te kijken hoever je komt?

echo $editid;
 
Ferdi Verbeek

Ferdi Verbeek

27/07/2011 19:34:58
Quote Anchor link
Ja inderdaad, kan ik er eventueel soms even tussen plaatsen.

Ik probeer dit script te volgen:

http://www.phpeasystep.com/mysql/10.html

Maar ik snap niet wat hier gebeurt. Ik vind dit een vreemde manier van notatie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
<td align="center">[code]<? $id[]=$rows['id']; ?>
<? echo $rows['id']; ?></td>
?>


Toevoeging op 27/07/2011 20:23:35:

Goed, ik heb besloten dat ik helemaal opnieuw begin. Misschien kunnen jullie mij een klein beetje helpen want ik snap de volgende dingen niet:

In het begin kun je die variabelen definiëren. Heet dat zo? Je hebt dan bijvoorbeeld dit:

$naam = $_POST['naam'];

Wat is dit? Wat moet ik ermee? En waarom staat er POST?

Stap 1 dus... Zo moet het vast lukken, veel snap ik maar een aantal dingen helemaal niet waarvan dit de 1e is. Ik hoop dat iemand me een en ander kan uitleggen.
 
Obelix Idefix

Obelix Idefix

27/07/2011 21:24:08
Quote Anchor link
Wat vind je een vreemde manier van notatie aan jouw voorbeeld?

Men maakt daarin gebruik van shorttags. Wordt doorgaans afgeraden.

$naam = $_POST['naam']; zie ik niet als definiëren van een variabele maar als kopiëren van variabele. Doorgaans zinloos.

Heb even gekeken naar het voorbeeld op die link van jou; zou ik niet gebruiken als basis/om van te leren. Daarin zitten een aantal dingen die volgens de kenners/experts hier genadeloos afgebrand worden...

Kijk eens op/ begin met : ohttp://www.phptuts.nl/view/39/
Gewijzigd op 27/07/2011 21:26:06 door Obelix Idefix
 
Ferdi Verbeek

Ferdi Verbeek

27/07/2011 22:31:09
Quote Anchor link
Dank u, ga ik zeker doen :)
 



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.