Pobieranie wygenerowanych kodów

Odpowiedz Nowy wątek
2019-03-04 19:02
0

Szukam rozwiązania, dotyczącego pobierania wygenerowanego obrazka z kodem kreskowym automatycznie po kliknięciu przycisku generuj kod jednocześnie numer lub nazwa kodu podana przez użytkownika zapisywałaby się w bazie danych oraz blokadę zapisu pustego pola w bazie gdy użytkownik nie wpiszę numeru lub nazwy kodu.
Niżej cały skrypt w php'ie

<?php
include('header.php');
?>
<title>kodgen-BETA-version</title>
<style>
img.barcode {
    border: 1px solid #ccc;
    padding: 20px 10px;
    border-radius: 5px;
}
</style>
<?php include('container.php');?>
<div class="container">
    <h2>Stwórz swój kod</h2>    
    <br>
    <br>
    <div class="row">   
        <div class="col-md-4">
            <form method="post" action="baza.php">
                <div class="row">
                    <div class="col-md-8">
                        <div class="form-group">
                            <label>Nazwa lub numer produktu</label>
                            <input type="text" name="barcodeText" class="form-control" value="<?php echo @$_POST['barcodeText'];?>">
                        </div>
                    </div>      
                </div>  
                <div class="row">
                   <div class="col-md-6">
                        <div class="form-group">
                            <label>Typ kodu</label>
                            <select name="barcodeType" id="barcodeType" class="form-control">
                                <option value="codabar" <?php echo (@$_POST['barcodeType'] == 'codabar' ? 'selected="selected"' : ''); ?>>Codabar</option>
                                <option value="code128" <?php echo (@$_POST['barcodeType'] == 'code128' ? 'selected="selected"' : ''); ?>>Code128</option>
                                <option value="code39" <?php echo (@$_POST['barcodeType'] == 'code39' ? 'selected="selected"' : ''); ?>>Code39</option>
                            </select> 
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-md-6">
                         <div class="form-group">
                             <label>Kierunek kodu</label>
                             <select name="barcodeDisplay" class="form-control" required>
                                <option value="horizontal" <?php echo (@$_POST['barcodeDisplay'] == 'horizontal' ? 'selected="selected"' : ''); ?>>Poziomo</option>
                                <option value="vertical" <?php echo (@$_POST['barcodeDisplay'] == 'vertical' ? 'selected="selected"' : ''); ?>>Pionowo</option>
                             </select>
                         </div>
                    </div>
                </div>  
                <div class="row">
                    <div class="col-md-7">
                        <input type="hidden" name="barcodeSize" id="barcodeSize" value="30">
                        <input type="hidden" name="printText" id="printText" value="true">
                        <input type="submit" name="generateBarcode" class="btn btn-success form-control" value="Generuj Kod">
                    </div>
                </div>
            </form>
        </div>
        <div class="col-md-4">
         <?php
            if(isset($_POST['generateBarcode'])) {
                $barcodeText = trim($_POST['barcodeText']);
                $barcodeType=$_POST['barcodeType'];
                $barcodeDisplay=$_POST['barcodeDisplay'];
                $barcodeSize=$_POST['barcodeSize'];
                $printText=$_POST['printText'];
                if($barcodeText != '') {

                    echo '<h4>Twój Kod:</h4>';
                    echo '<img class="barcode" alt="'.$barcodeText.'" src="barcode.php?text='.$barcodeText.'&codetype='.$barcodeType.'&orientation='.$barcodeDisplay.'&size='.$barcodeSize.'&print='.$printText.'"/>';
                } else {
                    echo '<div class="alert alert-danger">Musisz wpisać numer lub nazwę kodu!</div>';
                    }
                }

        ?>
        </div>
    </div>      
    <div style="margin:50px 0px 0px 0px;">

    </div>
</div>
<?php include('footer.php');?>

Tutaj kod zapisu w bazie

 <?php
$servername = "";
$username = "y";
$password = "";
$dbname = "";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO `test` (`kod`) VALUES ('".$_POST['barcodeText']."')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

?> 
<input type="text" id="licznik" />

<script>
var liczbaSekund = 5;
odliczanie();

function odliczanie()
{
if(liczbaSekund < 0)
{
window.location = 'http://kodgen.com.pl/'
return;
}

document.getElementById('licznik').value = liczbaSekund--;

setTimeout("odliczanie()",1000); // 1000 = 1 sekunda
}
</script>

Tak to wygląda przed podpięciem skryptu bazodanowego
screenshot-20190304184926.png
a tak już po
screenshot-20190304185625.png
Jak widać użytkownik nie jest w stanie zapisać pliku.png z kodem.
Tylko proszę nie pisać postów typu "Próbowałeś już sam coś działać? Czy czekasz na gotowca?"
Próbowałem, szukałem w wujku google rozwiązań jak widać nie znalazłem. Prawie każdy dotyczy pliku zapisanego w jakimś folderze a ja potrzebuje pobrania nowo wygenerowanego pliku, z góry dziękuję za wszystkie próby pomocy lub bezpośrednią pomoc.

edytowany 1x, ostatnio: Mateusz Kwiatkowski, 2019-03-04 19:07

Pozostało 580 znaków

2019-03-04 20:22
0

Możesz wymusić pobieranie za pomocą nagłówka.
Rzuc okiem tutaj https://www.designedbyaturtle[...]le-with-http-headers-and-php/

Pozostało 580 znaków

2019-03-04 20:47
0

Okej w porządku, tylko teraz w którym miejscu mojego skryptu to wstawić? Może stworzyć nowy plik i wrzucić gdzieś odnośnik przez "include"
Gdy kombinowałem sam wyrzucało mi syntaxa :D

Spróbuj dowiedzieć się jak rozszyfrować taki syntax error :) moj mózg już nie pracuje dziś :) - axelbest 2019-03-04 22:08

Pozostało 580 znaków

2019-03-05 19:28
0

Ogarnałem jak to dodać teraz potrzebuję odpowiedni znacznik tego pliku niestety nie moge go znalezc

Czym jest wg Ciebie znacznik pliku? - axelbest 2019-03-05 20:21

Pozostało 580 znaków

2019-03-05 20:34
0

nazwa pliku pod jakim zapisane jest zdjęcie tego kodu

<a href="afile.txt" download="filename.txt">download</a>

Do tego kodu wstawiając mój barcode.php oraz barcode.png mamy

<a href="barcode.php" download="barcode.png">download</a>

przy czym pobiera mi się zdjęcie podstawowe kodu bez jego wartości
a mi zależy na pobraniu wygenerowanego kodu

edytowany 2x, ostatnio: Mateusz Kwiatkowski, 2019-03-05 20:40

Pozostało 580 znaków

2019-03-05 22:28
1

Moim zdaniem robisz to źle. W tym fragmencie kodu
echo '<img class="barcode" alt="'.$barcodeText.'" src="barcode.php?text='.$barcodeText.'&codetype='.$barcodeType.'&orientation='.$barcodeDisplay.'&size='.$barcodeSize.'&print='.$printText.'"/>'; rozumiem, że jest generowany obrazek, tak?
Czyli... do pliku barcode.php przekazujesz jakieś tam parametry i na ich podstawie tworzony jest obrazek.

jeśli to nie jest tajemnica - to podrzuć jeszcze plik barcode.php
Zasada będzie taka - w pliczku barcode.php zrobisz 2 funkcje - jedna bedzie Ci generować obrazek, druga bedzie ustawiać nagłówki i wykorzystywać pierwszą funkcję. Dzieki temu będziesz miał i obrazek i możliwość zapisania go. Rozumiem, że generowanie obrazka nie jest zasobochłonne i można pominąć kwestię wydajności, bo przy każdym wejściu na tą samą stronę, będziesz generował obrazek, podobnie jak i przy kliknięciu w link.

Pozostało 580 znaków

2019-03-06 15:26
0

Nie ma problemu, w nawiasie mówiąc jest to mój projekt do szkoły. Tak jest to generowany obrazek po wybraniu przez użytkownika odpowiednich opcji

<?php

$filepath = (isset($_GET["filepath"])?$_GET["filepath"]:"");
$text = (isset($_GET["text"])?$_GET["text"]:"0");
$size = (isset($_GET["size"])?$_GET["size"]:"20");
$orientation = (isset($_GET["orientation"])?$_GET["orientation"]:"horizontal");
$code_type = (isset($_GET["codetype"])?$_GET["codetype"]:"code128");
$print = (isset($_GET["print"])&&$_GET["print"]=='true'?true:false);
$sizefactor = (isset($_GET["sizefactor"])?$_GET["sizefactor"]:"1");

barcode( $filepath, $text, $size, $orientation, $code_type, $print, $sizefactor );

function barcode( $filepath="", $text="0", $size="20", $orientation="horizontal", $code_type="code128", $print=false, $SizeFactor=1 ) {
    $code_string = "";
    if ( in_array(strtolower($code_type), array("code128", "code128b")) ) {
        $chksum = 104;

        $code_array = array(" "=>"212222","!"=>"222122","\""=>"222221","#"=>"121223","$"=>"121322","%"=>"131222","&"=>"122213","'"=>"122312","("=>"132212",")"=>"221213","*"=>"221312","+"=>"231212",","=>"112232","-"=>"122132","."=>"122231","/"=>"113222","0"=>"123122","1"=>"123221","2"=>"223211","3"=>"221132","4"=>"221231","5"=>"213212","6"=>"223112","7"=>"312131","8"=>"311222","9"=>"321122",":"=>"321221",";"=>"312212","<"=>"322112","="=>"322211",">"=>"212123","?"=>"212321","@"=>"232121","A"=>"111323","B"=>"131123","C"=>"131321","D"=>"112313","E"=>"132113","F"=>"132311","G"=>"211313","H"=>"231113","I"=>"231311","J"=>"112133","K"=>"112331","L"=>"132131","M"=>"113123","N"=>"113321","O"=>"133121","P"=>"313121","Q"=>"211331","R"=>"231131","S"=>"213113","T"=>"213311","U"=>"213131","V"=>"311123","W"=>"311321","X"=>"331121","Y"=>"312113","Z"=>"312311","["=>"332111","\\"=>"314111","]"=>"221411","^"=>"431111","_"=>"111224","\`"=>"111422","a"=>"121124","b"=>"121421","c"=>"141122","d"=>"141221","e"=>"112214","f"=>"112412","g"=>"122114","h"=>"122411","i"=>"142112","j"=>"142211","k"=>"241211","l"=>"221114","m"=>"413111","n"=>"241112","o"=>"134111","p"=>"111242","q"=>"121142","r"=>"121241","s"=>"114212","t"=>"124112","u"=>"124211","v"=>"411212","w"=>"421112","x"=>"421211","y"=>"212141","z"=>"214121","{"=>"412121","|"=>"111143","}"=>"111341","~"=>"131141","DEL"=>"114113","FNC 3"=>"114311","FNC 2"=>"411113","SHIFT"=>"411311","CODE C"=>"113141","FNC 4"=>"114131","CODE A"=>"311141","FNC 1"=>"411131","Start A"=>"211412","Start B"=>"211214","Start C"=>"211232","Stop"=>"2331112");
        $code_keys = array_keys($code_array);
        $code_values = array_flip($code_keys);
        for ( $X = 1; $X <= strlen($text); $X++ ) {
            $activeKey = substr( $text, ($X-1), 1);
            $code_string .= $code_array[$activeKey];
            $chksum=($chksum + ($code_values[$activeKey] * $X));
        }
        $code_string .= $code_array[$code_keys[($chksum - (intval($chksum / 103) * 103))]];

        $code_string = "211214" . $code_string . "2331112";
    } elseif ( strtolower($code_type) == "code128a" ) {
        $chksum = 103;
        $text = strtoupper($text); 
        $code_array = array(" "=>"212222","!"=>"222122","\""=>"222221","#"=>"121223","$"=>"121322","%"=>"131222","&"=>"122213","'"=>"122312","("=>"132212",")"=>"221213","*"=>"221312","+"=>"231212",","=>"112232","-"=>"122132","."=>"122231","/"=>"113222","0"=>"123122","1"=>"123221","2"=>"223211","3"=>"221132","4"=>"221231","5"=>"213212","6"=>"223112","7"=>"312131","8"=>"311222","9"=>"321122",":"=>"321221",";"=>"312212","<"=>"322112","="=>"322211",">"=>"212123","?"=>"212321","@"=>"232121","A"=>"111323","B"=>"131123","C"=>"131321","D"=>"112313","E"=>"132113","F"=>"132311","G"=>"211313","H"=>"231113","I"=>"231311","J"=>"112133","K"=>"112331","L"=>"132131","M"=>"113123","N"=>"113321","O"=>"133121","P"=>"313121","Q"=>"211331","R"=>"231131","S"=>"213113","T"=>"213311","U"=>"213131","V"=>"311123","W"=>"311321","X"=>"331121","Y"=>"312113","Z"=>"312311","["=>"332111","\\"=>"314111","]"=>"221411","^"=>"431111","_"=>"111224","NUL"=>"111422","SOH"=>"121124","STX"=>"121421","ETX"=>"141122","EOT"=>"141221","ENQ"=>"112214","ACK"=>"112412","BEL"=>"122114","BS"=>"122411","HT"=>"142112","LF"=>"142211","VT"=>"241211","FF"=>"221114","CR"=>"413111","SO"=>"241112","SI"=>"134111","DLE"=>"111242","DC1"=>"121142","DC2"=>"121241","DC3"=>"114212","DC4"=>"124112","NAK"=>"124211","SYN"=>"411212","ETB"=>"421112","CAN"=>"421211","EM"=>"212141","SUB"=>"214121","ESC"=>"412121","FS"=>"111143","GS"=>"111341","RS"=>"131141","US"=>"114113","FNC 3"=>"114311","FNC 2"=>"411113","SHIFT"=>"411311","CODE C"=>"113141","CODE B"=>"114131","FNC 4"=>"311141","FNC 1"=>"411131","Start A"=>"211412","Start B"=>"211214","Start C"=>"211232","Stop"=>"2331112");
        $code_keys = array_keys($code_array);
        $code_values = array_flip($code_keys);
        for ( $X = 1; $X <= strlen($text); $X++ ) {
            $activeKey = substr( $text, ($X-1), 1);
            $code_string .= $code_array[$activeKey];
            $chksum=($chksum + ($code_values[$activeKey] * $X));
        }
        $code_string .= $code_array[$code_keys[($chksum - (intval($chksum / 103) * 103))]];

        $code_string = "211412" . $code_string . "2331112";
    } elseif ( strtolower($code_type) == "code39" ) {
        $code_array = array("0"=>"111221211","1"=>"211211112","2"=>"112211112","3"=>"212211111","4"=>"111221112","5"=>"211221111","6"=>"112221111","7"=>"111211212","8"=>"211211211","9"=>"112211211","A"=>"211112112","B"=>"112112112","C"=>"212112111","D"=>"111122112","E"=>"211122111","F"=>"112122111","G"=>"111112212","H"=>"211112211","I"=>"112112211","J"=>"111122211","K"=>"211111122","L"=>"112111122","M"=>"212111121","N"=>"111121122","O"=>"211121121","P"=>"112121121","Q"=>"111111222","R"=>"211111221","S"=>"112111221","T"=>"111121221","U"=>"221111112","V"=>"122111112","W"=>"222111111","X"=>"121121112","Y"=>"221121111","Z"=>"122121111","-"=>"121111212","."=>"221111211"," "=>"122111211","$"=>"121212111","/"=>"121211121","+"=>"121112121","%"=>"111212121","*"=>"121121211");

        $upper_text = strtoupper($text);

        for ( $X = 1; $X<=strlen($upper_text); $X++ ) {
            $code_string .= $code_array[substr( $upper_text, ($X-1), 1)] . "1";
        }

        $code_string = "1211212111" . $code_string . "121121211";
    } elseif ( strtolower($code_type) == "code25" ) {
        $code_array1 = array("1","2","3","4","5","6","7","8","9","0");
        $code_array2 = array("3-1-1-1-3","1-3-1-1-3","3-3-1-1-1","1-1-3-1-3","3-1-3-1-1","1-3-3-1-1","1-1-1-3-3","3-1-1-3-1","1-3-1-3-1","1-1-3-3-1");

        for ( $X = 1; $X <= strlen($text); $X++ ) {
            for ( $Y = 0; $Y < count($code_array1); $Y++ ) {
                if ( substr($text, ($X-1), 1) == $code_array1[$Y] )
                    $temp[$X] = $code_array2[$Y];
            }
        }

        for ( $X=1; $X<=strlen($text); $X+=2 ) {
            if ( isset($temp[$X]) && isset($temp[($X + 1)]) ) {
                $temp1 = explode( "-", $temp[$X] );
                $temp2 = explode( "-", $temp[($X + 1)] );
                for ( $Y = 0; $Y < count($temp1); $Y++ )
                    $code_string .= $temp1[$Y] . $temp2[$Y];
            }
        }

        $code_string = "1111" . $code_string . "311";
    } elseif ( strtolower($code_type) == "codabar" ) {
        $code_array1 = array("1","2","3","4","5","6","7","8","9","0","-","$",":","/",".","+","A","B","C","D");
        $code_array2 = array("1111221","1112112","2211111","1121121","2111121","1211112","1211211","1221111","2112111","1111122","1112211","1122111","2111212","2121112","2121211","1121212","1122121","1212112","1112122","1112221");

        $upper_text = strtoupper($text);

        for ( $X = 1; $X<=strlen($upper_text); $X++ ) {
            for ( $Y = 0; $Y<count($code_array1); $Y++ ) {
                if ( substr($upper_text, ($X-1), 1) == $code_array1[$Y] )
                    $code_string .= $code_array2[$Y] . "1";
            }
        }
        $code_string = "11221211" . $code_string . "1122121";
    }

    $code_length = 20;
    if ($print) {
        $text_height = 30;
    } else {
        $text_height = 0;
    }

    for ( $i=1; $i <= strlen($code_string); $i++ ){
        $code_length = $code_length + (integer)(substr($code_string,($i-1),1));
        }

    if ( strtolower($orientation) == "horizontal" ) {
        $img_width = $code_length*$SizeFactor;
        $img_height = $size;
    } else {
        $img_width = $size;
        $img_height = $code_length*$SizeFactor;
    }

    $image = imagecreate($img_width, $img_height + $text_height);
    $black = imagecolorallocate ($image, 0, 0, 0);
    $white = imagecolorallocate ($image, 255, 255, 255);

    imagefill( $image, 0, 0, $white );
    if ( $print ) {
        imagestring($image, 5, 31, $img_height, $text, $black );
    }

    $location = 10;
    for ( $position = 1 ; $position <= strlen($code_string); $position++ ) {
        $cur_size = $location + ( substr($code_string, ($position-1), 1) );
        if ( strtolower($orientation) == "horizontal" )
            imagefilledrectangle( $image, $location*$SizeFactor, 0, $cur_size*$SizeFactor, $img_height, ($position % 2 == 0 ? $white : $black) );
        else
            imagefilledrectangle( $image, 0, $location*$SizeFactor, $img_width, $cur_size*$SizeFactor, ($position % 2 == 0 ? $white : $black) );
        $location = $cur_size;
    }

    if ( $filepath=="" ) {
        header ('Content-type: image/png');
        imagepng($image);
        imagedestroy($image);
    } else {
        imagepng($image,$filepath);
        imagedestroy($image);       
    }
}

?>
edytowany 4x, ostatnio: Mateusz Kwiatkowski, 2019-03-06 15:29

Pozostało 580 znaków

2019-03-07 21:10
0

No dobra mam mniej więcej wizję jak to ma wyglądać ale nie wiem jak zacząć

Pozostało 580 znaków

2019-03-10 12:44
0

Ma ktoś pomysł jak to zrobić?

Z czym konkretnie masz problem? Jak wygląda Twoja wizja? - arczinosek 2019-03-11 13:26
Problem w tym, że nie wiem jak to zrobić myslałem nad JavaScriptem - Mateusz Kwiatkowski 2019-03-11 18:50

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0