Sql result in een array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

SanderV

SanderV

15/01/2007 09:48:00
Quote Anchor link
Hallo,
Zou iemand mij kunnen vertellen of ik een sql result in een array kan zetten, mijn bedoeling is dus om een aantal checkboxen te krijgen waar men gegevens kan aanvinken.
Deze gegevens moeten dan wel uit een tabel gehaald worden.
Ik zat zelf een beejte in deze geest te denken, maar ik zou er ook helemaal naast kunnen zitten

$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
$hobbies = array ($result);
Ik krijg nu alleen nog maar resource ID #5 melding.

Ik kan hem gelukkig wel aanvinken :)
 
PHP hulp

PHP hulp

28/11/2024 03:29:25
 
M Ypma

M Ypma

15/01/2007 09:49:00
Quote Anchor link
mysql_fetch_array();

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$query
="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
$hobbies = mysql_fetch_array ($result);
?>
Gewijzigd op 01/01/1970 01:00:00 door M Ypma
 
SanderV

SanderV

15/01/2007 10:00:00
Quote Anchor link
Hé bedankt,
Ik krijg nu wel gegevens uit mijn DB te zien,
Ik krijg alleen het eerste record 2 keer te zien, voor de rest laat hij niks zien.
Wanneer ik het eerste record weggooi, dan laat hij het tweede record twee keer zien. Etc..
 
M Ypma

M Ypma

15/01/2007 10:02:00
Quote Anchor link
dat komt omdat je nu steeds je eerste record aanspreekt... de oplossing is je fetch array in een while lus te plaatsen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
$query
="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
while ($hobbies = mysql_fetch_array ($result)) {
   //spreek hier je results aan: $hobbies['hobby_id'];
}
?>
 
Robert Deiman

Robert Deiman

15/01/2007 10:03: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
<?
$array_hobbies
= array();
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or trigger_error(mysql_error());
while($hobbies = mysql_fetch_array ($result)){
   $array_hobbies[] = $hobbies['hobby'];
  }


//$array_hobbies is nu een array met daarin elke hobby die voorkomt.
?>
 
SanderV

SanderV

15/01/2007 10:35:00
Quote Anchor link
hmzz. Hij gaat nu over zijn nek bij mijn opmaak.
Ik krijg melding
Warning: Invalid argument supplied for foreach() in C:\wamp\www\dating\hobbytoevoegen.php on line 25

Ik heb hier de volgende code staan
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
<?
function make_checkboxes ($name, $values, $selections, $vertical = false) {
        foreach ($values as $value) {
            if ($vertical) {
                t (3, true);
                echo '<p>';
            }

            t (3, true);
            echo '<input id="' . $value . '" name="' . $name . '[]" type="checkbox" value="' . $value . '"';
            if (in_array ($value, $selections)) {
                echo ' checked="checked"';
            }

            echo '>';
            t (3, true);
            echo '<label for ="' . $value . '">' . $value . '</label>';
            if ($vertical) {
                t (3, true);
                echo '</p>';
            }
        }
    }

?>
 
Joren de Wit

Joren de Wit

15/01/2007 10:44:00
Quote Anchor link
En hoe roep je je functie aan? Blijkbaar heeft $values niet de juiste waarde...
 
SanderV

SanderV

15/01/2007 11:07:00
Quote Anchor link
Sorry voor het vele script haal ik straks ook weer weg, maar ik ben even verdwaald denk ik.
Wanneer ik de while loop weglaat dan is er geen enkel probleem, wanneer ik deze erin stop krijg ik een fout.
Mijn al zo geringe kennis houdt hier echt op.




Het teveel aan code haal ik zo weer weg. Alvast bedankt.
Gewijzigd op 01/01/1970 01:00:00 door SanderV
 
Joren de Wit

Joren de Wit

15/01/2007 12:10:00
Quote Anchor link
Je geeft aan de functie make_checkboxes als tweede parameter de variabele $hobbies mee. Echter $hobbies is geen array terwijl de functie dat wel vereist. Ik denk dat je in plaats van $hobbies de variabele $array_hobbies bedoelde.
 
SanderV

SanderV

15/01/2007 13:14:00
Quote Anchor link
och mensen, ik ga hier echt even niet uitkomen, laat ik maar eens helemaal opnieuw beginnen. en dan wederom stap voor stap alles doornemen.
Toch bedankt.
 
Joren de Wit

Joren de Wit

15/01/2007 13:45:00
Quote Anchor link
Heb je het al geprobeerd om als 2e parameter $array_hobbies aan je functie mee te geven?
 
SanderV

SanderV

15/01/2007 13:58:00
Quote Anchor link
Nee nog niet. Ik begrijp niet helemaal wat je hiermee bedoelt (eerder helemaal niet)
Ben nu nog steeds aan het trachten het geheel werkend te krijgen. Ondertussen ook opnieuw begonnen om te kijken of ik het op een andere manier werkende zou gaan krijgen, maar loop tegen hetzelfde aan.
 
Joren de Wit

Joren de Wit

15/01/2007 14:14:00
Quote Anchor link
Je gebruikte ergens aan het einde van je script de functie make_checkboxes. Hier gaf je als tweede parameter geloof ik $hobbies mee.

Maar als je kijkt naar de functie make_checkboxes, dan zie je dat de tweede parameter een array moet zijn. Die wordt namelijk op de eerstvolgende regel van je functie al in een foreach loop gebruikt.

Echter uit je script bleek dat $hobbies helemaal geen array is en dus gaat je functie op dat moment de fout in. Daarom vermoedde ik dat je $array_hobbies bedoelde te gebruiken in plaats van $hobbies...
 
SanderV

SanderV

15/01/2007 14:33:00
Quote Anchor link
Helemaal gaaf, ben ik door een fout als deze de hele ochtend zoet geweest?
Ik ben blij, hartstikke bedankt!
 
SanderV

SanderV

15/01/2007 22:05:00
Quote Anchor link
Ik heb nu dus eerst een pagina waar ik een nieuwe klant toe kan voegen.
Vervolgens ga je naar een pagina waar je hobbies aan deze klant kan toevoegen.
Ik heb dus de variabele van het klant_id, ik heb de checkboxes met hierin alle hobbies uit de tabel hobby.
Ik heb ook een koppeltabel klant_hobby_koppel met de kolommen klant_id en hobby.
Nu wil ik dus voor iedere hobby die is aangevinkt in de checkbox een record aanmaken met het klant_id ($hobbytoe) en het aangevinkte record.
Zou iemand mij een klein stukje in de goede richting kunnen sturen met hoe ik dit probleem kan tackelen?
alvast bedankt!
 
Joren de Wit

Joren de Wit

16/01/2007 12:16:00
Quote Anchor link
Alle aangevinkte waarden uit je checkboxen reeks komen als array in de $_POST array te staan. Onder welke naam ze komen te staan is afhankelijk van wat jij voor $name (de eerste parameter van de checkbox functie) hebt opgegeven. Voor nu ga ik ervan uit dat dat 'hobbies' is.

Alle aangevinkte checkboxen staan dan vermeld in de array $_POST['hobbies']. Met een foreach loop kun je deze dus uitlezen en wegschrijven naar de database.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
foreach($_POST['hobbies'] as $hobby)
?>


Echter loop je nu tegen het probleem aan dat je niet de omschrijving van de hobbie in je tabel wilt plaatsen, maar juist het id. En laat het nou net zo zijn dat het id niet meegegeven wordt in de checkbox functie...

Als je dit dus wilt, zul je twee dingen aan moeten passen:
1. De manier waarop jij $array_hobbies aanmaakt. De keys in die array moeten hetzelfde zijn als het id van de bijbehorende hobby.
2. De checkboxfunctie moet je uitbreiden met een optie dat het 'value' attribuut van de checkbox niet de omschrijving van de hobby krijgt, maar juist het id van die hobby.
 
SanderV

SanderV

19/01/2007 13:03:00
Quote Anchor link
ok, als ik nu de foreach erbij zet dan worden alleen de hobbies juist in de tabel gezet. alleen de klant_id ($hobbytoe) komt er dan niet bij.
Wanneer ik de foreach weghaal is het excact andersom. Ik krijg dan wel een juist klant_id, maar bij het veld hobby krijg ik dan 'array'.

Ik heb nu dit als code:
(het teveel haal ik straks weer weg, leek me alleen handig om de hele code te posten, omdat er misschien iets mis is in mijn variabelen)

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
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

<?php


require("session.php");
require("config.php");

$hobbytoe = $_GET['id'];


    ini_set('display_errors', 1);
    error_reporting (E_ALL);

    
    function
t($n_tabs, $newline = false) {
        if ($newline) echo "\n";
        for ($i = 0; $i < $n_tabs; $i++) {
            echo "\t";
        }
    }
    
  
    function
make_checkboxes ($name, $values, $selections, $vertical = true) {
        foreach ($values as $value) {
            if ($vertical) {
                t (1, true);
                echo '<p>';
            }

            t (3, true);
            echo '<input id="' . $value . '" name="' . $name . '[]" type="checkbox" value="' . $value . '"';
            if (in_array ($value, $selections)) {
                echo ' checked="checked"';
            }

            echo '>';
            t (3, true);
            echo '<label for ="' . $value . '">' . $value . '</label>';
            if ($vertical) {
                t (3, true);
                echo '</p>';
            }
        }
    }

    
    // initialisatie-arrays;
    // drie series checkboxen als voorbeeld

                $array_hobbies = array();
                $query="SELECT hobby FROM hobby";
                $result = mysql_query($query) or trigger_error(mysql_error());
                    while($hobbies = mysql_fetch_array ($result)){
                  $array_hobbies[] = $hobbies['hobby'];
                  }

    
    
    /
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $hobbies_selections        = (isset ($_POST['hobbies'])) ? ($_POST['hobbies']) : (array ());
        
    }

    
    else {
        $hobbies_selections        = array ();
        
    }

    foreach($_POST['hobbies'] as $hobby)
    
 mysql_query("INSERT INTO klanten_hobby_koppel (klanten_id, hobby)
        VALUES ('"
.$hobbytoe."', '".$hobby."')") or die(mysql_error());
    
        
?>






<html>
<head>
    <title>Selecteer hobbys</title>
    
    
</head>


<body>
    
<font face='Arial'>
        <table width='400' border='0' cellspacing='1' cellpadding='0'align='center'>
           <tr>
            <td colspan='2'>
            <img src='logoone2one.jpg'>
            </td>
           </tr>
           <tr>
            <td colspan='2' bgcolor='#9EC1E0' class='R7'>
            <b>Selecteer hobby</b>
            </td>
           </tr>
    <td>      
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        
        
        
        <p><?php make_checkboxes ('hobbies', $array_hobbies, $hobbies_selections); ?></p>
        
        <p><input type="submit" value="verzenden"></p>
      


    </form>
 
    
    
    
</body>
</html>
 
Jason de Ridder

Jason de Ridder

19/01/2007 13:05:00
Quote Anchor link
gebruik mysql_fetch_assoc() zelfde functie... maar sneller
 
SanderV

SanderV

19/01/2007 13:24:00
Quote Anchor link
Jason de Ridder schreef op 19.01.2007 13:05:
gebruik mysql_fetch_assoc() zelfde functie... maar sneller


ipv?
maar dat beantwoord mijn vraag nog niet.
Volgens mij zit ik er helemaal naast :S
 
Klaasjan Boven

Klaasjan Boven

19/01/2007 14:02:00
Quote Anchor link
ipv mysql_fetch_array
 
- SanThe -

- SanThe -

19/01/2007 14:09:00
Quote Anchor link
Volgens mij gaat er iets niet goed omdat je het ene met $_GET en het andere weer met $_POST doet. Als je bovenstaand formulier post dan is er geen $_GET gevuld.
 

Pagina: 1 2 volgende »



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.