Mensen,

Ik heb de afgelopen tijd heel veel vragen gesteld maar ik kom tot de ontdekking het niet goed te begrijpen. Daarom back to basic. Als mensen mij willen helpen zou ik het leuk vinden anders houd het op.

Ik begin wel met een database.

Ik heb een connectie gemaakt. Daar heb ik mijn eerste vraag dan ook over:

Ik zal de code later hieronder plaatsen. De vraag is waarom krijg ik geen echo als de connectie mislukt en wel als deze lukt?


<?php
$servername = "host";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli("host","username","password","naam");
// Check connection
if (!$conn) {
    echo"connectie mislukt";
}else{
echo "Connected successfully";
}
?>

 

<meta charset="utf-8">

Interessant. Hoe luidt de character encoding van je database-tabel? Je stelt niet expliciet in dat je middels "utf8" wilt communiceren met MySQL. Mogelijk neemt deze aan dat je data in "latin1" aanbiedt en aangeleverd wilt hebben. Dit zou dan tot gevolg hebben dat, indien je tabel utf8 is, data die wordt weggeschreven dubbel utf8 ge-encodeerd wordt en in het verkeerde formaat weergegeven wordt op webpagina's.

Dit zou dan pas aan het licht komen tijdens een export of wanneer je het maken van je verbinding repareert door expliciet een character encoding in te stellen via een aanroep van set_charset() direct na het maken van een verbinding.

Laat niets aan het toeval over, stel dit soort zaken expliciet in en zorg dat alle character encoderingen (een vorm van) UTF-8 zijn. Dit scheelt je later een hoop problemen.
Laten we eerst even kijken of TS uit de code komt waar hij nu mee aan het stoeien is Thomas.
True, is een belangrijke, maar voor nu even te taaie stof denk ik. ;)
Oke mensen dank voor alle reparatie werkzaamheden.

Bart V B ik begrijp je code behalve deze regel:
 if(isset($username) && trim($username) == '')


Is het niet dubbel isset en leeg (=='')?

Tomas op jou vraag kom ik later terug.
Nee, want eerst controleer met met isset() of de variabele bestaat. Misschien bestata deze wel niet eens door een typfout. En daarna ga je de variabele door trim() halen om onnodige witruimtes voor/na te strippen en dat vergelijk je met een lege string.

Die isset() is dus preventief.
Mensen ik kom vreselijk laat terug op dit topic daar ben ik mij van bewust. Maar misschien mag ik dan toch de vraag nog even stellen. De code van Bart V B klopt niet. Op lijn 33 krijg ik de fout
Parse error: syntax error, unexpected '.' ik heb zelf al wat geschoven maar kom er niet zo goed uit.

[size=xsmall]Toevoeging op 21/04/2017 15:49:09:[/size]

Mensen ik kom vreselijk laat terug op dit topic daar ben ik mij van bewust. Maar misschien mag ik dan toch de vraag nog even stellen. De code van Bart V B klopt niet. Op lijn 33 krijg ik de fout
Parse error: syntax error, unexpected '.' ik heb zelf al wat geschoven maar kom er niet zo goed uit.
Op die regel staat een puntkomma die er niet hoort.
Oke mensen, Ik heb een prachtige tut gevonden over checkboxes LEVEN dit FORUM!

Maar nu is de vaag hoe ga ik ervoor zorgen dat de boel in de database komt? Je moet ze dan eerst verzenden uitlezen en erin plaatsten.

Echter is de vraag hoe kan ik dat combineren met mijn huidige formulier?



<?php
    ini_set('display_errors', 1);
    error_reporting (E_ALL);

    // t (): plaats een aantal tabs en eventueel een newline
    // $n_tabs: hoeveel tabs je wilt
    // $newline: wel of geen nieuwe regel
    function t($n_tabs, $newline = false) {
        if ($newline) echo "\n";
        for ($i = 0; $i < $n_tabs; $i++) {
            echo "\t";
        }
    }

    // make_checkboxes (): maak een serie checkboxes met dezelfde name[]
    // $name: string met de naam van de checkboxen
    // $values: array met de values van de checkboxen
    // $selections: array met de geselecteerde checkboxen
    // $vertical: boolean voor horizontaal (false) of verticaal (true)
    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>';
            }
        }
    }

    // initialisatie-arrays;
    // drie series checkboxen als voorbeeld
    $hobbies = array ('uitgaan', 'lezen', 'tuinieren', 'PHP', 'koken');
    $huisdieren = array ('kat', 'hond', 'dwerghamster', 'konijn', 'cavia', 'schildpad', 'goudvis');


    // als het formulier verzonden is vangen we de values op
    // LET OP: als geen één checkbox van een groep is aangevinkt
    // bestaat er géén array van in de POST variabelen. Vandaar dat
    // we hier moeten checken met isset ()
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $hobbies_selections        = (isset ($_POST['hobbies'])) ? ($_POST['hobbies']) : (array ());
        $huisdieren_selections    = (isset ($_POST['huisdieren'])) ? ($_POST['huisdieren']) : (array ());

    }
    // formulier is nog niet gepost, dus hier een lege array maken
    // we zouden ook een array met standaardwaarden kunnen maken om
    // sommige of alle checkboxen alvast te selecteren
    else {
        $hobbies_selections        = array ();
        $huisdieren_selections    = array ();

    }
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Selective Memory</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
        h1 {
            font: 18px arial;
            color: #f99;
            border-bottom: 1px dashed #f99;
            padding-bottom: 5px;
        }
        p, label, select, option {
            font: 12px verdana;
            color: #66f;
        }
        label {
            cursor: pointer;
        }
    </style>
</head>

<body>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <h1>Wat zijn je hobbies?</h1>
        <p><?php make_checkboxes ('hobbies', $hobbies, $hobbies_selections); ?></p>
        <h1>Welke huisdieren heb je?</h1>
        <?php make_checkboxes ('huisdieren', $huisdieren, $huisdieren_selections, true); ?>
        <p><input type="submit" value="verzenden"></p>
    </form>
</body>
</html>
De $_POST-waardes uit je formulier in je INSERT-query gooien. En uiteraard deze netjes met mysqli_real_escape_string() escapen.

Om te kijken wat je $_POST array bevat, kan je dit scriptje als hulpmiddel gebruiken, op het moment dat je hebt gecontroleerd of je formulier verstuurd is.
<?php
echo "<pre>".print_r($_POST,1)."</pre>";
?>
mooi die begrijp ik alleen met de functions in dat formulier kan je ze toch niet even onder elkaar plakken neem ik aan. Ik begrijp wat er gebeurt. Echter begrijp ik niet hoe deze tot 1 te vermaken. Eigenlijk ben ik opzoek (op internet kan ik niet veel werkend vinden. Naar een formuliertje met veldjes (hebben we al) een checkbox en een radio button. Zodat ik ga begrijpen wat er gebeurt en deze in een DB kan opslaan. Echter vind ik ze wel los maar kan ze niet goed tot 1 vermaken.
Ik snap je probleem niet echt zo. Je kan nu toch zien welke data je verstuurt? Die verwerkt je dan naar je database.

Reageren