18 berichten aan het bekijken - 1 tot 18 (van in totaal 18)
  • Q:
    Bijdrager
    ciaumb

    php mysql waarde uit database verwerken

    Hallo,

    als ik waarden uit mijn (mysql) database haal,
    loopt alles goed, maar nu wil ik een bepaalde waarde verwerken.
    Deze is of ‘ja’ of ‘nee’ of ‘nvt’
    als ik deze gebruik met volgende code:

    if ($ontw == ‘ja’) { // ($ontw === ‘ja’ ) werkt even min
    print(“ontw”);
    }

    dan krijg ik niets terug,
    ik heb de variabele $ontw laten printen,
    en deze geeft de waarden wel goed terug(, geeft dus vaak ja terug).

    Ik heb geprobeerd met strpos,
    $pos = strpos($ontw, $findme);
    maar dan krijg ik geen waarde voor $pos.
    Als ik test of $ontw een string is, dan krijg ik wel een positief antwoord.

    Ik weet niet wat ik over het hoofd zie,
    maar snap het niet meer.

    Alvast bedankt voor event. reacties.

    Bijdrager
    martijnG

    misschien wil je zoiets ?

    <?php

    $ontw = ‘ja’;

    if ($ontw == ‘ja’) {
    print($ontw);
    }

    ?>

    Bijdrager
    Zout

    Met dit korte stukje code is niets mis volgens mij. Kun je een wat groter stuk posten?

    Bijdrager
    basvandorst

    [code:1:e0e2f7bf71]
    switch ($database->output) {
    case "ja":
    $iets = "ja";
    break;
    case "nee":
    $iets = "nee";
    break;
    case "nvt":
    $iets = "niet van toepassing";
    break;
    default:
    $iets = "blaat";
    break;

    print $iets;
    [/code:1:e0e2f7bf71]

    Bijdrager
    Aglaea

    Doe eens een print_r van de string waarop je test en ook de strlen. In principe moet je gewoon ja, nee of nvt terugkrijgen als je het zo in de database hebt opgeslagen.
    Als je daar helemaal zeker van wilt zijn kun je dit als enum in de database zetten, mocht je dat nog niet hebben gedaan. Dan weet je zeker dat je die waarden terugkrijgt. Verder is het vooral van belang hoe die $database->output zijn waarde krijgt. Dat is toch de attribute waaop je test.

    Bijdrager
    basvandorst
    ”Aglaea”

    Verder is het vooral van belang hoe die $database->output zijn waarde krijgt. Dat is toch de attribute waaop je test.

    was ook maar een snip-snap code uit een script van mij, waar ik de output met mysql_fetch_object binnen heb gehaald.

    Bijdrager
    ciaumb

    // voorgaande code doorloopt de verschillende projecten
    $ontw = $project[“ontwerp”];

    <?php
    // volgende code controleert of het ontwerp
    // door ons ingevuld werd, als het dus ja was //
    $ontw_waarde = htmlentities($ontw);
    print( “ontw waarde:” . $ontw_waarde . “einde”);

    if ($ontw_waarde == “j”)
    {
    echo(“ontw”);
    }
    $bool_string = is_string($ontw_waarde);
    if ($bool_string)
    {
    print(“het is een string. “);
    }
    $findme = ‘ja’;
    $pos = strpos($ontw_waarde, $findme);

    if ($pos !== FALSE ){
    print(“gevonden”);
    }else {
    print(“de string werd niet gevonden”);
    }
    print(“<br />positie: ” . $pos);

    dit zijn al mijn vreemde probeersels
    :?

    wat ik te zien krijg in de browser is:
    prestaties: ontw waarde:jaeindehet is een string. de string werd toch niet gevonden
    positie:

    de waarde is dus ja,
    maar bij de controle loopt het mis,
    of loop ik mis…

    Bijdrager
    ciaumb

    Ik heb het nog eens geprobeerd met een switch case,
    maar vruchteloos,
    dank voor de reacties overigens.

    Bijdrager
    hansenonline

    [code:1:787e7027b6]<?php
    //database acces
    $Host="localhost";
    $User="root";
    $Password="password";
    $DBname="naam databse;
    $Tablename="naam tabel";

    $Link = mysql_connect($Host, $User, $Password);

    $Query = "select count(*) from $DBname.$Tablename";
    $Result = mysql_query ($Query, $Link) or die ("niet gelukt");

    while ($Rows = mysql_fetch_array ($Result))
    {

    print ("totaal aantal waarnemingen zijn: $Rows[0]");

    }

    ?>[/code:1:787e7027b6]
    probeer dit eens en dan wel de juiste gegevens van je eigen database invoeren, als het werkt kan je hiervanuit verder werken.

    daan.

    Bijdrager
    Macinspire

    [code:1:bbdc9867f7]<?php
    $ontw = "ja"; // invoer

    $ontw_waarde = htmlentities($ontw); // invoer controlleren op HTML tags, zo ja, zet deze dan om naas ASCII
    $string = is_string($ontw_waarde); // controle op type invoer. Bij deze string, dus tekst geen cijfers
    $findme = ‘a’; // characters die gezocht moet worden in de invoer

    echo "Ontw waarde: " . $ontw_waarde . "<br />";
    if ($ontw_waarde == "a")
    {
    echo "ontw = ja<br />";
    }
    else
    {
    echo "ontw = nee<br />";
    }

    if ($string)
    {
    echo "Het is een string.<br />";
    }

    $pos = strpos($ontw_waarde, $findme);
    if ($pos == true )
    {
    echo "gevonden<br />";
    echo "Positie: " . $pos;
    }
    else
    {
    echo "de string werd niet gevonden<br />";
    }
    ?>[/code:1:bbdc9867f7]

    Hij werkt wel maar om de een of andere manier, begint hij pas met zoeken NA het eerste charakter.
    intw = ‘ja’;
    findme = ”j;
    Levert niks op terwijl
    intw = ‘ja’;
    findme = ”a;
    Wel weer iets oplevert.
    Waarom hij nu bij het 2e charakter begint met zoeken.. geen id …

    ”hansenonline”

    probeer dit eens en dan wel de juiste gegevens van je eigen database invoeren, als het werkt kan je hiervanuit verder werken.

    Probeer mensen geen hoofdletters te leren gebruiken bij simpele variabele namen …

    Bijdrager
    ciaumb

    Sorry als ik niet zo duidelijk was,

    Ik krijg de waarden ‘nvt’ ‘ja’ en ‘nee’ proper binnen uit de database,
    als ik ze test met de print functie en in de browser bekijk.

    Als ik echter de vergelijking maak
    met if ($ontw === “ja”)
    dan lijkt dit niet te werken, ook niet met
    tests op de andere 2 waarden.

    Wanneer ik $ontw hardcodeer en er de waarde “ja” aan meegeef,
    gaat de test wel goed.

    Ik dacht dat het mss aan iets lag doordat de waarde uit de database komt ofzo,
    maar ik vind het niet.

    Bijdrager
    basvandorst

    En als je nou is print $ontw…..
    krijg je dan wel iets te zien, want ze zegt als je hard in de code zet, dat het dan wel werkt.
    Dan lijkt het toch dat hij verkeerd uit de database komt, misschien een spatie teveel, misschien een hoofdletter ofzo ?

    Bijdrager
    ciaumb

    idd ik heb getest met print($ontw)
    en da krijg ik ‘ja’ of ‘nee’ of ‘nvt’ binnen.

    Van die spaties,
    ik hoopte dat het daar aan lag,
    daarom heb ik geprobeerd met trim($ontw);
    maar dat hielp ook niet. :?

    Bijdrager
    mac748

    en [code:1:88ff0842d8]if (strtolower($ontw) == "ja")[/code:1:88ff0842d8]
    misschien?

    Bijdrager
    Macinspire

    [code:1:bd7dc69d36]<?
    $ontw = trim($project["ontwerp"]);
    echo $ontw = strtolower($ontw); // zou je output over ontwerp moeten geven, dus "ja","nee" of "nvt"
    switch($ontw)
    {
    case "ja":
    echo "ontw = ja<br />";
    break;
    case "nee":
    echo "ontw = nee<br />";
    break;
    case "nvt":
    echo "ontw = nvt<br />";
    break;
    default:
    echo "ontw = niet ja,nee of nvt.<br />";
    break;
    }
    ?>[/code:1:bd7dc69d36]

    Dit zou moeten werken. Zo niet, post dan ff een link met een txt bestandje waar je code instaat ofzo? misschien dat het dan duidelijker wordt voor ons?

    Bijdrager
    ciaumb

    Nogmaals bedankt voor de reacties,

    ik heb geprobeerd met een switch case en met strtolower($ontw),
    maar dat brengt me niet verder.

    Wat wel werkt is testen of de string een a bevat,
    [code:1:75fcc3ea3b]
    $findme = ‘a’;
    $pos = strpos($ontw, $findme);

    if ($pos !== FALSE ){
    //print("a gevonden");
    print("ontw ");
    }
    [/code:1:75fcc3ea3b]

    Misschien niet de beste oplossing,
    maar soit.

    Groeten.

    Bijdrager
    Macinspire

    Dat heb ik in me vorige post al gezegd… hij zoekt in ‘ja’ naar een a, dan vindt ie m wel.. zoek je naar een ‘j’ dan vind ie m niet….

    Bijdrager
    ciaumb

    Nog even de correcte oplossing posten.

    Ik had de data in een excel bestand gekregen.
    De cellen had ik gekopieerd naar een tekstbestand en daarvoor een php script geschreven.

    Zo kreeg ik ‘corrupte’ waarden in de database,
    een betere oplossing was dan,
    het excel bestand opslaan als een comma delimited, CSV.

    Nu gaat alles goed. :innocent:

18 berichten aan het bekijken - 1 tot 18 (van in totaal 18)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.