- Home
- Categorie
- Coding e Sistemistica
- Coding
- Query in codice
- 
							
							
							
							
							[PHP] 
 else
 {
 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);
 // QUI INSERISCI LA TUA QUERY
 echo "<br>" . "<b>" . "il file è stato caricato con successo.";
 }
 [/PHP]
 
- 
							
							
							
							
							
perfetto funziona  grazie flaviors200 grazie flaviors200ho tolto md5 perche' me lo rinominava, questo pero' un codice per testare il funzionamento (test su un'altra tabella del database) adesso quello che vorrei fare e integrarlo nella pagina actor e da li caricare le foto, l'id lo prelevo con questo [PHP] 
 require_once("connetti.php");$actor_id = $_GET["id"]; 
 //......id prlevato tramite get: $id=_GET['id'];
 $query = mysql_query("SELECT * FROM actor WHERE actor_id=" . (int)$actor_id) or die ("Error in query: " . mysql_error());
 $row = mysql_fetch_array ($query);[/PHP] ci sono problemi pero', quando carico il file con il form rimane il messagio sullo schermo **il file è stato caricato con successo. **e se ricarico la pagina mi ricarica il file (o tenta, dato che controlla se esiste) poi, integrare l'id nel codice? altro problema, le foto risiedono in questa cartella image_upload/actor/uploads per le gallery inviduali avrei pensato a questo image_upload/actor/uploads/Lind Blair/ ---------> creazione della cartella attore prelevato dal campo nome dell'attore il risultato dovrebbe essere questo image_upload/actor/uploads/Lind Blair/linda_blair_01.jpg 
 image_upload/actor/uploads/Lind Blair/linda_blair_02.jpgquindi si dovrebbe prelevare il nome attore e creare la cartella, e poi inserirlo nella query come si ottiene questo? questa e la struttura gallery actor_id_fk e relazionato con actor_id in un'altra tabella  
 
- 
							
							
							
							
							
non capisco ho creato un nuovo campo info nel database, ma non lo inserisce  [PHP]Info: <input id="info" name="info" type="text" /">[/PHP] [PHP] 
 $filename = $_FILES["file"]["name"];
 $file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
 $file_ext = substr($filename, strripos($filename, '.')); // get file name
 $filesize = $_FILES["file"];
 $allowed_file_types = array('.doc','.docx','.rtf','.png','.jpg');
 $info = $_FILES["info"];
 [/PHP][PHP] 
 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);// QUI INSERISCI LA TUA QUERY $sql = "INSERT INTO images (file, size, info) VALUES ('$newfilename', '$filesize', '$info')"; // execute query mysqli_query($db, $sql);[/PHP] 
 
- 
							
							
							
							
							@Alex_2019 said: non capisco ho creato un nuovo campo info nel database, ma non lo inserisce  $_POST["info"] al posti di $_FILES["info"] Per quanto riguarda il discorso cartelle, in un'altra discussione ti era già stato suggerito di non utilizzare i nomi degli attori per nominare le cartelle, bensì l'id dell'attore. Ad esempio anziché image_upload/actor/uploads/Lind Blair/linda_blair_01.jpg potrebbe essere image_upload/actor/uploads/335/nome-immagine.jpg Ad ogni modo, se proprio vuoi usare il nome dell'attore/attrice come nome per la sottocartella, dovresti prima ottenere uno slug partendo dalla stringa di partenza. Dai un'occhiata a questo https://stackoverflow.com/questions/2955251/php-function-to-make-slug-url-string Ad esempio Linda Blair diventa linda-blair 
 Gérard Depardieu diventa gerard-depardieu
 
- 
							
							
							
							
							
$_POST["info"] al posti di $_FILES["info"]  la soluzione semplice era davanti ai miei occhi la soluzione semplice era davanti ai miei occhiper lo slug do una occhiata domani, con calma  resto il problema di come creare la cartella gallery per ogni attore  suggerimenti sul codice o altro :bho: grazie flaviors200 per i tuoi consigli  ho aggiustato il codice, perche' mi sono accorto che se ricaricavo la pagina mi usciva il messaggio che il file era doppio la query veniva egualmente eseguita da cosi [PHP] 
 else
 {
 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);
 // QUI INSERISCI LA TUA QUERY
 echo "<br>" . "<b>" . "il file è stato caricato con successo.";
 }
 [/PHP]a cosi [PHP] 
 else
 {// QUI INSERISCI LA TUA QUERY $sql = "INSERT INTO images (file, size, info) VALUES ('$newfilename', '$filesize', '$info')"; // execute query mysqli_query($db, $sql); move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);[/PHP] 
 
- 
							
							
							
							
							Per creare le cartelle puoi usare la funzione mkdir() di PHP [PHP] 
 <?php
 mkdir("/path/nome-cartella", 0755);
 [/PHP]Ricordati di indicare il path (percorso) relativo alla cartella. Sul discorso nome cartelle puoi anche utilizzare lo slug, ma devi salvartelo nel database, altrimenti non riesci ad associare l'attore alla sua specifica cartella. Come vedi è una soluzione più complessa e non esente da problemi. Che succede infatti nel caso di attori omonimi (ammesso che ce ne siano)? Avranno la stessa cartella! Senza dimenticare che devi aggiungerlo per ciascun attore già inserito. Ergo usa l'id attore  
 
- 
							
							
							
							
							
Ciao flaviors200, per la questione director risolvo dopo, adesso sono cominciati i problemi, fino ad ora ho usato una tabella test, adesso ho apportato modifiche al codice per caricare le foto direttamente dalla scheda attore, ottengo l'id, la foto viene spostata nella cartella ma la query non viene effettuata (credo sia sbagliata) la struttura del database e cosi tabella actor 
 collegata con
 tabella galleryactor_id (actor) 
  actor_id_fk (gallery)  tramite la relazione  questo e' il codice modificato, non capisco :bho: uploadfoto.php [PHP]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <title>title</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="description" content="" />
 <meta name="keywords" content="" />
 <meta name="robots" content="index,follow" />
 <link rel="stylesheet" type="text/css" href="styles.css" />
 </head><body> <?php 
 // Create database connection
 require_once("connetti.php");$actor_id = $_GET["id"]; 
 //......id prelevato tramite get: $id=_GET['id'];
 $query = mysql_query("SELECT * FROM actor WHERE actor_id=" . (int)$actor_id) or die ("Error in query: " . mysql_error());
 $row = mysql_fetch_array ($query);?> <form action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . $actor_id; ?>" enctype="multipart/form-data" method="post"> 
 <input id="file" name="file" type="file" />
 Inserisci la descrizione: <input type="text" name="info" size="50" maxlength="100"><p>
 <input type="reset" value="Reset" class="button-reset"/>
 <input id="Submit" name="submit" type="submit" value="Submit" />
 </form><?php // Upload and Rename File if (isset($_POST['submit'])) 
 {
 $filename = $_FILES["file"]["name"];
 $file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
 $file_ext = substr($filename, strripos($filename, '.')); // get file name
 $filesize = $_FILES["file"];
 $allowed_file_types = array('.doc','.docx','.rtf','.png','.jpg');
 $info = $_POST["info"];if (in_array($file_ext,$allowed_file_types) && ($filesize < 2000000)) { // Rename file // $newfilename = md5($file_basename) . $file_ext; con md5 viene rinominato il file $newfilename = ($file_basename) . $file_ext; if (file_exists("upload/" . $newfilename)) { // file already exists error echo "<br>" . "<font color='red'>" . "<b>" . "Attenzione! - Hai già caricato questo file." . "</font>" . "</b>"; } else { // QUI INSERISCI LA TUA QUERY fix by Alex inserire il codice prima di move_upload se no se si ricarica la pagina // inserisce il record nel database ancora $query = mysql_query ("INSERT INTO gallery=file='".$_FILES['file']."', size='".$_FILES."', info='".$_POST['info']."' WHERE actor_id_fk=". $actor_id) ; // execute query move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename); echo "<br>" . "<font color='green'>" . "<b>" . "il file" . " " .$newfilename . " " ."è stato caricato con successo. " ."</font>"; } } elseif (empty($file_basename)) { // file selection error echo "<br>" . "<b>" . "Seleziona un file da caricare." . "</b>"; } elseif ($filesize > 2000000) { // file size error echo "<br>" . "<b>" . "Il file che stai tentando di caricare è troppo grande." . "</b>"; } else { // file type error echo "<br>" . "<b>" . "Solo questi tipi di file sono consentiti per il caricamento: " . "</b>" . implode(', ',$allowed_file_types); unlink($_FILES["file"]["tmp_name"]); }} print_r($_GET) ?> <?php echo "INSERT INTO gallery=file='".$_FILES['file']."', size='".$_FILES."', info='".$_POST['info']."' WHERE id=". $actor_id ?> </body> 
 </html>
 [/PHP]
 
- 
							
							
							
							
							
 
 non riesco a capire perche' non funziona[PHP] 
 $query = mysql_query ("INSERT INTO gallery
 file='".$_FILES['file']."',
 size='".$_FILES."',
 info='".$_POST['info']."'
 WHERE actor_id_fk=". $actor_id) ;
 [/PHP]
 
- 
							
							
							
							
							Ciao Alex, scusa ma fai veramente tanta confusione  Perché invece di buttarti alla cieca non cominci a studiare un pò le basi del linguaggio  Ho capito che non è la tua professione e lo fai solo per puro hobby, ma imparando quantomeno i concetti basi di PHP eviti di fare esclusivamente copia e incolla e di impantanarti in sciocchezze che risolveresti in poco tempo. Nel codice che hai postato hai definito questa variabile [PHP] 
 $filesize = $_FILES["file"];
 [/PHP]ma poi nella query scrivi questo [PHP] 
 size='".$_FILES."'
 [/PHP]che è sbagliato. Il codice corretto è [PHP] 
 size='".$_FILES["file"]."'
 [/PHP]oppure, dato che $_FILES["file"] lo hai già salvato nella variabile $filesize, puoi scrivere direttamente [PHP] 
 size='".$filesize."'
 [/PHP]e così anche per gli altri campi. Considera che $_FILES è un array associativo, ossia un contenitore di variabili a cui puoi accedere tramite indici di tipo stringa e che contiene le informazioni sui file caricati tramite un form. Quindi, se ad esempio hai caricato il file tramite questo campo [HTML] 
 <input id="file" name="file" type="file" />
 [/HTML]lato PHP potrai accedere alle informazioni di quel file tramite $_FILES['file']. Se nel <input> mettevi name="miofile", lato PHP avresti dovuto usare $_FILES['miofile']. Andando a vedere la documentazione di PHP https://www.php.net/manual/en/features.file-upload.post-method.php si scopre che puoi accedere alle seguenti informazioni [PHP] 
 $_FILES['file']['name']
 $_FILES['file']['type']
 $_FILES['file']
 $_FILES['file']['tmp_name']
 $_FILES['file']['error']
 [/PHP]Devi quindi indicare sempre due indici, il primo rappresenta il name del tag HTML <input> da cui hai caricato il file e il secondo l'informazione a cui vuoi accedere (name, type, size, etc...). Se ti interessa ho pubblicato di recente un sito di nome Guida PHP, che raccoglie una serie di guide e tutorial sul PHP per principianti e non. Se ti va dacci un occhio  
 
- 
							
							
							
							
							
Ciao Flavio, 
 e si, mi riesce meglio il mio lavoro, ma il php e' diventato una fissa , ho ancora molto da imparare, sono un principante, dunque ho cambiato la query, risultato zero, non funziona [PHP] 
 $query = mysql_query ("INSERT INTO gallery
 file='".$_FILES["file"]["name"]."',
 size='".$_FILES["file"]."',
 info='".$_POST['info']."'
 WHERE actor_id_fk=". $actor_id) ;[/PHP] graze per l'info del tuo sito 
 
- 
							
							
							
							
							
qualcosa mi sfugge, non riesco a capire dopo l'esecuzione della query ricevo questo Attenzione! Dati non inseriti! **il file Blair, Linda (I)#[7].jpg è stato caricato con successo. **Array ( [id] => 54 ) INSERT INTO gallery=file='Array', size='', info='imdb' WHERE id=54 provato con altra query semplficata, non funziona :bho: [PHP] 
 $query = mysql_query ("INSERT INTO gallery
 name='".$filename."',
 size='".$filesize."',
 info='".$info."'
 WHERE actor_id_fk=". $actor_id) ;[/PHP] ho rinominato un campo nel database, da file a name per non confondermi  
 
- 
							
							
							
							
							
hai provato: 'INSERT INTO `gallery`(name, size, info).... VALUES("'.$filename.'","'.$filesize.'","'.$info.'")....
 
- 
							
							
							
							
							
oppure 'INSERT INTO `gallery`(name, size, info).... VALUES('.$filename.','.$filesize.','.$info.')....
 
- 
							
							
							
							
							
Ciao chiabgigi, ho provato ma non funziona, penso che l'errore sia qui  **Array ( [id] => 54 ) INSERT INTO gallery=file='Array', size='', info='imdb' WHERE id=54 WHERE id=54** 
 dovrebbe essere **
 WHERE actor_id_fk=54**
 
- 
							
							
							
							
							Quando qualcosa non funziona, posta pure l'errore. Non quello dell'applicazione (Es. dati non inseriti) ma quello che ti segnala l'interprete PHP (Es. PHP Fatal error: o PHP Warning). Magari quando finisci quest'applicazione, prova a passare a MySQLi o meglio ancora a PDO per gestire le operazioni su database  Le funzioni native mysql_* sono morte e sepolte da tempo. 
 
- 
							
							
							
							
							
ciao Alex 
 quindi per facilitare il tuo lavoro e in nostro 'aiuto' dovresti anche pubblicare il motivo del malfunzionamento.
 Una cosa tipo.....
 https://drive.google.com/file/d/1uhUrxoW8EY685SHK-oBotQJ_S2u6DN90/view?usp=sharing
 
- 
							
							
							
							
							
Ciao, 
 non visualizzo nessen errore, semplicemente la query non viene eseguita, ma le foto vengono spostate nella cartella preimpostata,
 quando ho incominciato il mio progetto sono partito con il MySQL, passare a MySQLi significa controllare e modificare tutto il codice, un'impresa per me,
 ripeto non sono un programmatore , il mio lavoro e tutta'altro (li sono professionale) solo hobby e voglia d'imparare, questo progetto non sara' mai messo online, solo per uso personale, quindi non mi pongo il problema sulla sicurezza, login ecc..
 Forse in futuro quando saro' abbastanza bravo provero' con il MySQLi e il PDO.Ciao, leggi sopra ps: mi dovro' rassegnare e inserire i dati da phpmyadmin  
 
- 
							
							
							
							
							
@Alex 
 per favore mi dici quali programmi stai usando?
 
- 
							
							
							
							
							
 
- 
							
							
							
							
							
entrambi 
 comunque accedi al tuo php.ini e vedi cosa corrisponde a queste voci:
 error_reporting
 display_errors
 display_startup_errors
 log_errors
 ignore_repeated_errors
 html_errors