Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP/JQUERY]

Pagina: 1
Acties:

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 04-10 21:05
Beste tweakers,

Aller eerst, sorry dat ik de titel verkloot heb. Te vroeg op Verstuur geklikt!
Kan zo nergens vinden om de titel te wijzigen? :(

Ik loop hier al bijna 2 dagen op stuk.

Ik heb in de home.php een button die de aantal waardes ophaalt uit de DB die bij deze knop hoort.
In dit geval, pakket_id 2.
home.php deel 1
PHP:
1
2
3
4
5
6
7
8
9
10
            
<?
$sPakkettenQ = mysqli_query($database_connection, "SELECT * FROM pakket WHERE user_id=$user_id ORDER BY naam ASC");
while($rPakkettenQ = mysqli_fetch_array($sPakkettenQ, MYSQLI_ASSOC))
{
                    
echo'<li id="pakket_'.$rPakkettenQ['pakket_id'].'"><button class="select_pakket_knop" id="'.$rPakkettenQ['pakket_id'].'" type="button">'.$rPakkettenQ['naam'].'</button></li>';
            
}
?>


Nu haalt bepalingen_selecteren.php alle info op waar pakket_id 2 is.

bepalingen_selecteren.php
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
<?php
//Database connectie maken
require_once('inc/config.inc.php');

if(empty($_POST) === false) 
{
    
    $user_id=$_SESSION['user_id'];
    $pakket_id=$_POST['pakket_id'];

    $sBepalingenQ = mysqli_query($database_connection, "SELECT * FROM pakket_bepalingen WHERE pakket_id = '$pakket_id' ") or die(mysqli_error($database_connection));
    
    while($rBepalingenQ = mysqli_fetch_array($sBepalingenQ))
    {
        $result_array[] = $rBepalingenQ;
        
    }
    // Kijken of er resultaten zijn
    if (isset($result_array)) 
    {
        foreach ($result_array as $result) 
        {
        
            echo json_encode($result['bepaling_id']);
        
        }
        
    }
    else
    {
        echo'Sorry helaas niks kunnen vinden =(';
    }

    //print_r om te kijken hoe de query er precies uitziet  
    //print_r ($sBepalingenQ); 
}
mysqli_close($database_connection);
?>


Daar krijg ik ook de resultaten van terug. In dit geval "7""2".
Die hij netjes in class success zet, puur om te kijken of ik de waardes terug krijg.
Maar daarna kom ik op het punt waar ik vast zit.

Nu wil ik dat resultaat gebruiken om checkbox met value 7&2 aanvinken die in home.php staan.
home.php deel 2
PHP:
1
2
3
<?
$kolom3 .= '<li id="entry_' . $rKolomQ3['entry_id'] . '" class="ui-state-default"><input type="checkbox" class="thest2" name="checkbox[]" value="'.$rKolomQ3['bepaling_id'].'"> ' .  $rKolomQ3['omschrijving'] . '</li>';
?>

Hoe in godes naam doe ik dit?
Haal ik de juiste waardes wel terug door ze alleen te onderscheiden door "?

(home.php bestaat wel uit meer dan die regel code, maar is verder niet van belang lijkt me :) )

js_functies.js
JavaScript:
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
        
//Selecteer de bepalingen die bij het Pakket horen
    $(".select_pakket_knop").click(function() {
        var pakket_id = $(this).attr("id");
        if(pakket_id !== '') {
            $.ajax( {
                type: "POST",
                url: "bepalingen_selecteren.php",
                data: { pakket_id: pakket_id }, //pakket_id wordt hier naar php gestuurd als _POST['pakket_id']
                cache: false,
                success: function(data) {
                    $('.success').html(data).fadeIn().fadeOut(1500);
                    
                        $(data).find('.thest2').each(function(){
                            alert($(this).html(data));
                        });
                        
                    var bepaling_id = input.find('.thest2').attr('value');
                    //console.log(bepaling_id);//iterate here the object
                    if(data !== bepaling_id) {
                        console.log("Fout");//iterate here the object
                        
                    }
                    else {
                        $("li.ui-state-default .thest2").prop("checked","checked");
                    }

                }
            });
        }return false;    

    });

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Wat mij opvalt:

1. Wat doet: alert($(this).html(data)); ? Regel 14.
2. foreach ($result_array as $result) echo json_encode($result['bepaling_id']);
Lijkt mij ook niet de bedoeling. Je wilt 1 JSON object terug sturen.
Plaats het in een array en doe op het einde een echo json_encode($results) oid
Dan kan je met een for(n in data.results) {
$("checkbox[id=" + n + "]").attr("checked" ... doen oid

[ Voor 14% gewijzigd door Guillome op 19-11-2013 17:00 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 04-10 21:05
1. Dat is een soort van probersel om een loopje te maken van de terug verkregen data. En dan als dat zou slagen de checkboxe checked te krijgen......
2.
Dus zo?

PHP:
1
2
3
4
5
6
7
8
9
10
<?php   
while($rBepalingenQ = mysqli_fetch_array($sBepalingenQ))
{
     $result_array[] = $rBepalingenQ;
        
}
echo json_encode($result_array);

mysqli_close($database_connection);
?>

[ Voor 9% gewijzigd door SoeperKees op 19-11-2013 21:43 ]


  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Daarbij als je een json object wil ophalen, kun je geen string weergeven. Aangezien deze dan toch niet geïnterpreteerd kan worden door json. Zelfde geldt voor de die(mysql_error... functie.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
SoeperKees schreef op dinsdag 19 november 2013 @ 16:51:
Beste tweakers,

Aller eerst, sorry dat ik de titel verkloot heb. Te vroeg op Verstuur geklikt!
Kan zo nergens vinden om de titel te wijzigen? :(
Die kun je inderdaad niet zelf wijzigen, Als je een Topic Report maakt met een voorstel voor een betere titel pas ik hem voor je aan.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 04-10 21:05
4Real schreef op woensdag 20 november 2013 @ 09:55:
Daarbij als je een json object wil ophalen, kun je geen string weergeven. Aangezien deze dan toch niet geïnterpreteerd kan worden door json. Zelfde geldt voor de die(mysql_error... functie.
Ok, wat is dan de beste manier om de gegevens op te halen en te werken om ze vervolgens te gebruiken om een checkbox aan te vinken?
Heb weinig ervaring hoe jquery/ajax werkt.
Woy schreef op woensdag 20 november 2013 @ 11:12:
[...]

Die kun je inderdaad niet zelf wijzigen, Als je een Topic Report maakt met een voorstel voor een betere titel pas ik hem voor je aan.
Ok thanks :)

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

JavaScript:
1
2
3
$.getJSON()
of
$.post("url", {extra: "parameters"}, function(jsonData) { alert("done"); }, "json");

Kijk voor uitleg op jquery site. Google naar jquery post oid.

PHP:
1
header('Content-Type: application/json');

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • joram.agten
  • Registratie: Oktober 2010
  • Laatst online: 19-11 15:43
offtopic:
je moet ook een beetje uitkijken met die post parameter zomaar in je sql code te plakken, nu kan je als parameter bv "2;DROP TABLE pakket_bepalingen;" meegeven. Dat heet sql injection. Er is veel op internet te vinden hoe je dat kan voorkomen. Prepared statements en parameter binding is een veel gebruikte oplossing.


Dit werkt alvast met de laatste jquery (1.10) en Chrome 31
jquery prop function: http://api.jquery.com/prop/#prop-propertyName-value

code:
1
2
$(':checkbox').prop('checked', false);
$(':checkbox').prop('checked', true);


hier een kleine jsFiddle met checkboxes in een form en wat jquery code om ze checked of unchecked te zetten
http://jsfiddle.net/xixonia/zgcrB/

  • SoeperKees
  • Registratie: December 2000
  • Laatst online: 04-10 21:05
Super! Dankje.
Daar ga ik zeker naar kijken, wil inderdaad geen sql injecties ;)

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Niet verwarren met xtc injecties

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router

Pagina: 1