[PHP] layout pagina con immagine codice a barre

crealatualista

Nuovo Utente
27 Feb 2017
19
0
1
24
Salve, ho un altro problema che mi sorge!
Praticamente ho creato un sito dove il venditore crea i codici a barre per i prodotti!
Ho diviso il layout in tre parti con i div
HTML:
<div id="container">
        <div id="left">
          <fieldset>
            <legend><h1>Macchine:</h1></legend>
              <input type="radio" name="macchina" value="55582258"> mercedes<br><br>
</fieldset></div>
        <div id="middle">
          <fieldset>
              <legend><h1>Lotto:</h1></legend>
             <input type="number" name="quantity" placeholder="Lotto"><br><br> 
             <input type="submit" name="invia" value="Invia">
</fieldset></div>
        <div id="right">
            <fieldset>
                <legend><h1>BARCODE:</h1></legend>

            </fieldset></div></div>
Il problema è che quando clicco il pulsante invia si apre un'altra pagina con il barcode (barcode.php, dove è presente il codice per realizzare codici a barre), ma in realtà la mia intenzione è quella di stampare il codice a barre sotto la sezione BARCODE!

Come posso fare??
Spero di essermi spiegato !
Grazie mille

PS: ho provato sia con header(Location:..... sia con include("barcode.php")! Ma il risultato è schermo nero!
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
Spero di essermi spiegato !
io non ho capito molto, ma provo a risponderti,
il barcode è generalmente un'immagine che viene visualizzata dove serve, quindi

pensando che nello script barcode.php vi sia la FUNZIONE barcode($stringa) che genera l'immagine,

includerei lo script nella pagina dove serve,

eseguirei la funzione passando come parametro la stringa da convertire in barcode, prima dell'utilizzo dell'immagine,
poi con "src img" o simili, visualizzerei l'immagine generata dalla funzione nella posizione sulla pagina

la funzione potrebbe restituire il nome del file generato, in modo da gestire più barcode sulla stessa pagina

sufficiente ?
 
  • Like
Reactions: crealatualista

crealatualista

Nuovo Utente
27 Feb 2017
19
0
1
24
Questo è l'index.php:
dove ci sono le tre divisioni (left, middle, right)

HTML:
<html>
<head><title>BARCODE</title></head>
<style>
#container {height: 100%; width:100%; font-size:0;}
#left, #middle, #right {display: inline-block; *display: inline; zoom: 1; vertical-align: top; font-size: 12px;}
#left {width: 25%;}
#middle {width: 25%;}
#right {width: 50%;}
</style>
<body>
    
    <form action = "barcode.php" method = "POST">
    <div id="container">
        <div id="left">
          <fieldset>
            <legend><h1>SUSHI:</h1></legend>
              <input type="radio" name="sushi" value="08033726442054"> GOURMET<br><br>
              <input type="radio" name="sushi" value="08033726441798"> BOX<br><br>
              <input type="radio" name="sushi" value="08033726440814"> CLASSIC<br><br>
              <input type="radio" name="sushi" value="08033726442368"> CHIRASHI<br><br>
              <input type="radio" name="sushi" value="08033726442344"> CRISPY SALMON MIX<br><br>
              <input type="radio" name="sushi" value="08033726442320"> SALAD ROLLS<br><br>
              <input type="radio" name="sushi" value="08033726442337"> SALMON SALD MIX<br><br>
              <input type="radio" name="sushi" value="08033726442351"> WASABI SALMON ROLL<br><br>
          </fieldset></div>
        <div id="middle">
          <fieldset>
              <legend><h1>SCADENZA e LOTTO:</h1></legend>
                      <br>
                  <input type="radio" name="data" value="conad">CONAD
                  <input type="radio" name="data" value="altro">ALTRO<br><br>
                  <input type="number" name="quantity" placeholder="Lotto"><br><br>           
                  <input type="submit" name="invia" value="Invia">
                  <input type="button" value="Scarica Immagine">
          </fieldset></div>
        <div id="right">
            <fieldset>
                <legend><h1>BARCODE:</h1></legend>

                  QUI DEVE STAMPARE IL CODICE A BARRE!

            </fieldset></div></div>
    
    
    
     </form>
</body>
</html>

Questo invece è il barcode.php:
dove crea il codice a barre!

PHP:
<?php
$sushi = $_POST['sushi'];
$data = $_POST['data'];
$lotto = $_POST['quantity'];
if($sushi == null || $data == null || $lotto == null){
    echo "Devi inserire tutti i campi";
}
if($data == "conad"){
    $data_scadenza = date('Y/m/d',strtotime('+3 day'));
      $scadenza = ( new DateTime($data_scadenza) )->format('ymd');
}else{
    $data_scadenza = date('Y/m/d',strtotime('+4 day'));
      $scadenza = ( new DateTime($data_scadenza) )->format('ymd');
}
$code_number= "(01)" .$sushi ."(15)" .$scadenza ."(10)" .$lotto;
require_once('barcode.inc.php');
$code_number = "(01)" .$sushi ."(15)" .$scadenza ."(10)" .$lotto;
new barCodeGenrator($code_number,0,'codice.gif', 350, 130, true);
?>
Io se aggiungo la funzione nella pagina che serve sempre nera è la schermata

Come posso fare??

Grazieee
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
credo che la soluzione più semplice sia usare le funzioni di jquery, in particolare
al click del bottone "Invia" è possibile attivare una richiesta Ajax affinché barcode.php venga eseguito, producendo il risultato
barcode.php può restituire messaggi di errore che vengono visualizzati nella div "barcode"
upload_2017-9-19_16-11-5.png

oppure la soluzione
upload_2017-9-19_16-12-7.png

in questo modo si evita di ricaricare la pagina eliminando così la gestione delle "session"

con jquery, le modifiche sono minime e meno gravose, per visualizzare l'immagine, è sufficiente
Codice:
$('#barcode').prepend($('<img>',{id:'theImg',src:'codice.gif'}))
vi sono alcune considerazioni legate al funzionamento,
in particolare anche se non "checked" i radio button restituiscono un valore di default che inficia i controlli fatti in barcode.php
insomma oltre a definire bene la logica, ci sono anche altri aggiustamenti che dovresti prendere in considerazione