inhoud checkbox in mysql db

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

30/07/2014 18:30:00
Quote Anchor link
@Erwin, ik heb de code aangepast met jouw toevoegingen. Ik krijg de juiste waardes nu in mn variable/arrays maar ik kan nog geen teksten aanpassen en de vinkjes blijven ook staan. Snap niet wat er mis gaat. Ik krijg ook geen SQL-error

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

require('../lib/dbconnection.php');

$query = 'SELECT * FROM gallery where image_deleted = "false" order by id desc';
$result=$conn->query($query);
$rows=$result->num_rows;

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


    for($i = 1 ; $i < $rows ; $i++)
        $_POST['home'][$i] = false;

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

        // loop door alle elementen van $fotos
        for($i = 1 ; $i < $rows ; $i++) {
            // indien het id van de foto in de array $_POST['home'] voorkomt
            if(in_array($_POST['id'], $_POST['home']))
                $_POST['home'][$i] = true;
        }
    }


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

        $_POST[$i++]['title'] = $title; // de ++ achter $i++ zorgt er voor dat $i met 1 verhoogd wordt.
    }
    
    $id = $_POST['id'];
    $title = $_POST['title'];
    $caption = $_POST['caption'];
    $home = $_POST['id'];
    $fotoboek = $_POST['fotoboek'];
    for ($i=0;$i<$rows;$i++){
    $result1=mysqli_query($conn,
                        "UPDATE gallery SET title=$title[$i], caption=$caption[$i],home=$home[$i], fotoboek=$fotoboek[$i], WHERE home=$home[$i]");
        if(mysql_errno()) {
            echo "MySQL error ".mysql_errno().": "
                 .mysql_error()."\n<br>When executing <br>\n$result1\n<br>";
        }
    }

header("location:/phphulp.php");
//mysqli_free_result($result);
//mysqli_close($conn);

}

<
form action="" method="post">
while($fotos=$result->fetch_array(1) ){
    echo '<input type="text" name="id[]" value="'.$fotos['id'].'" />';
    echo '<input type="text" name="title[]" value="'.$fotos['title'].'" />';
    echo '<input type="text" name="caption[]" value="'.$fotos['caption'].'" />';
    echo '<input type="checkbox" name="home[]" value="'.$fotos['id'].'"';
    echo $fotos['home']?' checked="checked"':'false';
    echo ' /> home';
        echo '<input type="checkbox" name="fotoboek[]" value="'.$fotos['id'].'"';
    echo $fotos['fotoboek']?' checked="checked"':'false';
    echo ' /> fotoboek<br>';
}
<
input type="submit" value="Verzenden" />
<
/form>
?>


@SanThe, dat is stukke makkelijker ziet dat eruit. ga het eens doornemen of ik eruit kom en ff kijken hoe dat werkt. Blijf wel ff volhouden met code van Frank/Erwin maar puur even qua kennis pak ik jouwe er ook even bij
bedankt voor je input!

ben benieuwd of jullie zien wat "er allemaal" fout gaat :)

Leerzame code voor me....

Toevoeging op 30/07/2014 18:43:35:

- SanThe - op 30/07/2014 12:08:46:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
foreach($_POST['id'] as $id)
{

    $title = $_POST['title'][$id];
    $caption = $_POST['caption'][$id];
    $home = isset($_POST['home'][$id]);
    $fotoboek = isset($_POST['fotoboek'][$id]);
   // updaten
}
?>

Heb deze iets moeten aanpassen omdat hij bij het laatste record bleef "hangen".
heb er nu dit van gemaakt en ik krijg dan geen error. het werkt nogsteeds niet maar dat ligt vermoedelijk aan iets anders.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
while($_POST['id'] <= $rows) {
// bla....
?>

Komt toch op hetzelfde neer??

EDIT: ohnee, ik doe nu gewoon opnieuw een loop zonder dat iets met de ID koppel.

EDIT2:
Dit is de error die ik krijg als ik jouw code met foreach overneem;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
Notice: Uninitialized string offset: 31 in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 64
?>

Het zijn in totaal 31 records dus het lijkt erop dat hij de laatste niet mee neemt... is dat logisch?
Gewijzigd op 30/07/2014 18:45:28 door
 
PHP hulp

PHP hulp

19/04/2024 07:54:46
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/07/2014 18:56:52
Quote Anchor link
Wat staat er dan op regel 64?

De methode van San The heb ik je overigens 5 dagen geleden al voorgesteld, en mijn vorige voorbeeld is nagenoeg hetzelfde principe.
 
Erwin H

Erwin H

30/07/2014 19:46:38
Quote Anchor link
Dave Greebe op 30/07/2014 18:30:00:
Blijf wel ff volhouden met code van Frank/Erwin

Even voor de goede orde: het is niet 'mijn' code alszijnde dat ik voorstel dit te gebruiken. Ik probeer er alleen fouten uit te halen.

Verder lijkt het me verstandiger dat je een aanpak gebruikt en niet twee dingen door elkaar gaat gebruiken, daar wordt het voor jezelf niet overzichtelijker op, maar ook het topic wordt een rotzooitje en uiteindelijk kan niemand je meer helpen. Welke aanpak je kiest moet je helemaal zelf weten, maar kies er 1 en ga daarmee verder.
 
- SanThe -

- SanThe -

30/07/2014 20:30:39
Quote Anchor link
Dave Greebe op 30/07/2014 18:30:00:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
while($_POST['id'] <= $rows) {
// bla....
?>

Komt toch op hetzelfde neer??

Nee. De POST heeft verder niets meer met $rows te maken.

Dave Greebe op 30/07/2014 18:30:00:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
Notice: Uninitialized string offset: 31 in /Users/davegreebe/Development/ClassicNails-Studio/public_html/phphulp.php on line 64
?>

Heb je wel ook het formulier overgenomen?
 

30/07/2014 20:36:49
Quote Anchor link
Erwin H op 30/07/2014 19:46:38:
Dave Greebe op 30/07/2014 18:30:00:
Blijf wel ff volhouden met code van Frank/Erwin

Even voor de goede orde: het is niet 'mijn' code alszijnde dat ik voorstel dit te gebruiken. Ik probeer er alleen fouten uit te halen.

Bij wijze van spreken....
Quote:
Verder lijkt het me verstandiger dat je een aanpak gebruikt en niet twee dingen door elkaar gaat gebruiken, daar wordt het voor jezelf niet overzichtelijker op, maar ook het topic wordt een rotzooitje en uiteindelijk kan niemand je meer helpen. Welke aanpak je kiest moet je helemaal zelf weten, maar kies er 1 en ga daarmee verder.


In dat geval ga ik door op de code die jij als voorbeeld had die ik heb uitgebouwd. De code die ik dus net volledige postte.
Die werkt nog niet goed en wil deze maken...

Hoe kan het dat ik geen fouten terugkrijg, wel mn array wordt gevuld met "nieuwe" tekst uit de input-velden maar ze niet worden gezet in de database, en dat de checkboxen gechecked blijven ivm bij false-waarde in de DB uitgevinkt. Dat zou volgens mij wel de bedoeling zijn...
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/07/2014 20:40:07
Quote Anchor link
Ik vind niet dat ie dat helemaal zelf moet weten, zoals het nu is opgezet is veel te omslachtig en het geheel is zo lek als een vuurkorf.
Bv om het id te gaan vergelijken met de 'index' van het aantal rijen, dit werkt nu maar zal in de toekomst met aan de zekerheid grenzende waarschijnlijkheid faliekant mis gaan.
Daarnaast wordt er absoluut niet gedaan tegen SQL-injectie, zoals ik in eerdere reactie al heb aangeven kan ik vrij simpel de gehele tabel om zeep helpen.

Dan zie ik ook dat gestart wordt met mysql in OO style, maar bij de update wordt de procedural style gebruikt, ik denk niet dat dit mogelijk is (maar ik kan het mis hebben).
 

30/07/2014 21:45:07
Quote Anchor link
Ger. helder.. Ik ben een beginner maar wil wel alles op goede manier leren. jouw advies is om dat van SanThe gebruiken?
ik weet niet wat goed is of slecht. kom net om de hoek kijken in PHP-wereld dus jullie advies neem ik van harte!...

Toevoeging op 31/07/2014 08:16:19:

EUREKA!!..
mijn script is werkend

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

require('../lib/dbconnection.php');

$query = 'SELECT * FROM gallery where image_deleted = "false" order by id desc';
$result=$conn->query($query);
$rows=$result->num_rows;

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

    for($i = 1 ; $i < $rows ; $i++)
        $_POST['home'][$i] = false;

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

        // loop door alle elementen van $fotos
        for($i = 1 ; $i < $rows ; $i++) {
            // indien het id van de foto in de array $_POST['home'] voorkomt
            if(in_array($_POST['id'], $_POST['home']))
                $_POST['home'][$i] = true;
        }
    }

//    echo '<pre>';
//    print_r($_POST);
//    echo '</pre>';


foreach($_POST['id'] as $id) {
    $title = $_POST['title'][$id];
    $caption = $_POST['caption'][$id];
    $home = isset($_POST['home'][$id]);
    $fotoboek = isset($_POST['fotoboek'][$id]);
    $result1=mysqli_query($conn,"UPDATE gallery SET title='$title', caption='$caption', home='$home', fotoboek='$fotoboek' WHERE id='$id'");
    }

header("location:/phphulp.php");
//mysqli_free_result($result);
mysqli_close($conn);
}

<
form action="" method="post">

while($fotos=$result->fetch_array(1) ){
    echo '<input type="text" name="id['.$fotos['id'].']" value="'.$fotos['id'].'" />';
    echo '<input type="text" name="title['.$fotos['id'].']" value="'.$fotos['title'].'" />';
    echo '<input type="text" name="caption['.$fotos['id'].']" value="'.$fotos['caption'].'" />';
    echo '<input type="checkbox" name="home['.$fotos['id'].']"'.($fotos['home'] ? ' checked="checked"' : '').' /> home';
    echo '<input type="checkbox" name="fotoboek['.$fotos['id'].']"'.($fotos['fotoboek'] ? ' checked="checked"' : '').' /> fotoboek<br>';
}

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


Ik kan alles updaten en ook de checkboxen werken zoals het moet. In de database zie ik bij de checkbox een 1 of hij is leeg (NULL ?)
Dit zou eigenlijk volgens mij TRUE of FALSE moeten zijn.
Heb ik toch nog ergens een foutje?

Verder ben ik overigens erg benieuwd op welke plekken ik SQL-injection moet voorkomen? Dit om inderdaad te voorkomen dat alles omzeep wordt geholpen.

Kunnen jullie hier nog advies in geven?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

31/07/2014 09:31:38
Quote Anchor link
Overal waar je invoer van gebruikers in de query hebt staan.

In PHP is true/false geen tekst maar een boolean. Mysql heeft geen boolean datatype en zo te zien is het in jouw tabel een (var)char.
Je moet dat zelf dus in php doen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$home = (isset($_POST['home'][$id])) ? 'true' : 'false';
 
- SanThe -

- SanThe -

31/07/2014 10:47:00
Quote Anchor link
Regels 11 t/m 25 kunnen volgens mij gewoon weg.
 

Pagina: « vorige 1 2 3



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.