Inserire immagini in un database

Area dedicata al linguaggio HTML. Nozioni di base,esempi,script,programmazione
Rispondi
Avatar utente
eniac
PhpBB Expert
PhpBB Expert
Messaggi: 760
Iscritto il: 18/07/2013, 19:14
Link del Forum: Http://www.cesimmunizioni.eu/forum
Località: Abruzzo
Contatta:

Re: Inserire immagini in un database

Messaggio da eniac »

Vediamo se ho capito , inserisco nella pagina il codice che mi genera la variabile di ricerca da inserire nella query , quindi quando avvio la pagina relativa al database mi trovo che la lista viene visualizzata tutta intera ed ho una tabella (adesso mi appare in fondo alla pagina ma poi vedo di metterla in alto) dove inserire il valore da cercare se voglio fare una ricerca selettiva , ho visto che il codice della form è strutturato in modo che quando si clicca su "inserisci" viene richiamata una pagina PHP quindi facevo richiamare la stessa pagina in modo che quando riesegue la query trova la variabile la imposta nella query e mi rende il risultato voluto , ma non mi funziona quindi qualcosa non va bene, allora ho pensato di mettere nel codice 2 query, una fissa che mi visualizza tutti i record quando si avvia la prima volta , ed la seconda che si attiva quando inserisco la variabile di ricerca, siccome vengo dal BASIC stavo cercando se in html ci fosse una funzione tipo GOTO del basic in modo da indirizzare il codice ad eseguire la seconda query piu che la prima ma non ho trovato nulla ancora a riguardo



EDIT: forse ho trovato...vediamo se fa al mio caso e riesco ad implementarla
Cattura.PNG
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
phpBB version : 3.3.11
php version : 8.2.16
Avatar utente
Micogian
Globalmod
Globalmod
Messaggi: 588
Iscritto il: 17/03/2016, 17:53
Link del Forum: https://www.actaplantarum.org

Re: Inserire immagini in un database

Messaggio da Micogian »

Vediamo di capirci, un conto è la pagina che visualizza il contenuto del database, altra cosa è la pagina che inserisce o modifica i dati.
La mia proposta riguardava la pagina di visualizzazione, In alto la tabella con le immagini e i dati del record selezionato, in basso l'elenco dei records che se sono troppi vanno ridotti separandoli in Categorie o in più pagine.
La visualizzazione non avviene in base alla variabile $calibro ma alla variabile $id_calibro che dovrai aggiungere alla tabella come campo automatico e univoco. Praticamente ogni record ha un ID diverso.
Cliccando su un record della Lista si aggiorna la tabella delle immagini relative all'ID selezionato. Questa è la soluzione migliore, poi la separazione in categorie dovrebbe servire a visualizzare liste ridotte ma il principio testa.
Praticamente è come nell'indice del Forum, tu hai una lista di topics, puoi cambiare pagina per visualizzare altri topics, ma se clicchi su un topic della lista si apre il topic selezionato utilizzando $topic_id, non il titolo o altro, praticamente ".../viewtopic.php?t=xxxx"
Nel tuo caso sarà "../munizioni.php?id=xxx".

Per l'inserimento puoi fare una pagina dove visualizzi l'attuale contenuto del DB con la possibilità di modificare un record eventualmente sbagliato o incompleto, sempre tenendo presente l'ID da modificare e la possibilità di aggiungere un nuovo record alla tabella.
Avrai quindi una pagina "munizioni.php" che visualizza i dati e una "manut_munizioni" alla quale devi decidere chi può accedere, che serve per lamanutenzione del database. Si potrebbe fare tutto in una sola pagina ma è più complicato.
Avatar utente
eniac
PhpBB Expert
PhpBB Expert
Messaggi: 760
Iscritto il: 18/07/2013, 19:14
Link del Forum: Http://www.cesimmunizioni.eu/forum
Località: Abruzzo
Contatta:

Re: Inserire immagini in un database

Messaggio da eniac »

Fatto, in maniera un po diversa ma sembra che funziona , ora è del tutto grezzo ma il resto non è complicato , poi oggi pomeriggio rivedo l'inserimento seguendo le tue direttive. :clapi:
Se ci vuoi buttare un'occhiata una preview è qui Https://munizioni.altervista.org/data1
phpBB version : 3.3.11
php version : 8.2.16
Avatar utente
Micogian
Globalmod
Globalmod
Messaggi: 588
Iscritto il: 17/03/2016, 17:53
Link del Forum: https://www.actaplantarum.org

Re: Inserire immagini in un database

Messaggio da Micogian »

Funziona ma non era questo che avevo detto.
Io avrei preferito che ci fosse un solo riquadro con le immagini e i dati del record richiesto, meglio se posizionato in alto, mentre sotto una lista delle cartucce, senza immagini, una semplice lista di testo.
Il motivo è questo: cosa succederà quando nel database avrai centinaia se non migliaia di records ? Avrai una lista lunghissima e poco praticabile, senza contare che migliaia di foto ti creano problemi di apertura della pagina.
Hai una Lista, clicchi su una riga della lista e vedi le immagini e i dati particolareggiati del record selezionato. Non serve aprire una pagina diversa, si deve aggiornare la tabella selezionando qualcosa di concreto, non un modulo dove non so cosa scrivere perchè non so se nel database c'è scritto "6,5x52" o "6,5 x 52" ? Se non trovo la corrispondenza esatta non vedrò nulla, se seleziono un record visualizzo quel record.
L'alternativa è un Select dove si visualizza l'elenco dei calibri e ne devo selezionare uno. In questo modo non mi serve la lista perchè la lista è inserita nel select.
Comunque il tutto in una sola pagina, non devo aprire una pagina per tornare indietro per visualizzare un'altra.
Non voglio fare il bastian contrario, io ti dico solo quello che sarebbe meglio fare dal punto di vista tecnico, poi se preferisci visualizzare una lista dove l'utente posso scorrere e cliccare su quello che gli interessa oppure visualizzare la lista in una tendina a scorrimento è una scelta tua.
La pagina col select è più contenuta, si visualizza il select per la selezione e la tabella del risultato, nella lista dei calibri hai la possibilità di scorreere meglio il contenuto e selezionare quello che interessa. Un Select con ricerca libera è facile che non ti dia nessun risultato e l'utente non lo userà.
Avatar utente
eniac
PhpBB Expert
PhpBB Expert
Messaggi: 760
Iscritto il: 18/07/2013, 19:14
Link del Forum: Http://www.cesimmunizioni.eu/forum
Località: Abruzzo
Contatta:

Re: Inserire immagini in un database

Messaggio da eniac »

lo so Micogian, riflettendo su quanto dici sopra è giustissimo, non avevo pensato che la prima pagina dovrà in futuro caricare tutto il database, e considerando che solo della mia collezione devo inserire quasi 4000 record diventa improponibile, il problema è che non sono sicuro che le mie cognizioni siano sufficienti per fare quello che dici, parlare di SELECT a te sembra facile ma io devo misurarmi con le mie possibilità . Comunque intendo provarci , vediamo se ho ben capito, in pratica dovrei fare la prima pagina come quella che mi hai linkato qualche post fa, https://www.actaplantarum.org/schede/schede.php cosi evito che gli utenti non debbano beccare esattamente la dicitura esatta per la query, ed evito di caricare tutto il database dall'inizio..
phpBB version : 3.3.11
php version : 8.2.16
Avatar utente
Micogian
Globalmod
Globalmod
Messaggi: 588
Iscritto il: 17/03/2016, 17:53
Link del Forum: https://www.actaplantarum.org

Re: Inserire immagini in un database

Messaggio da Micogian »

Per Select io intendo il modulo di selezione, quello che nella mia pagina si chiama "Famiglia". Se clicchi sul modulo si apre la Lista delle Famiglie che puoi selezionare, selezionando una famiglia la lista cambierà visualizzando le schede di quella Famiglia. Anche i tasti alfabetici sono una possibilità di scelta, Potresti usare una cosa del genere mettendo, al posto delle lettere, una suddivisione per Calibro, quindi avresti 2 possibilità, prima selezioni il "calibro da ...a" e il Select "Calibro" (quello che nella mia pagina si chiama "Famiglia" avrebbe meno records e quindi più facile da utilizzare,
Il risultato sarebbe una lista (senza immagini dei Calibri che rispecchiano la scelta e se clicchi su un record della lista si aggiorna la tabella con foto e dati di quel record. Teoricamente se usi il Select non servirebbe nemmeno la lista ma bisogna fare in modo che i dati nella tendina a scorrimento non siano una marea, ecco il perchè della suddivisione in Categorie.
Ovviamente per fare questo ti servono 2 query, una che estrae la lista da mettere nel select e una per estrare i dati da mettere nella tabella, immagini e dati.

Poi, secondo me, dovresti creare una cartella "include" e metterci un paio di file php che ti dirò e che servono uno per la connessione e uno per crearev una function che unifica le variabili GET e POST come avviene in PHPBB con "request_var()" e non con $_GET o $_POST
Avatar utente
Micogian
Globalmod
Globalmod
Messaggi: 588
Iscritto il: 17/03/2016, 17:53
Link del Forum: https://www.actaplantarum.org

Re: Inserire immagini in un database

Messaggio da Micogian »

Dovresti creare una cartella "include" e dentro la cartella ci metti questi 2 file:

my_connect.php

Codice: Seleziona tutto

<?php
//	Database Settings
global $DBhost;
global $DBuser;
global $DBpass;
global $DBname;

$DBhost	= "localhost";	
$DBuser	= "root";
$DBpass = "";
$DBname	= "Archivio";
?>
my_functions.php

Codice: Seleziona tutto

<?php
function request_var($string, $default)
{
  if (isset($_GET[$string])) return $_GET[$string];
  if (isset($_POST[$string])) return $_POST[$string];
  else return $default;
}
?>
In questo modo metterai nella tua pagina

Codice: Seleziona tutto

include("./include/my_connect.php");
include("./include/my_functions.php");
Con la prima elimini il codice di connessione al database e con la seconda elimini le variabili GET e POST che diventeranno

Codice: Seleziona tutto

$id_calibro   =  request_var('id'; 1);
L'url alla pagina diventerà

Codice: Seleziona tutto

..../munizioni.php?id=5
La pagina elabora l'id_calibro=5, se non è indicato l'id verra considerato id_calibro=1 come predefinito.
Avatar utente
eniac
PhpBB Expert
PhpBB Expert
Messaggi: 760
Iscritto il: 18/07/2013, 19:14
Link del Forum: Http://www.cesimmunizioni.eu/forum
Località: Abruzzo
Contatta:

Re: Inserire immagini in un database

Messaggio da eniac »

quindi ricapitolando, intanto devo creare nel database un campo che si chiama Id_calibro che abbia un valore numerico ed ogni numero corrisponde ad un calibro, quindi ad Es. Id_calibro=1 identifica tutti i calibri 8x57 Id_calibro=2 invece per 7,62x54 e via dicendo giusto cosi ?
phpBB version : 3.3.11
php version : 8.2.16
Avatar utente
eniac
PhpBB Expert
PhpBB Expert
Messaggi: 760
Iscritto il: 18/07/2013, 19:14
Link del Forum: Http://www.cesimmunizioni.eu/forum
Località: Abruzzo
Contatta:

Re: Inserire immagini in un database

Messaggio da eniac »

Allora ho fatto quasi tutto quello che mi hai detto, e funziona , fino ad ora funziona ma non mi è chiaro dove devo andare ad inserire la voce

Codice: Seleziona tutto

$id_calibro   =  request_var('id'; 1);
quindi per adesso la pagina è cosi , e continua ovviamente a visualizzarmi tutto il database

Codice: Seleziona tutto

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>Cesim Database</title>
		<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
		<link rel='stylesheet' href='stile.css' type='text/css' media='all' />
		 
	
		<header class="site-header">
		
			<div class="header-fixed">
				<h1>
					<img src="image/logo1.png" </a>
				
				</h1>
				
			</div>

			<div class="header-relative"></div>
			
		</header>

		<div class="site-content">
		
		</div>
		<p><strong><center><font size="5"><font color="blue">Database online del CeSIM</font></center></p>
		

<?php
include("./include/my_connect.php");
include("./include/my_functions.php");

//  Query


$query = "SELECT * FROM munizioni  ORDER by Calibro ";
$result = mysqli_query($link, $query);
$i = 0;
while($row=mysqli_fetch_array($result))
{
	$Bossolo[$i]       		=  $row['Bossolo'] ;
	$Calibro[$i]       	=  $row['Calibro'] ;
	$Nazione[$i]      	=  $row['Nazione'] ;
	$Produttore[$i]     =  $row['Produttore'] ;
	$Anno[$i]      		=  $row['Anno'] ;
	$Modello[$i]      		=  $row['Modello'] ;
	$Fondello[$i]     	=  $row['Fondello'] ;
	$Note[$i]     	=  $row['Note'] ;
	$Cartuccia[$i]     	=  $row['Cartuccia'] ;
	$id_calibro[$i]     =$row['id_calibro'] ;
		
		++$i;
}
mysqli_close($link);

?>

</head>
<body>

</table>
	 
	 <table style="with: 50%;" border="1" bgcolor="#ffffff" 
      
	  	 <?php
	 for ($x=0; $x < $i; ++$x)
	 {
	 ?>
	
		<tr>
		
			
			<td style='width:15%; text-align: center;'>
				<img src='./immagini/<?=$Fondello[$x]?>' width='150' alt='immagine ' >
				</td>
				<td>
				<img src='./immagini/<?=$Cartuccia[$x]?>' width='450' alt='immagine ' >
			</td>
			
						<td style='width:65%;'><font size="2">
			   &emsp;&emsp; Calibro = <strong><font color="red"><?=$Calibro[$x]?></font></strong><br><br>
				&emsp;&emsp; Nazione = <strong><?=$Nazione[$x]?></strong>
				&emsp;&emsp; Produttore = <strong><?=$Produttore[$x]?></strong><br><br>
				&emsp;&emsp; Anno = <strong><?=$Anno[$x]?></strong>&emsp;&emsp;&emsp;
				&emsp;&emsp; Modello = <strong><?=$Modello[$x]?></strong>&emsp;&emsp;
				&emsp;&emsp; Bossolo = <strong><?=$Bossolo[$x]?></strong>
				&emsp;&emsp; id_calibro = <strong><?=$id_calibro[$x]?></strong><br><br>
				&emsp;&emsp; Note = <strong><?=$Note[$x]?></strong>
			</td>
			
		</tr>
		
	<?php
	 }
	 ?>
</table>
 
</body>
<script>   <!-- blocco tasto destro del mouse -->
  function blocco_mousedx()
   { return(false); }
  document.oncontextmenu = blocco_mousedx;
</script>
</html



phpBB version : 3.3.11
php version : 8.2.16
Avatar utente
Micogian
Globalmod
Globalmod
Messaggi: 588
Iscritto il: 17/03/2016, 17:53
Link del Forum: https://www.actaplantarum.org

Re: Inserire immagini in un database

Messaggio da Micogian »

No, ogni record deve avere un numero diverso, non ha importanza l'ordine, quello che conta è che ogni record abbia un ID univoco.
In phpmyadmin lo puoi creare, è un campo numerico fatto così:
struttura_tabella.jpg
Poi, se vuoi separare i gruppi, secondo me è indispensabile, devi creare un campo "Categoria", può essere numerico o text che serva a separare i Calibri, poi ad ogni calibro assegni questa Categoria. Serve per poter selezionare la Categoria che mostrerà solo i Calibri ad esso associati.
Dividi per misura o come ti pare ma devi poter scegliere un numero accettabile di records da inserire nella Lista o nel Select.

La riga "request_var('id'; 1);" la metti subito dopo gli include, serve per stabilire qual'è l'id_calibro da elaborare.
Puoi anche chiamarlo "id_cal" (devi cambiare il nome anche nel database e devi anche creare il campo "cat" che corrisponde alla categoria.
In pratica sono le variabili iniziali:

Codice: Seleziona tutto

$id_cal   =  request_var('id'; 1);
$cat_cor       =  request_var('cat; 1);
Praticamente l'url sarà

Codice: Seleziona tutto

www....../munizioni.php?id=12&cat=5
che elabora la lista dei calibri della categoria 5 e visualizza il calibro che ha id=12

poi dovrai fare 2 query,una per creare l'elenco dei calibri della categoria indicate e quello lo fai così:

Codice: Seleziona tutto

$query = "SELECT * FROM munizioni  
WHERE cat = " . $cat_cor . "
ORDER by Calibro ";
La query per il record selezionato sarà

Codice: Seleziona tutto

$query1 = "SELECT * FROM munizioni  
WHERE id_cal = " . $id_cal ;
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Rispondi