Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
script per generazione immagine da template
#1
Ciao Mattia,
ho creato questa pagina che contiene due template (uno che contiene del testo e un immagine a DX e uno che contiene testo ed una img a SX). Mi piacerebbe utilizzare questo template collegato ad uno scriptino di inserimento testo ed immagini (backend), dal quale mi dovrebbe esportare (in output) delle immagini jpeg o png col risultato come l'immagine in allegato.

Come mi consiglieresti di agire? Considerando che ogni volta i dati che gestirò dallo scriptino saranno:
- Titolo
- Testo di descrizione
- Immagine (con scelta di allineamento a DX o a SX).

Una volta inseriti questi dati dovrebbe essere possibile generare la jpg o png come immagini in allegato.

Fammi sapere

Grazie


Allegati Anteprime
       
Cita messaggio
#2
In generale, se vuoi generare un'immagine di PHP, la libreria più diffusa è l'estensione GD. Qui trovi la guida sul sito ufficiale di PHP.

Se vuoi trasformare un pagina HTML direttamente in un'immagine, puoi trasformare prima la pagina HTML in PDF con TCPDF (qui trovi un esempio).

Poi puoi trasformare il PDF in un'immagine usando la libreria ImageMagick con questo semplice codice:
Codice PHP:
$imagick = new Imagick();
$imagick->readImage('file.pdf');
$imagick->writeImage('file.jpg'); 
Mattia!
Cita messaggio
#3
(07/05/2015 17:53)Mattia Ha scritto: In generale, se vuoi generare un'immagine di PHP, la libreria più diffusa è l'estensione GD. Qui trovi la guida sul sito ufficiale di PHP.

Se vuoi trasformare un pagina HTML direttamente in un'immagine, puoi trasformare prima la pagina HTML in PDF con TCPDF (qui trovi un esempio).

Poi puoi trasformare il PDF in un'immagine usando la libreria ImageMagick con questo semplice codice:

Codice PHP:
$imagick = new Imagick();
$imagick->readImage('file.pdf');
$imagick->writeImage('file.jpg'); 

Procederei per gradi, per prima cosa vorrei collegare questa pagina alla prima per la gestione di testo ed immagini.
Come dovrei fare per sviluppare questo piccolo script backend?
Cita messaggio
#4
Per prima cosa dovresti pensare a dove salvare i dati. Lo strumento più utilizzato in PHP è il database MySQL.
Qui trovi una guida pratica che spiega come utilizzare MySQL con PHP. In quella guida spiega come realizzare un blog, ma, se tieni presente che i post sarebbero i singoli elementi (titolo + testo + immagine + allineamento), basta che la segui punto per punto fino al 13 per fare un pannello d'amministrazione.
Con i punti 14 e 15 puoi fare la creazione della pagina HTML, ma pensaci dopo aver fatto il pannello d'amministrazione.
Mattia!
Cita messaggio
#5
ricordi quando avevo fatto un traduttore con sqlite? Potrei fare una cosa simile?
Cita messaggio
#6
Ho dato un'occhiata veloce all'altra discussione, però credo che puoi la stessa cosa utilizzando un database SQLite.
Mattia!
Cita messaggio
#7
Ciao Mattia,
dunque ho scaricato adminer, caricato il file php sul mio spazio web, e ho creato il database templates.db
Ho inoltre creato la tabella screen con i registri:
Immagine => integer
Titolo => text
Testo => text

Fin qui corretto?
Se si, cosa devo fare adesso?
Cita messaggio
#8
I campi della tabella dovranno essere:
Id (integer): identificativo del singolo elemento
Titolo (text)
Testo (text)
Immagine (text): nome del file che caricherai
Posizione (text): qui puoi scegliere diversi tipi, ma avendo un campo di testo potrai specificare diverse posizioni oltre a sinistra e destra in futuro.
Mattia!
Cita messaggio
#9
ok, ho fatto.
Adesso cosa devo fare esattamene nella pagina edit.html?
Cita messaggio
#10
La pagina "edit.html" dovrà contenere un form in HTML e la parte in PHP per estrarre i dati del singolo elemento e salvarli successivamente.
In un post non riesco a spiegarti tutto il funzionamento, ma puoi seguire la guida che ti ho suggerito in questo messaggio.
Mattia!
Cita messaggio
#11
ok, credo di aver fatto un pasticcio, ma faccio confusione nelle differenze tra mySQL e sqlite, dunque edit.html è diventato edit.php e questo è il codice (che ti chiedo di aiutarmi a sistemare):
Codice:
<php?
// funzione per la connessione a SQLite
public function connetti()
{
   if(!$this->attiva)
    {
     if($connessione = sqlite_open($this->nomehost,$this->nomeuser,$this->password) or die (sqlite_error()))
      {
       // selezione del database
       $selezione = sqlite_select_db($this->nomedb,$connessione) or die (mysql_error());
      }
     }else{
       return true;
     }
    }
    ?>
<title>Crea Screen</title>
</head>

<body>
<tr>
                    <td width="215px"><span onMouseOver="toggle('answer1'); return false;" onMouseOut="toggle('answer1'); return false;" class='tltp'>Seleziona la foto:</span></td>
                    <td><input type="hidden" name="MAX_FILE_SIZE" value="16777216" /><input type="file" id="file_upload" name="upload[]" size="31" style="background: #F8F8F8; border: 1px solid #888; width:240px;font: 11px Arial, Helvetica, sans-serif;padding:2px;" min="1" max="50" multiple /></td>
</tr><br />
<tr>
            <td id="description">Allinea immagine</td>
            <td>
              <p>
                <input type="hidden" name='ui' id='ui' value="" />
                <select name="optsize" id="optsize" style="width:241px;" onChange="$.cookie(this.name,this.value)">
                  <option value="0">A DESTRA</option>
                  <option value="1">A SINISTRA</option>
                </select>  
            </td>
        </tr><td><p>TITOLO </p>
                <input name="titolo" type="text"><br />
                <textarea name="testo" rows="5" cols="40">
  inserisci il testo
</textarea>
            </td>
        </tr>
</form>
</body>
</html>

con sqlite non devo inserire i dati del db sql e la psw? Davvero nn ricordo...
Cita messaggio
#12
Il metodo connetti dovrebbe stare all'interno di una classe e non libero (infatti viene usata la variabile $this). Ti conviene copiare la classe del database in un file esterno visto che la userai anche in altre parti (copia quella della guida e modifica le funzioni di MySQL con quelle relative di SQLite.
Sì, a un database SQLite ci si può collegare anche senza username e password.
Mattia!
Cita messaggio
#13
Ho creato il file config.php con questo codice:
Codice:
<?php
class MysqlClass
{
 // parametri per la connessione al database
 private $nomehost = "localhost";    
 private $nomeuser = "username";          
 private $password = "password";
         
 // controllo sulle connessioni attive
 private $attiva = false;

 // funzione per la connessione a SQLite
 public function connetti()
 {
  if(!$this->attiva)
  {
   $connessione = sqlite_open($this->nomehost,$this->nomeuser,$this->password);
      }else{
       return true;
      }
   }
}      
?>
l'unico dubbio è se class MysqlClass diventa class sqliteClass oppure no, inoltre si dovrebbe rimuovere tutta la parte di connessione al database, giusto? Infine in sqlite_open devo mettere il nome del db (in questo caso templates.db) su $this oppure lascio così com'è?

Sulla pagina edit.html invece che devo fa?
al momento l'ho modificata così:
Codice:
<php?

// inclusione del file contenente la classe
include "config.php"
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();
    ?>
<title>Crea Screen</title>
</head>

<body>
<tr>
<td width="215px"><span onMouseOver="toggle('answer1'); return false;" onMouseOut="toggle('answer1'); return false;" class='tltp'>Seleziona la foto:</span></td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="16777216" /><input type="file" id="file_upload" name="upload[]" size="31" style="background: #F8F8F8; border: 1px solid #888; width:240px;font: 11px Arial, Helvetica, sans-serif;padding:2px;" min="1" max="50" multiple /></td>
</tr><br />
<tr>
<td id="description">Allinea immagine</td>
<td>
 <p>
   <input type="hidden" name='ui' id='ui' value="" />
   <select name="optsize" id="optsize" style="width:241px;" onChange="$.cookie(this.name,this.value)">
     <option value="0">A DESTRA</option>
     <option value="1">A SINISTRA</option>
       </select>  
</td>
</tr><td><p>TITOLO </p>
                <input name="titolo" type="text"><br />
                <textarea name="testo" rows="5" cols="40">
  inserisci il testo
</textarea>
            </td>
        </tr>
</form>
</body>
</html>
mi resta il dubbio su $data = new MysqlClass();
mentre per memorizzare i dati che inserisco dai form?
Cita messaggio
#14
La classe "MysqlClass" puoi chiamarla con qualsiasi nome che vuoi, basta che la richiami (dove c'è new NomeClasse) con il nome che gli hai assegnato.

Puoi cancellare le tre variabili dove ci sono i parametri per la connessione al database e inserirne solo una con il percorso del file del database.
Codice PHP:
private $nomefile 'percorso/del/file/del/database.db'

La riga della connessione diventa:
Codice PHP:
$connessione sqlite_open($this->nomefile); 

Per quanto riguarda il form di inserimento degli elementi, puoi dare un'occhiata a questa pagina della guida.
Mattia!
Cita messaggio
#15
Ciao Mattia,
adesso la pagina config è così:
Codice:
<?php
class MysqlClass
{
  // parametri per la connessione al database
private $nomefile = 'template.db';  
          
  // controllo sulle connessioni attive
  private $attiva = false;

  // funzione per la connessione a SQLite
  public function connetti()
  {
   if(!$this->attiva)
   {
$connessione = sqlite_open($this->nomefile);
       }else{
        return true;
       }
    }
}      
?>

mentre edit è diventata così:

Codice:
<?php
// inizializzazione della sessione
session_start();

// valorizzazione delle variabili con i parametri dal form
if(isset($_POST['submit'])&&($_POST['submit']=="Scrivi")){

  if(isset($_POST['titolo'])){
    $titolo = addslashes(filter_var($_POST['titolo'], FILTER_SANITIZE_STRING));
  }
  if(isset($_POST['testo'])){
    $testo = addslashes(filter_var($_POST['testo'], FILTER_SANITIZE_STRING));
  }
    if(isset($_POST['immagine'])){
    $immagine = addslashes(filter_var($_POST['immagine'], FILTER_SANITIZE_STRING));
  }
    if(isset($_POST['posizione'])){
    $posizione = addslashes(filter_var($_POST['posizione'], FILTER_SANITIZE_STRING));
  }

  // inclusione del file della classe
include "config.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();

    $t = "post"; # nome della tabella
    $v = array ($titolo,$testo,$immagine,$posizione,date("Y-m-d")); # valori da inserire
    $r =  "titolo_post,testo_post,autore_post,data_post"; # campi da popolare

   // chiamata alla funzione per l'inserimento dei dati
    $data->inserisci($t,$v,$r);
    echo "Template generato con successo.";
    // disconnessione
    $data->disconnetti();
   }else{
  // form per l'inserimento
  ?>
<title>Crea Screen</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<span onMouseOver="toggle('answer1'); return false;" onMouseOut="toggle('answer1'); return false;" class='tltp'>Seleziona la foto:</span>
<input type="hidden" name="MAX_FILE_SIZE" value="16777216" /><input type="file" id="file_upload" name="upload[]" size="31" style="background: #F8F8F8; border: 1px solid #888; width:240px;font: 11px Arial, Helvetica, sans-serif;padding:2px;" min="1" max="50" multiple /><br />
Allinea immagine<br>
<input type="hidden" name='posizione' id='' value="" />
<select name="optsize" id="optsize" style="width:241px;" onChange="$.cookie(this.name,this.value)">
                  <option value="0">A DESTRA</option>
                  <option value="1">A SINISTRA</option>
                </select><br />

TITOLO <br />
           <input name="titolo" type="text"><br />
             <textarea name="testo" rows="5" cols="40">
  inserisci il testo
</textarea>
<input name="submit" type="submit" value="Crea Screenshot">

</form>
</body>
</html><?
}
?>
Ho rimosso la parte di login che reindirizzata alla index, ma ho ancora perplessità per $t = "post" che non capisco se devo sostituirlo con "screen" che è il nome della tabella che ho creato dentro templates.db. Inoltre ho due input per la selezione dell'immagine e upload e non so quale devo modificare...

Mi aiuteresti please?
Cita messaggio
#16
Alla classe "MysqlClass" devi aggiungere il metodo "inserisci" che trovi in questa lezione della guida dove spiega anche come usarlo.

In "edit.php":
  • alla variabile $t devi assegnare il nome della tabella (quindi nel tuo caso, "screen");
  • alla variabile $v devi assegnare i valori da inserire (vanno bene le variabili che hai inserito, ma devi togliere l'ultima perché non hai nessuno campo dove salvi la data attuale e la variabile dell'immagine non va bene, perché prima devi caricare l'immagine [guida] e alla variabile devi assegnare il percorso);
  • alla variabile $r devi inserire i nomi dei campi della tabella (nello stesso ordine in cui li hai inseriti in $v.

Visto che carichi una sola immagine, il campo di input diventa:
Codice:
<input type="file" id="file_upload" name="upload" size="31" style="background: #F8F8F8; border: 1px solid #888; width:240px;font: 11px Arial, Helvetica, sans-serif;padding:2px;" />
Mattia!
Cita messaggio
#17
così è corretto?
Codice:
<?php
// inizializzazione della sessione
session_start();

// valorizzazione delle variabili con i parametri dal form
if(isset($_POST['submit'])&&($_POST['submit']=="Scrivi")){

  if(isset($_POST['titolo'])){
    $titolo = addslashes(filter_var($_POST['titolo'], FILTER_SANITIZE_STRING));
  }
  if(isset($_POST['testo'])){
    $testo = addslashes(filter_var($_POST['testo'], FILTER_SANITIZE_STRING));
  }
    if(isset($_POST['immagine'])){
    $immagine = addslashes(filter_var($_POST['immagine'], FILTER_SANITIZE_STRING));
  }
    if(isset($_POST['posizione'])){
    $posizione = addslashes(filter_var($_POST['posizione'], FILTER_SANITIZE_STRING));
  }

  // inclusione del file della classe
include "config.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();

    $t = "screen"; # nome della tabella
    $v = array ($titolo,$testo,$immagine,$posizione); # valori da inserire
    $r =  "titolo_screen,testo_screen,immagine_screen,posizione_screen"; # campi da popolare

// chiamata alla funzione per l'inserimento dei dati
    $data->inserisci($t,$v,$r);
    echo "Template generato con successo.";
    // disconnessione
    $data->disconnetti();
   }else{
  // form per l'inserimento
  
  define(“UPLOAD_DIR”, “./uploads/”);

if(isset($_POST['action']) and $_POST['action'] == ‘upload’)
{
    if(isset($_FILES['user_file']))
    {
        $file = $_FILES['user_file'];
        if($file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name']))
        {
            move_uploaded_file($file['tmp_name'], UPLOAD_DIR.$file['name']);
        }
    }
}

  ?>
<title>Crea Screen</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<span onMouseOver="toggle('answer1'); return false;" onMouseOut="toggle('answer1'); return false;" class='tltp'>Seleziona la foto:</span>
<input type="file" id="file_upload" name="upload" size="31" style="background: #F8F8F8; border: 1px solid #888; width:240px;font: 11px Arial, Helvetica, sans-serif;padding:2px;" /><br />
Allinea immagine<br>
<input type="hidden" name='posizione' id='' value="" />
<select name="optsize" id="optsize" style="width:241px;" onChange="$.cookie(this.name,this.value)">
                  <option value="0">A DESTRA</option>
                  <option value="1">A SINISTRA</option>
                </select><br />

TITOLO <br />
           <input name="titolo" type="text"><br />
             <textarea name="testo" rows="5" cols="40">
  inserisci il testo
</textarea>
<input name="submit" type="submit" value="Crea Screenshot">

</form>
</body>
</html><?
}
?>
Cita messaggio
#18
Forse devi modificare la variabile $r, perché non penso che ai nomi dei campi hai aggiunto uno "_screen" finale.

Devi spostare l'upload prima dell'assegnazione delle variabili $t, $v e $r.
Dove c'è $_FILES['user_file'] devi mettere $_FILES['upload'] visto che il nome del campo per selezionare il file da caricare si chiama "upload".
Per salvare il percorso dell'immagine nel database, subito dopo la funzione move_uploaded_file devi inserire:
Codice PHP:
$immagine UPLOAD_DIR.$file['name']; 
Mattia!
Cita messaggio
#19
Dunque, avevo dimenticato il titoletto (che eventualmente va prima del titolo), quindi ho aggiunto questo valore nella tabella come text e quindi ho sistemato la pagina così:
Codice:
<?php
// inizializzazione della sessione
session_start();

// valorizzazione delle variabili con i parametri dal form
if(isset($_POST['submit'])&&($_POST['submit']=="Scrivi")){

  if(isset($_POST['titoletto'])){
    $titolo = addslashes(filter_var($_POST['titoletto'], FILTER_SANITIZE_STRING));
  }
  if(isset($_POST['titolo'])){
    $titolo = addslashes(filter_var($_POST['titolo'], FILTER_SANITIZE_STRING));
  }
  if(isset($_POST['testo'])){
    $testo = addslashes(filter_var($_POST['testo'], FILTER_SANITIZE_STRING));
  }
    if(isset($_POST['immagine'])){
    $immagine = addslashes(filter_var($_POST['immagine'], FILTER_SANITIZE_STRING));
  }
    if(isset($_POST['posizione'])){
    $posizione = addslashes(filter_var($_POST['posizione'], FILTER_SANITIZE_STRING));
  }

  // inclusione del file della classe
include "config.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();
// form per l'inserimento immagine
  define(“UPLOAD_DIR”, “./uploads/”);

if(isset($_POST['action']) and $_POST['action'] == ‘upload’)
{
    if(isset($_FILES['upload']))
    {
        $file = $_FILES['upload'];
        if($file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name']))
        {
            move_uploaded_file($file['tmp_name'], UPLOAD_DIR.$file['name']);
        $immagine = UPLOAD_DIR.$file['name'];
        }
    }
}

    $t = "screen"; # nome della tabella
    $v = array ($titoletto,$titolo,$testo,$immagine,$posizione); # valori da inserire
    $r =  "titoletto,titolo,testo,immagine,posizione"; # campi da popolare

// chiamata alla funzione per l'inserimento dei dati
    $data->inserisci($t,$v,$r);
    echo "Template generato con successo.";
    // disconnessione
    $data->disconnetti();
   }else{

  ?>
<title>Crea Screen</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<span onMouseOver="toggle('answer1'); return false;" onMouseOut="toggle('answer1'); return false;" class='tltp'>Seleziona la foto:</span>
<input type="file" id="file_upload" name="upload" size="31" style="background: #F8F8F8; border: 1px solid #888; width:240px;font: 11px Arial, Helvetica, sans-serif;padding:2px;" /><br />
Allinea immagine<br>
<input type="hidden" name='posizione' id='' value="" />
<select name="optsize" id="optsize" style="width:241px;" onChange="$.cookie(this.name,this.value)">
                  <option value="0">A DESTRA</option>
                  <option value="1">A SINISTRA</option>
                </select><br />
Titoletto <br />
           <input name="titoletto" type="text"><br />
Titolo <br />
           <input name="titolo" type="text"><br />
             <textarea name="testo" rows="5" cols="40">
  inserisci il testo
</textarea>
<input name="submit" type="submit" value="Crea Screenshot">

</form>
</body>
</html><?
}
?>

Se tutto è corretto dovrò, adesso, collegare i dati salvati alla pagina templates.html che avevo messo nella parte iniziale del post (e che a questo punto ti rimetto qui di seguito):
Codice:
<!DOCTYPE html>
<html lang="en_us" class="block no-js  ">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="format-detection" content="telephone=no">

        
<title>Home</title>
<meta name="description" content="">
<meta name="keywords" content="">


<link rel="alternate" type="application/rss+xml" title="" href="feed.rss" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="google" value="notranslate" />

    <script>
        var DM = DM || {};
        DM.env = "live"
    </script>
    <link rel="stylesheet" href="screen.css?c=2" media="screen" type="text/css" />
    <link rel="stylesheet" href="print.css?c=2" media="print" type="text/css"  />
    <script data-main="/" src="require.js"></script>
    <!--[if IE]><script src="excanvas.js"></script><![endif]-->
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,300' rel='stylesheet' type='text/css'>

</head>

<body class="homepage homepage block">
  
<header>
</header>                                                                                 

    <section class="latest-outcome waypoints greyBg">
        <div class="inner">

        </div>
    </section>


    <section id="projects" class="lines">
        <div class="inner">

    <article class="teaser left  landscape">
        <figure  class="js-animate  ">
                                <picture>
                    <source srcset="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/BDF-Elements/_homeprojectlandscape/Header_01.jpg" media="(max-width: 1000px)">
                    <!--<source srcset="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/BDF-Elements/_homeprojectlandscape/Header_01.jpg" media="(min-width: 800px)">-->
                    <img src=        "http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/BDF-Elements/_homeprojectlandscape/Header_01.jpg" class="mainImg" alt="BDF Energy in the room" />
                </picture>
        </figure>

        <div class="teaser-details js-animate">
                <h3>titoletto</h3>
                <h5>Titolo</h5>
            <div class="container">
                <div class="desc"><p>
                <p>lorem ipsum dolor sit amet</p></p></div></a>
            </div> <br />
            <div clas="readmore"></div>


        </div>

          </article>

    <article class="teaser right  square">
        <figure  class="js-animate  award">
          <picture>
            <source srcset="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/Eagle-Adventure-Tours/_homeprojectlandscape/Header_141001.jpg" media="(max-width: 1000px)">
                    <!--<source srcset="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/Eagle-Adventure-Tours/_homeprojectsquare/EAT_Teaser_1308x1308.jpg" media="(min-width: 800px)">-->
                    <img src="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/Eagle-Adventure-Tours/_homeprojectsquare/EAT_Teaser_1308x1308.jpg" class="mainImg" alt="Eagle Adventure Tours USA Trips for Bikers" />
                </picture>

        </figure>

        <div class="teaser-details js-animate">
                <h3>titoletto</h3>
                <h5>Titolo</h5>
            <div class="container">
                <div class="desc"><p>
                <p>Lorem ipsum dolor sit met et ce que si no forse.</p></p></div>
            </div>
            <div clas="readmore"></div>


        </div>

          </article>

    <article class="teaser left  landscape">
        <figure  class="js-animate  ">
            <a href="http://demodern.com/projects/nike-community-wall"  >
            <picture></picture>
            </a>
        </figure>

        <div class="teaser-details js-animate">
            <a href="http://demodern.com/projects/nike-community-wall">
        <h3></h3></a></div>
    </article>
    <article class="teaser left  square">
      <div class="teaser-details js-animate">
        <div class="container"><a href="http://demodern.com/projects/dice-decide"><div class="desc"></p></div></a>
            </div>
            <div clas="readmore"></div>


      </div>

        </article>
        
                
            <div class="clear"></div>

            <div class="moreInfoProjects" data-stellar-ratio="1.07">

            </div>

        </div>
    </section>


<section class="our-core lines dark">

       <div class="inner"  data-stellar-ratio="0.93"></div>
    </section>
</body>
</html>
Ovviamente, in realtà, quando chiccherò sull'input "Crea Screen" non passerò da questa pagina ma mi genererà direttamente la jpeg da salvare.
Cita messaggio
#20
Dove assegni il valore di $_POST['titoletto'], devi modificare il nome della variabile da $titolo a $titoletto.

Puoi cancellare queste righe di codice, perché l'immagine viene gestita nell'upload:
Codice PHP:
if (isset($_POST['immagine'])) {
    
$immagine addslashes(filter_var($_POST['immagine'], FILTER_SANITIZE_STRING));


Adesso dovresti provare a controllare che vengano salvati correttamente tutti i dati nel database e che venga caricata l'immagine.
Se funziona tutto, puoi seguire questa lezione della guida per estrarre i dati dal database.
Mattia!
Cita messaggio
#21
mi da un errore sul file edit:
Citazione:Parse error: syntax error, unexpected '/' in /membri/indamecs/templates/edit.php on line 28

p.s. mentre mi rispondevi ho corretto il msg precedente alla tua risposta...

ho inoltre rinominato templates.html in templates.php e ho provato a sistemare la prima parte di codice così (per capire se sto facendo bene):
Codice:
<html>
<head>
<title>Home</title>
</head>
<body class="homepage homepage block">
<link rel="alternate" type="application/rss+xml" title="" href="feed.rss" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="google" value="notranslate" />
    <link rel="stylesheet" href="screen.css?c=2" media="screen" type="text/css" />
    <link rel="stylesheet" href="print.css?c=2" media="print" type="text/css"  />
    <script data-main="/" src="require.js"></script>
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,300' rel='stylesheet' type='text/css'>
<?php
// inclusione del file di classe
include "config.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();
// query per l'estrazione dei record
$screen_sql = $data->query("SELECT * FROM post ORDER BY screen DESC");
// controllo sul numero di records presenti in tabella
if(sqlite_num_rows($screen_sql) > 0){
  // estrazione dei record tramite ciclo
  while($screen_obj = $data->estrai($screen_sql)){
    $id = $screen_obj->id;
    $titoletto = stripslashes($screen_obj->titoletto);
    $titolo = stripslashes($screen_obj->titolo);
    $testo = stripslashes($screen_obj->testo);
    $immagine = stripslashes($screen_obj->immagine);
    $posizione = $screen_obj->posizione;
?>
    <section id="projects" class="lines">
        <div class="inner">

    <article class="teaser left  landscape">
        <figure  class="js-animate  ">
                                <picture>
                    <source srcset="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/BDF-Elements/_homeprojectlandscape/Header_01.jpg" media="(max-width: 1000px)">
                    <img src=        "http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/BDF-Elements/_homeprojectlandscape/Header_01.jpg" class="mainImg" alt="BDF Energy in the room" />
                </picture>
        </figure>

       <?php echo "<div class="teaser-details js-animate">";
             echo "<h3>titoletto</h3>n";
             echo "<h5>Titolo</h5>n";
             echo "<div class="container">";
             echo "<div class="desc">";
             echo "lorem ipsum dolor sit amet". $testo . "</div></div>n"; ?>
             <br />
        </div>

          </article>

    <article class="teaser right  square">
        <figure  class="js-animate  award">
          <picture>
            <source srcset="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/Eagle-Adventure-Tours/_homeprojectlandscape/Header_141001.jpg" media="(max-width: 1000px)">
                    <img src="http://s3-eu-west-1.amazonaws.com/demodernsite/amazon/Cases/Eagle-Adventure-Tours/_homeprojectsquare/EAT_Teaser_1308x1308.jpg" class="mainImg" alt="Eagle Adventure Tours USA Trips for Bikers" />
                </picture>

        </figure>

        <div class="teaser-details js-animate">
                <h3>titoletto</h3>
                <h5>Titolo</h5>
            <div class="container">
                <div class="desc"><p>
                <p>Lorem ipsum dolor sit met et ce que si no forse.</p></p></div>
            </div>
            <div clas="readmore"></div>


        </div>

          </article>

    <article class="teaser left  landscape">
        <figure  class="js-animate  ">
            <a href="http://demodern.com/projects/nike-community-wall"  >
            <picture></picture>
            </a>
        </figure>

        <div class="teaser-details js-animate">
            <a href="http://demodern.com/projects/nike-community-wall">
        <h3></h3></a></div>
    </article>
    <article class="teaser left  square">
      <div class="teaser-details js-animate">
        <div class="container"><a href="http://demodern.com/projects/dice-decide"><div class="desc"></p></div></a>
            </div>
            <div clas="readmore"></div>


      </div>

        </article>
        
                
            <div class="clear"></div>

            <div class="moreInfoProjects" data-stellar-ratio="1.07">

            </div>

        </div>
    </section>


<section class="our-core lines dark">

       <div class="inner"  data-stellar-ratio="0.93"></div>
    </section>
</body>
</html>
resta il fatto che non so come gestire l'immagine e il posizionamento, considerando che i due template sono entrambi in questa pagina.
Cita messaggio
#22
Prima verifica che funzioni l'inserimento degli elementi, poi puoi pensare a estrarre i dati dal database.

L'errore dovrebbe essere dove definisci la costante UPLOAD_DIR, perché utilizzi le virgolette "intelligenti" e non quelle che sono indifferenziate tra apertura e chiusura.
Codice PHP:
define('UPLOAD_DIR''./uploads/'); 
Mattia!
Cita messaggio
#23
Adesso la pagina si apre, ma i dati sembra che non vengano salvati (ho cercato sia tramite adminer che sul ftp per vedere se trovavo la cartella upload o eventuali immagini, ma nada).
Cita messaggio
#24
Quando provi a salvare i dati esce qualche messaggio?
Devi creare tu la cartella "upload".
Mattia!
Cita messaggio
#25
Ciao Mattia,
pur creando la cartella non mi viene caricata l'immagine dentro. Quando inserisco dati e immagine e clicco su "crea Screen" non mi spunta nessun messaggio e non vedo neanche il minimo caricamento dalla barra...
Cita messaggio
#26
Per caricare i file devi modificare il tag form d'apertura in questo modo:
Codice PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"

Se cliccando sul bottone continua a non inviare il form (inviare è una cosa, salvare i dati è un'altra), dovresti verificare la correttezza del codice HTML. Puoi utilizzare il validatore ufficiale del W3C.
Mattia!
Cita messaggio
#27
ancora non invia il form, dal validatore w3c ho 2 Errors, 12 warning(s). La pagina in questione è questa.
Cita messaggio
#28
Ho visto che il form viene inviato, ma non viene salvato nulla.

Il problema è dato dal fatto che valore del bottone dell'invio non è più "Scrivi".
Puoi modificare questa riga:
Codice PHP:
if(isset($_POST['submit'])&&($_POST['submit']=="Scrivi")){ 

In questo modo (viene controllato se è stato inviato il valore del bottone senza controllare quale sia):
Codice PHP:
if (isset($_POST['submit'])) { 
Mattia!
Cita messaggio
#29
Ciao Mattia,
ho sistemato come hai detto e adesso mi da questo errore:
Citazione:Fatal error: Call to undefined method MysqlClass::inserisci() in /membri/indamecs/templates/edit.php on line 47
Cita messaggio
#30
Devi creare il metodo inserisci come ti avevo scritto in questo messaggio.
Mattia!
Cita messaggio


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  creare template html per instbot phyton Chandler 163 103.441 20/02/2021 14:38
Ultimo messaggio: Chandler
  Script PHP per testare sicurezza Wifi Chandler 112 224.399 23/04/2018 18:18
Ultimo messaggio: Mattia
  shortlink con script di riconoscimento device Chandler 7 10.034 01/02/2017 16:09
Ultimo messaggio: Chandler
  estrarre script Chandler 4 11.708 22/01/2015 20:06
Ultimo messaggio: Chandler
  Script traduttore Chandler 75 171.789 21/10/2012 16:53
Ultimo messaggio: Chandler
  Erroe di parsing nell'esecuzione di uno script filippo9639 1 8.171 25/01/2009 22:09
Ultimo messaggio: Mattia
  Problemo con script per importare dati di una tabella su un altro hosting filippo9639 7 20.525 27/12/2008 17:43
Ultimo messaggio: Mattia
  Script Upload Chandler 43 102.408 10/12/2008 16:22
Ultimo messaggio: Mattia
  Errore parziale su script PHP filippo9639 12 47.403 30/11/2008 16:17
Ultimo messaggio: filippo9639
  Problema con script PHP per trasferimento tabelle dati filippo9639 10 32.061 23/11/2008 18:08
Ultimo messaggio: filippo9639

Vai al forum:


Utenti che stanno guardando questa discussione: 2 Ospite(i)