Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
script per generazione immagine da template
#31
adesso il codice è così:
Codice:
<?php
// inizializzazione della sessione
session_start();

// valorizzazione delle variabili con i parametri dal form
if (isset($_POST['submit'])) {
  if(isset($_POST['titoletto'])){
    $titoletto = 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['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

//funzione per l'inserimento dei dati in tabella
public function inserisci($t,$v,$r = null)
    {
         if(isset($this->attiva))
          {
                        $istruzione = 'INSERT INTO '.$t;
            if($r != null)
            {
                $istruzione .= ' ('.$r.')';
            }

            for($i = 0; $i < count($v); $i++)
            {
                if(is_string($v[$i]))
                    $v[$i] = '"'.$v[$i].'"';
            }
            $v = implode(',',$v);
            $istruzione .= ' VALUES ('.$v.')';

            $query = sqlite_query($istruzione) or die (mysql_error());

            }else{
                return false;
            }
        }
}

  ?>
<html>
<title>Crea Screen</title>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<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><?
}
?>
ma continua a darmi lo stesso errore...
Cita messaggio
#32
Devi inserire il metodo inserisci nella classe MysqlClass all'interno del file "config.php".
Mattia!
Cita messaggio
#33
cioè il codice che ho insrito in edit devo inserirlo in config? e in edit rimetto quello di prima?
Cita messaggio
#34
Sì, devi fare come il metodo connetti.
Mattia!
Cita messaggio
#35
quindi la pagina config.php è 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;
       }
    }
}  
    //funzione per l'inserimento dei dati in tabella
    public function inserisci($t,$v,$r = null)
    {
         if(isset($this->attiva))
          {
            $istruzione = 'INSERT INTO '.$t;
            if($r != null)
            {
                $istruzione .= ' ('.$r.')';
            }

            for($i = 0; $i < count($v); $i++)
            {
                if(is_string($v[$i]))
                    $v[$i] = '"'.$v[$i].'"';
            }
            $v = implode(',',$v);
            $istruzione .= ' VALUES ('.$v.')';

            $query = sqlite_query($istruzione) or die (mysql_error());

            }else{
                return false;
            }
        }
}    
?>
mentre edit.php è così:
Codice:
<?php
// inizializzazione della sessione
session_start();

// valorizzazione delle variabili con i parametri dal form
if (isset($_POST['submit'])) {
  if(isset($_POST['titoletto'])){
    $titoletto = 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['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{

  ?>
<html>
<title>Crea Screen</title>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<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><?
}
?>

corretto?

perché adesso vedo di nuovo edit, e se provo a caricare l'immagine e clicco su "crea lo screenshot" mi da questo errore.
Citazione:Parse error: syntax error, unexpected T_PUBLIC in /membri/indamecs/templates/config.php on line 22
Cita messaggio
#36
Nel file "config.php" c'è una parentesi graffa chiusa di troppo subito prima della dichiarazione del metodo inserisci.
Mattia!
Cita messaggio
#37
ok, adesso nn mi da più errore ma mi porta ad una pagina bianca. Se provo a vedere dentro la cartella upload non vengono ancora caricate le immagini delle prove...
Cita messaggio
#38
Prima di:
Codice PHP:
session_start(); 

Prova a mettere:
Codice PHP:
error_reporting(E_ALL); 

In questo modo dovrebbero uscire degli errori in precedenza nascosti.

Per l'upload togli queste due righe e la parentesi graffa che chiude questo if:
Codice PHP:
if(isset($_POST['action']) and $_POST['action'] == ‘upload’)

Mattia!
Cita messaggio
#39
ecco l'errore.
Citazione:Notice: Undefined variable: immagine in /membri/indamecs/templates/edit.php on line 44

Warning: sqlite_query() expects at least 2 parameters, 1 given in /membri/indamecs/templates/config.php on line 39
Cita messaggio
#40
Per risolvere il primo errore, modifica il file "edit.php" inserendo:
Codice PHP:
$immagine ''

Prima di:
Codice PHP:
if(isset($_FILES['upload'])) 

Per il secondo errore devi fare alcune modifiche alla classe MysqlClass all'interno del file "config.php".

Dopo:
Codice PHP:
// controllo sulle connessioni attive
private $attiva false

Inserisci:
Codice PHP:
private $connessione null

Dove utilizzi la funzione sqlite_open devi fare questa modifica:
Codice PHP:
$this->connessione sqlite_open($this->nomefile); 

Dove utilizzi la funzione sqlite_query devi fare questa modifica:
Codice PHP:
$query sqlite_query($this->connessione$istruzione) or die (mysql_error()); 
Mattia!
Cita messaggio
#41
adesso mi da questo errore:
Citazione:Notice: Undefined variable: immagine in /membri/indamecs/templates/edit.php on line 45

Warning: sqlite_query() [function.sqlite-query]: near ",": syntax error in /membri/indamecs/templates/config.php on line 40
Cita messaggio
#42
Forse è meglio che ricopi il codice, perché con le modifiche che ti ho suggerito non riesco a capire dove potrebbe essere l'errore.
Mattia!
Cita messaggio
#43
adesso config.php è così:
Codice:
<?php
class MysqlClass
{
  // parametri per la connessione al database
private $nomefile = 'template.db';  
          
  // controllo sulle connessioni attive
  private $attiva = false;
  private $connessione = null;

  // funzione per la connessione a SQLite
  public function connetti()
  {
   if(!$this->attiva)
   {
$this->connessione = sqlite_open($this->nomefile);
       }else{
        return true;
       }
    }
    //funzione per l'inserimento dei dati in tabella
    public function inserisci($t,$v,$r = null)
    {
         if(isset($this->attiva))
          {
            $istruzione = 'INSERT INTO '.$t;
            if($r != null)
            {
                $istruzione .= ' ('.$r.')';
            }

            for($i = 0; $i < count($v); $i++)
            {
                if(is_string($v[$i]))
                    $v[$i] = '"'.$v[$i].'"';
            }
            $v = implode(',',$v);
            $istruzione .= ' VALUES ('.$v.')';

            $query = sqlite_query($this->connessione, $istruzione) or die (mysql_error());

            }else{
                return false;
            }
        }
}    
?>

mentre edit è così:
Codice:
<?php
// inizializzazione della sessione
error_reporting(E_ALL);
session_start();

// valorizzazione delle variabili con i parametri dal form
if (isset($_POST['submit'])) {
  if(isset($_POST['titoletto'])){
    $titoletto = 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['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’)
{
    $immagine = '';
    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{

  ?>
<html>
<title>Crea Screen</title>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<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><?
}
?>
Cita messaggio
#44
Per eliminare il primo errore devi seguire quello che ti avevo già scritto in un messaggio precedente.
(26/05/2015 17:28)Mattia Ha scritto: Per l'upload togli queste due righe e la parentesi graffa che chiude questo if:

Codice PHP:
if(isset($_POST['action']) and $_POST['action'] == ‘upload’)


Al posto di:
Codice PHP:
$query sqlite_query($this->connessione$istruzione) or die (mysql_error()); 

Metti:
Codice PHP:
$query sqlite_query($this->connessione$istruzione) or die(sqlite_error_string(sqlite_last_error($this->connessione))); 

In questo modo ti dovrebbe solo uscire un errore che dovrebbe spiegare meglio qual è il problema nella query eseguita.
Mattia!
Cita messaggio
#45
eccolo:
Citazione:Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access ./uploads/11053712_10202851485208568_5147537098448516724_n.jpg in /membri/indamecs/templates/edit.php on line 36

Warning: sqlite_query() [function.sqlite-query]: no such table: screen in /membri/indamecs/templates/config.php on line 40
SQL logic error or missing database
però la cartella che ho creato si chiama "upload". Adesso che l'h rinominata effettivamente l'upload funziona e quindi mi da indietro solo la seconda parte dell'errore...
Cita messaggio
#46
Il secondo errore dice che il nome della tabella non è "screen" oppure che non si è collegato correttamente al database.
Mattia!
Cita messaggio
#47
Ho notato che in config avevo messo "template.db" anziché "templates.db". Avendo corretto questa cosa adesso mi da questo errore:
Citazione:Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in /membri/indamecs/templates/config.php on line 16

Warning: sqlite_query() expects parameter 1 to be resource, string given in /membri/indamecs/templates/config.php on line 40

Warning: sqlite_last_error() expects parameter 1 to be resource, boolean given in /membri/indamecs/templates/config.php on line 40
not an error
Cita messaggio
#48
Sembrerebbe che la versione di SQLite installata sul server è diversa da quella del database.
Mattia!
Cita messaggio
#49
quindi cosa faccio?
Cita messaggio
#50
Controlla la versione di SQLite presente sul server e ricrea il database in quella versione.
Mattia!
Cita messaggio
#51
se mi dici come faccio a fare questa verifica lo faccio...
Cita messaggio
#52
Se non è specificata da nessuna parte (guide, F.A.Q., ecc...), puoi verificare la versione di SQLite installata creando un file PHP con il seguente codice (con la funzione phpinfo è possibile mostrare le configurazioni di PHP, le estensioni installate e molte altre informazioni):
Codice PHP:
<?php
phpinfo
(); 
Mattia!
Cita messaggio
#53
(03/06/2015 10:33)Mattia Ha scritto: Se non è specificata da nessuna parte (guide, F.A.Q., ecc...), puoi verificare la versione di SQLite installata creando un file PHP con il seguente codice (con la funzione phpinfo è possibile mostrare le configurazioni di PHP, le estensioni installate e molte altre informazioni):

Codice PHP:
<?php
phpinfo
(); 

ok, puoi vedere le info QUI Smile

Grazie
Cita messaggio
#54
Sembrerebbe che sul server ci siano installate sia la versione 2 che 3 di SQLite, ma, usando le funzioni e non la classe SQLite3, dovresti star utilizzando la versione 2.
Mattia!
Cita messaggio
#55
(05/06/2015 07:50)Mattia Ha scritto: Sembrerebbe che sul server ci siano installate sia la versione 2 che 3 di SQLite, ma, usando le funzioni e non la classe SQLite3, dovresti star utilizzando la versione 2.

da adminer me lo da già in sqlite3


Allegati Anteprime
   
Cita messaggio
#56
Quindi dovresti ricreare il database nella versione 2 di SQLite oppure modifichi il codice PHP in modo da usare la classe SQLite3 invece delle funzioni.
Mattia!
Cita messaggio
#57
ho ricreato il db in sqlite2 e adesso provando a creare un template mi da questo errore:
Citazione:Warning: sqlite_query() [function.sqlite-query]: screen.Id may not be NULL in /membri/indamecs/templates/config.php on line 40
constraint failed
Cita messaggio
#58
Il problema che il campo "id" della tabella "screen" dovrebbe essere AUTOINCREMENT, cioè ogni volta che inserisci un record in quella tabella l'"id" avrà un valore superiore a quello precedente (1, 2, 3, 4, 5, ecc...) senza assegnargli un valore a mano.
Mattia!
Cita messaggio
#59
e quindi che devo fa?
Cita messaggio
#60
Devi modificare il campo "id" della tabella "screen" in modo che sia AUTOINCREMENT. Se utilizzi Adminer e se non ricordo male, devi selezionare "AI" per assegnare l'AUTOINCREMENT a un campo di una tabella.
Mattia!
Cita messaggio


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  creare template html per instbot phyton Chandler 163 103.450 20/02/2021 14:38
Ultimo messaggio: Chandler
  Script PHP per testare sicurezza Wifi Chandler 112 224.411 23/04/2018 18:18
Ultimo messaggio: Mattia
  shortlink con script di riconoscimento device Chandler 7 10.038 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.808 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.527 27/12/2008 17:43
Ultimo messaggio: Mattia
  Script Upload Chandler 43 102.412 10/12/2008 16:22
Ultimo messaggio: Mattia
  Errore parziale su script PHP filippo9639 12 47.405 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: 1 Ospite(i)