inhoud checkbox in mysql db

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

25/07/2014 14:54:18
Quote Anchor link
Hallo allemaal

Onderste heb ik ook al bij Database en SQL hulp gezet, maar misschien hoort hij meer hier thuis omdat ik bij de andere geen reacties krijg...

Ik loop al enkele dagen te rommelen met een issue en ik kom er niet uit. Stackflow en andere sites geraadpleegd maar niets boodt de oplossing die ik wilde/werkte.
Nu zijn jullie mijn laatste hoop!

Issue:
CMS met een gallery. achter elke foto zijn er 3 checkboxen. 1ste checkbox: toon op homepage. 2de checkbox: toon in gallery en de 3rde is dat je hem kan verwijderen. checkbox 1 en 2 kunnen ook beide geselecteerd zijn.
Ik krijg het niet werkend om de waarde van de check in mijn database te krijgen. Of ik krijg het helemaal niet werkend, of enkel bij het 1ste record, ookal vink ik de 9de record aan.

Mijn code:
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
116
117
118
119
120
121
122
<?php

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

ob_start();

require('../../lib/dbconnection.php');
require("../../lib/checklogin.php");
require("includes/upload.inc.php");

$query = 'SELECT * FROM gallery where image_deleted != 1 order by id desc';
$result=$conn->query($query);
$count=$result->num_rows;

      
<!
DOCTYPE html>
<
html>
    <
head>
        <
title>Classic Nails - CMS</title>
        <
meta charset="utf-8">
        <
meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <
meta name="description" content="ClassicNails">
        <
meta name="viewport" content="width=device-width, initial-scale=1">
        <
link rel="stylesheet" href="../css/screen.css">
        <
link rel="stylesheet" href="../css/libs/magnific-popup.css">
        <
script src="../js/libs/min/jquery-min.js" type="text/javascript"></script>

        <script src="../js/min/custom-min.js" type="text/javascript"></script>
        <script src="js/jquery.magnific-popup.js"></script>
        <script>
                $(document).ready(function() {
                $('.image-link').magnificPopup({
                        type:'image',
                                gallery:{
                                        enabled:true
                                }
                        });
                });
        </script>
    </head>
    <body>
        <?php include('includes/header.inc.php');
        [
code]<?php include('includes/nav.inc.php');
            <
div class="wrapper">
                <
article class="content">
                <
h1>Foto gallery</h1>
                [
code]<?php
                if (isset($uploadResult)) {
                echo "<p><strong>$uploadResult</strong></p>";
                }
                
                <
form action="" method="post" enctype="multipart/form-data" name="uploadImage" id="uploadImage">
                    <
p>
                            <
label for="image">Upload image:</label>
                            <
input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_FILE_SIZE; " />
                            <
input type="file" name="images" id="imagesd" />
                    <
/p>
                    <
p>
                            <
input type="submit" name="upload" id="upload" value="Upload" />
                    <
/p>
                <
/form>
                    <
div id="maincontent">
                        <
h2>Foto informatie</h2>
                        <
form name="FotoInformatie" id="fotoInformatie" method="post" action="">
                            <
table>
                                <
tr>
                                    <
td align="center"><strong>Foto<strong></td>
                                    <
td align="center"><strong>Titel</strong></td>
                                    <
td align="center"><strong>Beschrijving</strong></td>
                                    <
td align="center"><strong>Homepage</strong></td>
                                <
/tr>
                                [
code]<?php
                                while ($rows=$result->fetch_assoc()) {
                                
                                <
tr>
                                    <
td class="hide" align="center">[code]<?php $id[]=$rows['id']; [code]<?php echo $rows['id']; </td>
                                    <
td><a href="../img/uploads/<?php echo $rows['filename'];" class="image-link"><img src="../img/thumbs/<?php echo $rows['filename']; "></a></td>
                                    <
td align="center"><input name="title[]" type="text" id="title" value="<?php echo $rows['title']; "></td>
                                    <
td align="center"><input name="caption[]" type="text" id="caption" value="<?php echo $rows['caption']; "></td>
                                    <
td><input type="checkbox" name="checkboxHome[]" id="checkBoxHome" value="<?php echo $rows['home']"/></td>
                                <
/tr>
                                [
code]<?php
                                }
                                
                                <
tr>
                                <
td colspan="4" align="center">
                                    <
input type="submit" name="submit" value="Submit">
                                <
/tr>
                            <
/table>
                        <
/form>
                    <
/div>
                <
/article> <!-- end of content -->
            <
/div> <!-- end of container -->
        [
code]<?php include('includes/footer.inc.php');
    <
/body>
<
/html>

[
code]<?php

if(isset($_POST['submit'])) {
    $title = $_POST['title'];
    $caption = $_POST['caption'];
    var_dump($_POST['$checkboxHome']);
    if ('$checkboxHome' == "" xor NULL) {
        $checkboxHome = '0';
    }
else {
        $checkboxHome = '1';
    }
            
    for($i=0;$i<$count;$i++){
    $result1=mysqli_query($conn, "UPDATE gallery SET title='$title[$i]', caption='$caption[$i]', home='$checkboxHome[$i]' WHERE id='$id[$i]'");
//                    header("location:/admin/foto-admin.php");
        }
}

?>


Nu is enkel 1 checkbox aanwezig. Het gaat mij om het principe.

ben bekend met de prepare statements die mogelijkerwijs ontbreken. dat is van latere zorg..

Hoop dat iemand mij kan helpen.

alvast bedankt.
Gewijzigd op 25/07/2014 17:15:30 door
 
PHP hulp

PHP hulp

29/03/2024 01:05:47
 
Vincent Post

Vincent Post

25/07/2014 15:00:21
Quote Anchor link
Het is handig om je scripts even binnen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
tags te zetten zodat het beter leesbaar word.

Ik denk dat je anders niet snel hulp kunt verwachten het is niet echt overzichtelijk op deze manier.
Gewijzigd op 25/07/2014 15:02:27 door Vincent Post
 
CNEPHP -

CNEPHP -

25/07/2014 15:35:25
Quote Anchor link
Wat is de reden waarom je de ene keer een stukje PDO gebruikt en de andere keer weer een stuk MySQLi?
 

25/07/2014 16:20:24
Quote Anchor link
Vincent Post op 25/07/2014 15:00:21:
Het is handig om je scripts even binnen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
tags te zetten zodat het beter leesbaar word.

Ik denk dat je anders niet snel hulp kunt verwachten het is niet echt overzichtelijk op deze manier.

Er zitten HTML-codes tussen door. heb gewoon de gehele pagina gekopieerd zodat er geen "belangrijke" codes missen.



Toevoeging op 25/07/2014 16:21:12:

C NVT op 25/07/2014 15:35:25:
Wat is de reden waarom je de ene keer een stukje PDO gebruikt en de andere keer weer een stuk MySQLi?

Welk stukje bedoel je dan? ik ben niet bewust geweest dat er PDO tussen zat. Ik wilde alles gewoon via MySQLi bouwen...
 
Vincent Post

Vincent Post

25/07/2014 16:45:48
Quote Anchor link
Dave Greebe op 25/07/2014 16:20:24:
Vincent Post op 25/07/2014 15:00:21:
Het is handig om je scripts even binnen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
tags te zetten zodat het beter leesbaar word.

Ik denk dat je anders niet snel hulp kunt verwachten het is niet echt overzichtelijk op deze manier.

Er zitten HTML-codes tussen door. heb gewoon de gehele pagina gekopieerd zodat er geen "belangrijke" codes missen.

Toch is het handig om even het geheel tussen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
te plaatsen zodat het beter leesbaar word, zodat je ook beter geholpen kan worden!
 
Ward van der Put
Moderator

Ward van der Put

25/07/2014 16:48:24
Quote Anchor link
Dave Greebe op 25/07/2014 14:54:18:
Of ik krijg het helemaal niet werkend, of enkel bij het 1ste record, ookal vink ik de 9de record aan.

Dat is logisch: je voert een redirect uit in de for-loop die de database bijwerkt. Dat gaat waarschijnlijk hooguit één keer goed, want daarna is de browser al vertrokken, maar crasht de server op een "headers already sent". De andere records worden daarna niet meer bijgewerkt, maar jij ziet de fout niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
for($i=0;$i<$count;$i++){
    $result1=mysqli_query($conn, "UPDATE gallery SET title='$title[$i]', caption='$caption[$i]', home='$checkboxHome[$i]' WHERE id='$id[$i]'");
//                    header("location:/admin/foto-admin.php");
        }
}

?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/07/2014 17:03:55
Quote Anchor link
En niet te vergeten, alleen de aangevinkte checkboxen worden in de POST meegegeven.
Dus de arrays title en caption lopen niet synchroon daarmee
 

25/07/2014 17:16:01
Quote Anchor link
Vincent Post op 25/07/2014 16:45:48:
Dave Greebe op 25/07/2014 16:20:24:
Vincent Post op 25/07/2014 15:00:21:
Het is handig om je scripts even binnen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
tags te zetten zodat het beter leesbaar word.

Ik denk dat je anders niet snel hulp kunt verwachten het is niet echt overzichtelijk op deze manier.

Er zitten HTML-codes tussen door. heb gewoon de gehele pagina gekopieerd zodat er geen "belangrijke" codes missen.

Toch is het handig om even het geheel tussen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
te plaatsen zodat het beter leesbaar word, zodat je ook beter geholpen kan worden!


Akkoord, begreep je niet goed. heb het hersteld...


Toevoeging op 25/07/2014 17:21:01:

Ward van der Put op 25/07/2014 16:48:24:
Dave Greebe op 25/07/2014 14:54:18:
Of ik krijg het helemaal niet werkend, of enkel bij het 1ste record, ookal vink ik de 9de record aan.

Dat is logisch: je voert een redirect uit in de for-loop die de database bijwerkt. Dat gaat waarschijnlijk hooguit één keer goed, want daarna is de browser al vertrokken, maar crasht de server op een "headers already sent". De andere records worden daarna niet meer bijgewerkt, maar jij ziet de fout niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
for($i=0;$i<$count;$i++){
    $result1=mysqli_query($conn, "UPDATE gallery SET title='$title[$i]', caption='$caption[$i]', home='$checkboxHome[$i]' WHERE id='$id[$i]'");
//                    header("location:/admin/foto-admin.php");
        }
}

?>



Hoe kan het dan wel dat buiten de checkbox om, ik alle andere velden wel kan updaten (meerdere gelijkertijd)? Zover ik weet heb ik enkel de checkbox optie erin gezet.

Wat moet ik dan precies aanpassen wat jij aangeeft? for-loop ziet er hetzelfde uit en de header is uitgecomment

Toevoeging op 25/07/2014 17:25:15:

Ger van Steenderen op 25/07/2014 17:03:55:
En niet te vergeten, alleen de aangevinkte checkboxen worden in de POST meegegeven.
Dus de arrays title en caption lopen niet synchroon daarmee

Okay... helder maar heb je een tip/idee hoe ik dit kan fixen?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/07/2014 17:51:50
Quote Anchor link
Je geeft het id mee in de naam van de input, als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="title[<?php echo $row['id']; ?>]" value="<?php echo $row['title']; ?>>
Als je dit ook voor de andere inputs doet, kan je die als volgt uitlezen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
foreach ($_POST['title'] as $id => $title) {
    $home = (in_array($id, $_POST['checkboxHome'])) ? : false;
    // je kan de anderen velden dan aanroepen met
    // $_POST['veldnaam'][$id]

}
?>
Gewijzigd op 25/07/2014 17:53:23 door Ger van Steenderen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/07/2014 18:01:25
Quote Anchor link
ob_start(); jakkie bah!

Waarom niet gewoon je PHP code boven en je HTML onder?
 

25/07/2014 22:58:38
Quote Anchor link
ob_start() loste mijn problem met header already sent op...

snap php manual ook niet goed wat die functie doet..
Gewijzigd op 25/07/2014 23:10:10 door
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/07/2014 00:08:53
Quote Anchor link
Het buffert je output..

Hoe leg ik dat uit?

alles wat je echo't wordt eerst nog in het geheugen geplaatst en nog niet verzonden..

pas aan het einde van je script wordt alles vanuit het geheugen alsnog verzonden.

Het hele punt is dat je hierdoor nog headers kunt verzenden terwijl je al output gebufferd hebt. Maar volgens vele is het een bad practice omdat je hierdoor geheugen verspilt maar ook omdat je (veel belangrijker) hierdoor uitgenodigd wordt je script in onlogische volgorde te schrijven.

Waar ik op doelde is dat jij MIDDEN in je html nog een enorm blok PHP code hebt staan en dat dit bovenin hoort omdat dat veel logischer is

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
<?php
    // hier heel je PHP logica shit ZONDER ook maar enige output
    
    $message = '';
    
    if(validate())
    {

        header('flauwekul.php');
        exit;
    }

?>

<!-- HIER PAS JE OUTPUT -->
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>

<body>
<!-- IN DE OUTPUT MAG JE WEL KLEINE STUKJES PHP GEBRUIKEN OM DE VARIABELEN TE ECHON -->
<p><?php echo $message; ?></p>
</body>
</html>
Gewijzigd op 26/07/2014 00:37:06 door Frank Nietbelangrijk
 
Obelix Idefix

Obelix Idefix

26/07/2014 10:30:16
Quote Anchor link
Dave Greebe op 25/07/2014 22:58:38:
ob_start() loste mijn problem met header already sent op...

Gaat het er alleen om dat het werkt?
 

26/07/2014 11:58:42
Quote Anchor link
Frank Nietbelangrijk op 26/07/2014 00:08:53:
Het buffert je output..

Hoe leg ik dat uit?

alles wat je echo't wordt eerst nog in het geheugen geplaatst en nog niet verzonden..

pas aan het einde van je script wordt alles vanuit het geheugen alsnog verzonden.

Het hele punt is dat je hierdoor nog headers kunt verzenden terwijl je al output gebufferd hebt. Maar volgens vele is het een bad practice omdat je hierdoor geheugen verspilt maar ook omdat je (veel belangrijker) hierdoor uitgenodigd wordt je script in onlogische volgorde te schrijven.

Waar ik op doelde is dat jij MIDDEN in je html nog een enorm blok PHP code hebt staan en dat dit bovenin hoort omdat dat veel logischer is

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
<?php
    // hier heel je PHP logica shit ZONDER ook maar enige output
    
    $message = '';
    
    if(validate())
    {

        header('flauwekul.php');
        exit;
    }

?>

<!-- HIER PAS JE OUTPUT -->
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>

<body>
<!-- IN DE OUTPUT MAG JE WEL KLEINE STUKJES PHP GEBRUIKEN OM DE VARIABELEN TE ECHON -->
<p><?php echo $message; ?></p>
</body>
</html>

Thanks voor de heldere uitleg.

Overigens kom ik er helaas nog niet uit met mijn code. ik heb nu

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

if(isset($_POST['submit'])) {
    foreach ($_POST['title'] as $id => $title) {
    $_POST['caption'][$id];
    $_POST['checkboxHome'][$id];
    print_r ($checkboxHome)[$id];
//    $home = (in_array($id, $_POST['checkboxHome'])) ? : false;
//        $result1=mysqli_query($conn, "UPDATE gallery SET title='$title', caption='$caption', home='$checkboxHome' WHERE id='$id'");

    }
}


?>


De melding die ik nu krijg bij een submit;

Notice: Undefined variable: checkboxHome in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 18

Notice: Undefined offset: 75 in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 17

Notice: Undefined variable: checkboxHome in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 18

Notice: Undefined offset: 70 in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 17

Notice: Undefined variable: checkboxHome in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 18

Notice: Undefined offset: 69 in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 17

Dit is als ik een checkbox aanvink en submit...
Als ik dat niet doe, dan krijg ik melding;

Notice: Undefined index: checkboxHome in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 17

Notice: Undefined variable: checkboxHome in /Users/davegreebe/Development/ClassicNails-Studio/public_html/admin/foto-admin.php on line 18
 
Ward van der Put
Moderator

Ward van der Put

26/07/2014 12:09:21
Quote Anchor link
Waarden van checkboxes worden niet doorgegeven als aan/uit-waarden of hun booleaanse equivalenten true/false. Het enige dat je ziet, is de waarde uit value="..." als de checkbox is ingeschakeld. Is de checkbox echter uitgeschakeld, dan zie je niets.

Je moet daarom controleren of een variabele bestaat en vervolgens of die variabele een bepaalde (geldige) waarde heeft. Aan het eerste schort het nog: je controleert onvoldoende of variabelen die je wilt gebruiken wel bestaan.
 
- Ariën  -
Beheerder

- Ariën -

26/07/2014 12:09:47
Quote Anchor link
Ik zou zeggen, lees voor je foreach eens je $_POST['title']-array uit met print_r.
Dan moet wel duidelijk worden welke elementen deze array heeft.
 
- SanThe -

- SanThe -

26/07/2014 12:10:59
Quote Anchor link
Je hoeft niet steeds hele lappen tekst te quoten.

En die meldingen zeggen dat die vars niet bestaan.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/07/2014 13:45:31
Quote Anchor link
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
<?php

// laten we controleren of de aanvraag verstuurd is in de GET of in de POST methode.
// Als de aanvraag in de POST methode is...

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // Handig tijdens het programmeren:
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    
    // nu iets proberen te doen met die post vars
    if(isset($_POST['title']) && is_array($_POST['title']))
    {

        foreach ($_POST['title'] as $id => $title)
        {

            echo $id . ': ' .$title . '<br>';
        }
    }
}


?>


Toevoeging op 26/07/2014 14:59:23:

Hier een voorbeeld waarnaar je op zoek bent:
(gewoon opslaan onder een willekeurige naam met de extensie .php en het werkt)
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
<?php

// normaal haal je deze array uit je database
$fotos = array(
    array(
        'id' => 1,
        'title' => 'test 1',
        'homepage' => false,
    ),

    array(
        'id' => 3,
        'title' => 'test 2',
        'homepage' => false,
    ),

    array(
        'id' => 8,
        'title' => 'test 3',
        'homepage' => true,
    ),
);


// laten we controleren of de aanvraag verstuurd is in de GET of in de POST methode.
// Als de aanvraag in de POST methode is...

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // Handig tijdens het programmeren:
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    
    /*
     eerst alle ['homepage'] elementen op false!
     Dit is ook een loop door alle elementen van $fotos maar met een for() ipv een foreach().
     Dit doen we omdat we de array $fotos moeten veranderen (en niet alleen uitlezen).
    */

    for($i = 0 ; $i < count($fotos) ; $i++)
        $fotos[$i]['homepage'] = false;
    
    /*
     checkboxen worden alleen maar gepost als ze aanstaan.
     Als ze allemaal uitstaan dan is er ook geen variabele $_POST['homepage'] en we moeten
     dit dus eerst controleren.
    */

    if(isset($_POST['homepage']))
    {

        // loop door alle elementen van $fotos
        for($i = 0 ; $i < count($fotos) ; $i++)
        {

            // indien het id van de foto in de array $_POST['homepage'] voorkomt
            if(in_array($fotos[$i]['id'], $_POST['homepage']))
                $fotos[$i]['homepage'] = true;
        }
    }


    /*
     text-inputs worden altijd gepost.
     We hoeven dus niet nog eens te controleren of $_POST['title'] wel bestaat.
    */

    $i = 0;
    foreach($_POST['title'] as $title)
    {

        $fotos[$i++]['title'] = $title; // de ++ achter $i++ zorgt er voor dat $i met 1 verhoogd wordt.
    }
}


?>

<form action="" method="post">
<?php
foreach($fotos as $foto)
{

    echo '<input type="text" name="title[]" value="'.$foto['title'].'" />';
    echo '<input type="checkbox" name="homepage[]" value="'.$foto['id'].'"';
    echo $foto['homepage']?' checked="checked"':'';
    echo ' /> plaats op de homepage<br>';
}

?>

<input type="submit" value="Verzenden" />
</form>


Toevoeging op 26/07/2014 15:11:15:

Merk op dat de dat de checkboxen een value meekrijgen!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" name="homepage[]" value="3" />
Gewijzigd op 26/07/2014 15:08:18 door Frank Nietbelangrijk
 

29/07/2014 06:54:54
Quote Anchor link
@Frank. Ik ben nou jouw voorbeeld in mijn code aan het gebruiken. Je voorbeeld is precies zoals ik het wil, alleen er gebeurd iets, in mijn ogen raars als ik de array wilt outputten om te kijken wat ik terugkrijg. Dit doe ik nu steeds vaker zodat ik het begin te snappen

Mijn stukje aangepast code is alsvolgt;
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
<?php

$query
= 'SELECT * FROM gallery where image_deleted = "true" order by id desc';
$result=$conn->query($query);
$rows=$result->num_rows;
$fotos=$result->fetch_array(1);
    echo '<pre>';
    echo 'Inhoud van de $fotos-array';
    print_r($fotos);
    echo '</pre>';

OUTPUT:
Inhoud van de $fotos-arrayArray
(
    [
id] => 73
    [filename] => image-123.jpg
    [title] => image-123
    [caption] => image-123
    [home] => false
    [fotoboek] => false
    [image_deleted] => true
)
?>

Dit lijkt mij opzich te kloppen, maar als ik verder ga....

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
<?php
foreach($fotos as $foto)
    print_r($foto['title']);
{

    echo '<input type="text" name="title[]" value="'.$foto['title'].'" />';
    echo '<input type="checkbox" name="home[]" value="'.$foto['id'].'"';
    echo $foto['home']?' checked="checked"':'';
    echo ' /> plaats op de homepage<br>';
}


OUTPUT:
Warning: Illegal string offset 'title' in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 81
7

Warning: Illegal string offset 'title' in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 81
i
Warning: Illegal string offset 'title' in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 81
i
Warning: Illegal string offset 'title' in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 81
i
Warning: Illegal string offset 'title' in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 81
f
Warning: Illegal string offset 'title' in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 81
f
Warning: Illegal string offset 'title' in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 81
t
?>


Het lijkt erop als of hij alleen het 1ste charakter van elke kolom pakt en niet alles.
Ben aan het puzzelen waarom hij dat doet maar ik kom er niet uit.

Jij of iemand anders een idee waarom??
Gewijzigd op 29/07/2014 06:55:44 door
 
Erwin H

Erwin H

29/07/2014 10:14:21
Quote Anchor link
Je probeert nu een niveau te diep te gaan in de array. Uit je eerste test blijkt dat $fotos dit is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
Array
(
    [id] => 73
    [filename] => image-123.jpg
    [title] => image-123
    [caption] => image-123
    [home] => false
    [fotoboek] => false
    [image_deleted] => true
)

Als je daar nu een foreach op los laat dan krijg je elk element apart. Dus in de eerste loop krijg je alleen de waarde 73 (van het id), in de tweede loop krijg je alleen image-123.jpg (van filename) etc. Dat zijn allemaal geen arrays meer en dus kan je ook niet meer $foto['title'] doen, dat werkt niet.

Wat je moet doen is de fetch binnen een while loop zetten en bij elk record gewoon direct het juiste element aanspreken, geen foreach loop daar gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$query
= 'SELECT * FROM gallery where image_deleted = "true" order by id desc';
$result=$conn->query($query);
$rows=$result->num_rows;
while( $fotos = $result->fetch_array(1) ){
    echo '<input type="text" name="title[]" value="'.$fotos['title'].'" />';
    echo '<input type="checkbox" name="home[]" value="'.$fotos['id'].'"';
    echo $fotos['home']?' checked="checked"':'';
    echo ' /> plaats op de homepage<br>';
}

?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/07/2014 10:17:13
Quote Anchor link
En wat staat er precies op regel 81 van phphulp.php?

Toevoeging op 29/07/2014 10:23:52:

hmmm ja je zou zo moeten fetchen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$query
= 'SELECT * FROM gallery where image_deleted = "true" order by id desc';
$result=$conn->query($query);
while($row=$result->fetch_array(??)) // waar staat die 1 voor?
    $fotos[]=$row; // voeg de row toe aan de array fotos
?>


Ik hoop dat ik het goed zeg.. de bedoeling is dat $fotos ALLE records in zich krijgt.
Gewijzigd op 29/07/2014 10:24:28 door Frank Nietbelangrijk
 

Pagina: 1 2 3 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.