[PHP/MySQL] Toevoegen van dynamische resultaten in database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben een beginnende PHP'er en heb flink gezocht maar kom hier niet uit.

Ik heb een form gemaakt dat er als volgt uitziet:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
print <form method=\"POST\" action=\"uitvoeren.php\">;
        
    $i = 0; 
    $result = 'result'; 
    print "<table>";
    while ($row = mysql_fetch_array($zoekertje)) 
        {
        (isset(${$result.$i}));
        $ID_koppeling = $row["ID"];
        $kleur = $row["kleur"];
        $kleur_ID= $row["kleur_ID"];
        print "<tr><td>$kleur</td><td>$kleur_ID</td><td><input type=\"checkbox\" value=\"$ID_koppeling\" name=\"$result.$i\"></td></tr>";
        print ${$result.$i++};
        }      
    print "</table>";
    print ("<input type=\"hidden\" name=\"ID\" value=\"$ID\">");
    print ("<p><input type=\"submit\" value=\"Submit\" name=\"B1\"><input type=\"reset\" value=\"Reset\" name=\"B2\"></p>");
    print ("</form>");


Er komt een lijstje uit de betreffende tabel met achter iedere record een checkbox. De checkboxes die zijn aangevinkt worden als resultaat verstuurd als result_x, dus afhankelijk van het aantal aangevinkte records.

De resultaten moeten in de database worden geplaatst. Op zich geen probleem, alleen weet ik niet hoe ik die result_x resultaten mee kan geven.

PHP:
1
2
3
4
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $ID = addslashes($_POST["ID"]);
    $result_x = addslashes($_POST["result_x"]);
mysql_query("INSERT INTO test_toevoegen (ID, result_1, result_x) VALUES '$ID', '$result_1', '$result_x')");


Hoe kan ik er nu voor zorgen dat die result_x netjes worden toegevoegd? Ergens moet een soort loopje komen maar ik kom er niet uit. Wie heeft tips? Thanx.

Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

Ik weet niet of ik je helemaal goed begrijp maar mischien bedoel je zo iets:

PHP:
1
print  name=\"$result[$i]\"


dan kan je een query fixen en die in een loop laten uitvoeren ofzow?

Acties:
  • 0 Henk 'm!

Verwijderd

Maak je checkbox zo:
code:
1
<input type=\"checkbox\" value=\"$ID_koppeling\" name=\"result[$i]\">

En dan krijg je em als array terug:
PHP:
1
2
$result_x = $_POST['result'];
print_r($result_x);

In dit voorbeeld print ik de array, maar je kunt em natuurlijk ook in de database zetten, of dmv een looptje doorlopen...
( for($i=0; $i<count($result_x); $i++){ ... } )

[ Voor 64% gewijzigd door Verwijderd op 21-05-2003 19:16 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Top! Ga het zodadelijk proberen, maar het ziet er logisch uit. Thanks!!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg het helaas nog niet voor elkaar, denk dat er ergens nog iets misgaat.

In het form staat het nu zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
while ($row = mysql_fetch_array($zoekertje)) 
        {
        (isset(${$result.$i}));
        $ID_koppeling = $row["ID"];
        $kleur = $row["kleur"];
        $kleur_ID= $row["kleur_ID"];
                    
        print "<tr><td>$kleur</td><td>$kleur_ID</td><td>
<input type=\"checkbox\" value=\"$ID_koppeling\" name=\"$result[$i]\"></td></tr>";
        print ${$result.$i++};
        }

De verwerking is nu zo:
PHP:
1
2
3
4
5
for($i=0; $i<count($result); $i++)
        {
        $result_x = addslashes($_POST['result[$i]']);
        print_r($result_x);
        }

Ik krijg geen errors maar ook geen gegevens op mijn scherm. What's wrong?

[ Voor 15% gewijzigd door Verwijderd op 22-05-2003 18:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik weet niet of $result in je form nog wat is, want anders zie ik het nut van $result[$i] hier niet in:
code:
1
<input type=\"checkbox\" value=\"$ID_koppeling\" name=\"$result[$i]\">

Want ik zie ook dat je $result de waarde 'result' geeft...dus die regel zou ik zo doen:
code:
1
<input type=\"checkbox\" value=\"$ID_koppeling\" name=\"result[$i]\">

Verder kun je op twee manieren de gegevens verwerken, maar zoals jij het doet is het een beetje fout ;)

Manier 1: (in een array zetten en laten printen)
PHP:
1
2
$result_x = addslashes($_POST['result']); 
print_r($result_x);

Manier 2: (in een array zetten en die per onderdeel laten printen)
PHP:
1
2
3
4
5
$result_x = addslashes($_POST['result']); 
for($i=0; $i<count($result_x); $i++) 
{
print $result_x[$i]."<br>"; // <br> is voor het oog
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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
<?php
include("xxx.php");
mysql_connect($hostname, $user, $password);
mysql_select_db($database);

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    
    $ID_koppeling = addslashes($_POST["ID_koppeling"]);
    $ID = addslashes($_POST["ID"]);
    $result = ($_POST['result']); 
                        
        //Coderegel om de gewijzigde velden te updaten
                    //Niet ideaal omdat de $i niet onbeperkt is!! 
        for($i=0; $i < 20; $i++) 
        { 
            if ($result[$i]== 0) 
            {
            }
            else 
            {
            mysql_query("INSERT INTO koppeling (artikel_ID, kleur_ID) 
VALUES ('$ID', '$result[$i]')");
            }   
        }
        //Foutcontrole 
        if (mysql_error()) { print "Database Error: $sql " . mysql_error(); }
    
}
else {

    //Ophalen van alle beschikbare kleuren
    $sql = "SELECT * FROM kleuren";
    $zoekertje = mysql_query($sql);
    print "<form method=\"POST\" action=\"koppeling.php\">";
    $i = 0; 
    print "<table><tr><td>Kleur: </td><td>Kleurcode: </td></tr>";
    while ($row = mysql_fetch_array($zoekertje)) 
        {
        (isset(${$result.$i}));
        $ID_koppeling = $row["ID"];
        $kleur = $row["kleur"];
        $kleur_ID= $row["kleur_ID"];
                    
        print "<tr><td>$kleur</td><td>$kleur_ID</td><td>
<input type=\"checkbox\" value=\"$ID_koppeling\" name=\"result[$i]\"></td></tr>";
        print ${$result.$i++};
        }      
    print "</table>";
    //Input buttons voor submit
    print ("<input type=\"hidden\" name=\"ID\" value=\"$ID\">");
    print ("<p><input type=\"submit\" value=\"Submit\" 
name=\"B1\"><input type=\"reset\" value=\"Reset\" name=\"B2\"></p>");
    print ("</form>");

}
?>

Bedankt voor de tips Slindenau! Ik ben er een heel eind mee geholpen en vond het wel nuttig om het eindresultaat te posten, wie weet heeft iemand er nog eens iets aan. Er zitten nog wat rommeligheden in die verbeterd kunnen worden, zoals de routine van het verwijderen van lege resultaten in de array, maar het script functioneert perfect. Heb weer een hoop geleerd, blijf die arrays lastig vinden!

Wat doet het: het haalt de beschikbare kleuren (maakt dus niet uit hoeveel) uit een tabel en maakt daarvan een overzicht met checkboxes die je kunt aanvinken. De koppelingstabel wordt geupdate met het artikelnummer ID in het ene veld en de aangevinkte kleuren (dmv een kleurcode) in het tweede veld.

edit: even wat layout-verneukende regeltjes afgebroken!

[ Voor 56% gewijzigd door Verwijderd op 22-05-2003 18:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Dit kan heel makkelijk anders:
PHP:
1
2
3
4
5
6
7
8
9
10
$result = ($_POST['result']); 
                         
        //Coderegel om de gewijzigde velden te updaten 
                    //Niet ideaal omdat de $i niet onbeperkt is!! 
        for($i=0; $i < 20; $i++) 
        { 
            if ($result[$i]== 0) 
            { 
            } 
            else

Je kunt die $i namelijk met count() berekenen:
PHP:
1
2
3
4
5
6
7
8
9
10
$result = ($_POST['result']); 
                         
        //Coderegel om de gewijzigde velden te updaten 
                    //Niet ideaal omdat de $i niet onbeperkt is!! 
        for($i=0; $i < count($result); $i++) 
        { 
            if ($result[$i]== 0) 
            { 
            } 
            else

[ Voor 106% gewijzigd door Verwijderd op 22-05-2003 19:14 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

slindenau:
Dit kan heel makkelijk anders: [snip]

Je kunt die $i namelijk met count() berekenen:
[snip]
't Kan nog makkelijker. foreach ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1