Avatar billede Oliv3673 Juniormester
16. december 2018 - 11:04 Der er 7 kommentarer og
1 løsning

Indsættelse af cvrapi

Hej jeg sidder og prøver at lave en side så at data fra cvr registret automatisk bliver skrevet ind når folk indtaster deres CVR-nummer på sitet. Mine koder indtil nu ser således ud :

<div class="container form" id="containeropretfirma">
        <form class="form-signin" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    <div class="row">
                    <div class="col-sm">
                        <label for="textinput">Skriv CVR og data indhentes automatisk</label>
                        <input type="number" class="form-control"  placeholder="CVR" name="vat">
<?php
                       
   

                                 
    function cvrapi($vat, $country)
{

    // Strip all other characters than numbers
    $vat = preg_replace('/[^0-9]/', '', $vat);


    // Check whether VAT-number is invalid
    if( empty($vat) )
    {

        // Print error message
        return('Venligst angiv et CVR-nummer.');

    }else{

        // Start cURL
        $ch = curl_init();

        // Set cURL options
        curl_setopt($ch, CURLOPT_URL, 'http://cvrapi.dk/api?search=' . $vat . '&country=' . $country);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'opret_firma');

        // Parse result
        $result = curl_exec($ch);

        // Close connection when done
        curl_close($ch);

        // Return our decoded result
        return json_decode($result, 1);

    }

} ?>

Når jeg skriver print_r( cvrapi('37988103', 'dk')); (som eksempel)
kommer det rigtige resultat også ud i et array:
Array ( [vat] => 37988103 [name] => Evald-Entreprise ApS [address] => Monradsgade 2E, st [zipcode] => 7400 [city] => Herning [cityname] => [protected] => 1 [phone] => 42781530 [email] => Oeh@ee-aps.dk [fax] => [startdate] => 06/09 - 2016 [enddate] => [employees] => [addressco] => Oliver Evald Hansen [industrycode] => 721900 [industrydesc] => Anden forskning og eksperimentel udvikling inden for naturvidenskab og teknik [companycode] => 80 [companydesc] => Anpartsselskab [creditstartdate] => [creditbankrupt] => [creditstatus] => [owners] => [productionunits] => Array ( [0] => Array ( [pno] => 1021726598 [main] => 1 [name] => Evald-Entreprise ApS [address] => Monradsgade 2E, st [zipcode] => 7400 [city] => Herning [cityname] => [protected] => 1 [phone] => [email] => klintebakken108@live.dk [fax] => [startdate] => 06/09 - 2016 [enddate] => [employees] => [addressco] => Oliver Evald Hansen [industrycode] => 721900 [industrydesc] => Anden forskning og eksperimentel udvikling inden for naturvidenskab og teknik ) ) [t] => 100 [version] => 6 )

Håber nogle kan hjælpe! -Tak
Avatar billede olsensweb.dk Ekspert
16. december 2018 - 11:39 #1
du mangler noget html:
indput af: land, submit knap

du mangler noget php:
indlæsning af indput fra html
Avatar billede olsensweb.dk Ekspert
16. december 2018 - 11:52 #2
noget ala

<?php

function cvrapi($vat, $country) {

    // Strip all other characters than numbers
    $vat = preg_replace('/[^0-9]/', '', $vat);


    // Check whether VAT-number is invalid
    if (empty($vat)) {

        // Print error message
        return('Venligst angiv et CVR-nummer.');
    } else {

        // Start cURL
        $ch = curl_init();

        // Set cURL options
        curl_setopt($ch, CURLOPT_URL, 'http://cvrapi.dk/api?search=' . $vat . '&country=' . $country);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'opret_firma');

        // Parse result
        $result = curl_exec($ch);

        // Close connection when done
        curl_close($ch);

        // Return our decoded result
        return json_decode($result, 1);
    }
}

if (isset($_POST['send'])) {
    $vat = $_POST['vat'];
    $country = $_POST['country'];
    print_r(cvrapi($vat, $country));
// print_r( cvrapi('37988103', 'dk'));
}
?>

<div class="container form" id="containeropretfirma">
    <form class="form-signin" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
        <div class="row">
            <div class="col-sm">
                <label for="textinput">Skriv CVR og data indhentes automatisk</label>
                <input type="number" class="form-control"  placeholder="CVR" name="vat">

                <label for="textinput">land</label>
                <input type="text" class="form-control"  placeholder="lande code (2 bogstaver)" name="country">


                <input type="submit" class="form-control" value ="send data" name="send">
            </div>
        </div>
    </form>
</div>


så er det bare at bruge det som cvrapi retunerer.
Avatar billede Oliv3673 Juniormester
16. december 2018 - 14:48 #3
Tusind tak! det giver god mening :)

-Men hvordan returnerer jeg så til nedenstående, for eksempel: Når de trykker submit - så indsættes firma navn under " 
<div class="col-sm">
        <label for="textinput">Firmanavn</label>
        <input type="text" class="form-control"  placeholder="Firmanavn" name="virk_name" disabled>
</div> "

<?php

if (isset($_POST['send'])) {
    $vat = $_POST['vat'];
    $country = $_POST['dk'];
    print_r(cvrapi($vat, $country));
// print_r( cvrapi('37988103', 'dk'));
}
?>
<div class="container form" id="containeropretfirma">
    <form class="form-signin" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
        <div class="row">
            <div class="col-sm">
                <label for="textinput">Skriv CVR og data indhentes automatisk</label>
                <input type="number" class="form-control"  placeholder="CVR" name="vat">

                <label for="textinput" hidden>land</label>
                <input type="text" class="form-control"  placeholder="lande code (2 bogstaver)" name="country" hidden>


                <input type="submit" class="form-control" value ="send data" name="send">
            </div>
        </div>
    </form>
</div>
       
                       
                       
               
                    <div class="col-sm">
                        <label for="textinput">Firmanavn</label>
                        <input type="text" class="form-control"  placeholder="Firmanavn" name="virk_name" disabled> </div>
                <br>
                    <div class="row">
                    <div class="col-sm">
                        <label class="control-label" for="textinput">Adresse</label>
                        <input type="text" class="form-control input-md"  placeholder="Adresse"  name="address" disabled> </div>
Avatar billede olsensweb.dk Ekspert
16. december 2018 - 15:41 #4
<?php

function cvrapi($vat, $country) {

    // Strip all other characters than numbers
    $vat = preg_replace('/[^0-9]/', '', $vat);


    // Check whether VAT-number is invalid
    if (empty($vat)) {

        // Print error message
        return('Venligst angiv et CVR-nummer.');
    } else {

        // Start cURL
        $ch = curl_init();

        // Set cURL options
        curl_setopt($ch, CURLOPT_URL, 'http://cvrapi.dk/api?search=' . $vat . '&country=' . $country);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'opret_firma');

        // Parse result
        $result = curl_exec($ch);

        // Close connection when done
        curl_close($ch);

        // Return our decoded result
        return json_decode($result, 1);
    }
}

if (isset($_POST['send'])) {
    $vat = $_POST['vat'];
    $country = "dk";
    //$country = $_POST['country'];

    $info = cvrapi($vat, $country);
    $firma_navn = $info['name'];
    $firma_addresse = $info['address'];
    // print_r( cvrapi('37988103', 'dk'));
} else {
    $firma_navn = "";
    $firma_addresse = "";
}
?>

<div class="container form" id="containeropretfirma">
    <form class="form-signin" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
        <div class="row">
            <div class="col-sm">
                <label for="textinput">Skriv CVR og data indhentes automatisk</label>
                <input type="number" class="form-control"  placeholder="CVR" name="vat">

                <label for="textinput" hidden>land</label>
                <input type="text" class="form-control"  placeholder="lande code (2 bogstaver)" name="country" hidden>


                <input type="submit" class="form-control" value ="send data" name="send">
            </div>
        </div>
    </form>
</div>

<div class="col-sm">
    <label for="textinput">Firmanavn</label>
    <input type="text" class="form-control"  placeholder="Firmanavn" value = "<?php echo $firma_navn ?>" name="virk_name" disabled>
</div>
<br>
<div class="row">
    <div class="col-sm">
        <label class="control-label" for="textinput">Adresse</label>
        <input type="text" class="form-control input-md"  placeholder="Adresse"  value = "<?php echo $firma_addresse ?>" name="address" disabled> </div>
</div>
Avatar billede Oliv3673 Juniormester
16. december 2018 - 16:34 #5
Perfekt så virker det.! Der er dog et lille problem..
Når man trykker et forkert CVR-nummer ind så kommer dette frem på websitet:
Warning: Illegal string offset 'name' in C:\xampp\htdocs\Dropbox\LOOP_WEB\WEB_LOOP\opret_firma.php on line 98

Warning: Illegal string offset 'address' in C:\xampp\htdocs\Dropbox\LOOP_WEB\WEB_LOOP\opret_firma.php on line 99

Warning: Illegal string offset 'zipcode' in C:\xampp\htdocs\Dropbox\LOOP_WEB\WEB_LOOP\opret_firma.php on line 100

Warning: Illegal string offset 'city' in C:\xampp\htdocs\Dropbox\LOOP_WEB\WEB_LOOP\opret_firma.php on line 101

Warning: Illegal string offset 'phone' in C:\xampp\htdocs\Dropbox\LOOP_WEB\WEB_LOOP\opret_firma.php on line 102

Warning: Illegal string offset 'email' in C:\xampp\htdocs\Dropbox\LOOP_WEB\WEB_LOOP\opret_firma.php on line 103

Warning: Illegal string offset 'vat' in C:\xampp\htdocs\Dropbox\LOOP_WEB\WEB_LOOP\opret_firma.php on line 104

Og det er jo alle variabler der ellers hentes ind hvis nummeret er korrekt.
if (isset($_POST['send'])) {
    $vat = $_POST['vat'];
    $country = $_POST['country'];
   
    $data = (cvrapi($vat, $country));
    $navn = $data['name'];
    $adresse = $data['address'];
    $zip = $data['zipcode'];
    $by = $data['city'];
    $tlf = $data['phone'];
    $email = $data['email'];
    $cvr = $data['vat'];

Hvordan for man den til at tjekke om det er et gyldigt CVR-nummer og så give besked hvis det ikke er?
Avatar billede olsensweb.dk Ekspert
16. december 2018 - 17:01 #6
if (isset($_POST['send'])) {
    $vat = $_POST['vat'];
    $country = "dk";
    //$country = $_POST['country'];

    $data = cvrapi($vat, $country);
   
    // http://php.net/manual/en/function.array-key-exists.php
    if (array_key_exists ( "error", $data)){
    ///// if($data['error'] == "NOT_FOUND"){
        $firma_navn = "";
        $firma_addresse = "";
        echo "CVR nummer findes ikke";
    }
    else{
        print_r($data);
        $firma_navn = $data['name'];
        $firma_addresse = $data['address'];
   
        echo $data['productionunits'][0]['pno'];
        // print_r( cvrapi('37988103', 'dk'));   
    }   
} else {
    $firma_navn = "";
    $firma_addresse = "";
}
Avatar billede olsensweb.dk Ekspert
16. december 2018 - 17:22 #7
lidt optimering af code med isset i #6

if (isset($_POST['send'])) {
    $vat = $_POST['vat'];
    $country = "dk";
    //$country = $_POST['country'];

    $data = cvrapi($vat, $country);
    print_r($data); // test
   
    // http://php.net/manual/en/function.array-key-exists.php
    if (array_key_exists ( "error", $data)){
    ///// if($data['error'] == "NOT_FOUND"){ // bliver kun sat hvis der er en fejl

        echo "CVR nummer findes ikke";
    }
}

$firma_navn = (isset($data['name']))? $data['name'] : "";
$firma_addresse = (isset($data['address']))? $data['address'] : "";
Avatar billede Oliv3673 Juniormester
16. december 2018 - 17:40 #8
Mange tak for alt hjælpen ! Det virker nu
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester