PHP/MYSQL + Inserimento automatico dati

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
43
Massa, Italy
Salve, come posso fare un inserimento automatico che mi inserisca tutto il contenuto di una cartella nell'archivio dati?

vi allego il codice per adesso come faccio ad inserire le foto in manuale (una alla volta).. ora vorrei avere un sistema che io seleziona la categoria
che voglio e lui dopo inserisce da solo alcuni dati che dopo io con comodo modifico.

vorrei inserire automatico :
url <- Il nome della foto --> gatto.jpg
titolo <- presa dal nome file della foto --> gatto.jpg
active <-- 1
data <- presa automatica.

ecco il codice manuale:


PHP:
<?php
// Includo 
require_once(dirname(__FILE__) . '/../inc.php');
require_once(dirname(__FILE__) . '/admin.php');
require_once(dirname(__FILE__) . "/../template/".$template_admin."/header.php");

	$_cat = (isset($_GET["cat"])) ? trim ($_GET["cat"]): '';
	$pieces = explode("|", addslashes($_cat)); 
	$_url = (isset($_POST["_url"])) ? trim ($_POST["_url"]): '';
if(isset($_POST["invia"]))
{
	$pieces = explode("|", addslashes($_POST["cat"]));
	//$user = (isset($_POST["user"])) ? trim ($_POST["user"]): '';
	$user_id = (isset($_POST["user_id"])) ? trim ($_POST["user_id"]): '';
    $titolo = (isset($_POST["titolo"])) ? trim ($_POST["titolo"]): '';
    $testo = (isset($_POST["testo"])) ? trim ($_POST["testo"]): '';
   $data = (isset($_POST["data"])) ? trim ($_POST["data"]): '';
	$tag = (isset($_POST["tag"])) ? trim ($_POST["tag"]): '';
	$_url = (isset($_POST["_url"])) ? trim ($_POST["_url"]): '';
    $_active = (isset($_POST["_active"])) ? trim ($_POST["_active"]): '';
	// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
	if (!get_magic_quotes_gpc()) {
		//$user = addslashes($user);
		$user_id = addslashes($user_id);
 		$titolo = addslashes($titolo);
		
          $_url = addslashes($_url);
		$testo = addslashes($testo);
	     $data = addslashes($data);
		$tag = addslashes($tag);
        $_active = addslashes($_active);
		
	}
	/*if(empty($user))
	$error = "Non hai inserito l'username";
	/*/
	if(empty($_url))
	$error = "Non hai inserito il _url";
	
	elseif(empty($titolo))
	$error = "Non hai inserito il titolo";
	elseif($_POST["cat"] == "")
	$error = "Non hai inserito la categoria";
	elseif(empty($testo))
	$error = "Non hai inserito il testo";
		elseif(empty($data))
	$error = "Non hai inserito la data";
	elseif(empty($_active))
	$error = "Non hai inserito lo stato";
 	else
	{
	
		$strSQL = "INSERT INTO foto(_userid,";
		$strSQL.="_catid,";
		$strSQL.="_dir,";
		$strSQL.="titolo,";                               
		$strSQL.="testo,";
		$strSQL.="url,";
		$strSQL.="tag,";
		$strSQL.="data,";
		$strSQL.="active)";
		$strSQL.= "VALUES('".$user_id."',";
		$strSQL.="'".$pieces[0]."',";
		$strSQL.="'".$pieces[1]."',";
		$strSQL.="'".$titolo."',";
		$strSQL.="'".$testo."',";
		$strSQL.="'".$_url."',";
		$strSQL.="'".$tag."',";
		$strSQL.="'".$data."',";
		$strSQL.="".$_active.")";
		$db->query($strSQL) or die($db->error);
        $db->close();
		$msg = "fatto";
		}
	}
?>

<p class="titolo">Aggiungi Foto</p>
<?php
 if(isset($error)){ echo $error;}
if(isset($msg)){ echo $msg;} else {
?>
	<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>?cat=<?php echo "".$pieces[0]."|".$pieces[1].""; ?>">



<table width="100%" align="center">
<tr>
	<td>User</td>
	<td><input name="user" type="text" id="user" readonly  value="<?php if(isset($_POST['user'])){echo $_POST['user'];}else { echo get_username($_SESSION["user_crypt"]);  }?>"/></td>
</tr>

<tr>
	<td>User ID</td>
	<td><input name="user_id" type="text" id="user_id" readonly  value="<?php if(isset($_POST['user_id'])){echo $_POST['user_id'];}else { echo get_userID($_SESSION["user_crypt"]);  }?>"/></td>
</tr><tr>
      <td>Seleziona Categoria</td>
      <td><?php echo "<select onchange=\"document.location.href = '" . $_SERVER['PHP_SELF'] . "?cat=' + this.value;\" name=\"cat\">";?>

        <option  selected="selected" value="">Seleziona</option>
        <?php
	$result = $db->query("SELECT * FROM foto_categorie");
	
	while($row = $result->fetch_array())
	{
	$_cat= $row['titolo'];
	$id = $row['id'];
  ?>
        <option value="<?php echo $id; ?>|<?php echo $_cat; ?>"<?php if($pieces[0]=="".$id."") echo 'selected'?> ><?php echo $_cat; ?></option>
        <?php
  }
?>
      </select></td>
    </tr>
<tr><tr>
    <td>Seleziona Foto</td>
    
    <td>
        <?php
		$images = array();
        if (isset($_GET['cat'])) {
           
            $pieces = explode('|', addslashes($_GET['cat']));

            $dir = "../public/media/photo/".$pieces[1]."/img_thumb/";

            if (is_dir($dir) && is_readable($dir)) {
                $files = glob("{$dir}/*");

                foreach ($files as $fname) {
                    if (
                        $fname == '.' ||
                        $fname == '..' ||
                        $fname == basename($_SERVER['PHP_SELF'])
                    ) {
                        continue;
                    }

                    if (is_dir($fname)) {
                        $images[basename($fname)] = "(Dir) {$fname}";
                    }
                    else {
                        $images[basename($fname)] = $fname;
                    }
                }
            }
        }

        echo "<select name=\"_url\">\n";
        
        foreach ($images as $display_name => $fname) {
            ?><option value="<?php echo $display_name; ?>"<?php if($display_name=="".$_url."") echo 'selected'?> ><?php echo $display_name; ?></option>
        <?php
		}
        
        echo "</select>\n";
        ?>
    </td>
</tr>
	<tr>
	<td>Titolo</td>
	<td><input name="titolo" type="text" id="titolo"  value="<?php if(isset($_POST['titolo'])){echo $_POST['titolo'];}else { echo isset($titolo); }?>" size="40"  /></td>
</tr>
<tr>
	<td>Testo</td>
	<td><textarea cols="50" rows="10" name="testo"><?php if(isset($_POST['testo'])){echo $_POST['testo'];}else { echo isset($testo); }?></textarea></td>
</tr>

<tr>
	<td>Data</td>
	<td><input name="data" type="text" id="data"  value="<?php if(isset($_POST['data'])){echo $_POST['data'];}else { echo  "".date("d-m-Y").""; }?>"  /></td>
</tr><tr>
	<td>tag</td>
	<td><input name="tag" type="text" id="tag"  value="<?php if(isset($_POST['tag'])){echo $_POST['tag'];}else { echo isset($tag); }?>"  /></td>
</tr>
<tr>
	<td>Stato di attivazione</td>
	<td><input name="_active" type="text" id="_active"  value="<?php if(isset($_POST['_active'])){echo $_POST['_active'];}?>"  /></td>
</tr>
<tr>
	<td></td>
	<td></td>
</tr>
</table>
<input type="submit" value="Aggiungi Foto" name="invia" />&nbsp;<input type="reset" value="Annulla Modifiche">
	</form>
	<?php 
	}?><?php
require_once(dirname(__FILE__) . "/../template/".$template_admin."/footer.php");
?>

grazie mille.
 
ciao, ho fatto cosi.. solo che mi inserisce tutti in un campo solo
in questo modo: Acquario.JPGAffresco particolare.jpgBecaccino 2.jpgGatto.jpg
invece di creare ogni file una nuova riga nel database.
ecco il codice scritto un pò a caso.

PHP:
<?php
// Includo 
require_once(dirname(__FILE__) . '/../inc.php');
require_once(dirname(__FILE__) . '/admin.php');
require_once(dirname(__FILE__) . "/../template/".$template_admin."/header.php");
	global $thelist;
	$_cat = (isset($_GET["cat"])) ? trim ($_GET["cat"]): '';
	$pieces = explode("|", addslashes($_cat)); 
	$_url = (isset($_POST["_url"])) ? trim ($_POST["_url"]): '';
if(isset($_POST["invia"]))
{ 
    
	$pieces = explode("|", addslashes($_POST["cat"]));
	//$user = (isset($_POST["user"])) ? trim ($_POST["user"]): '';
	$user_id = (isset($_POST["user_id"])) ? trim ($_POST["user_id"]): '';
    $titolo = (isset($_POST["titolo"])) ? trim ($_POST["titolo"]): '';
    $testo = (isset($_POST["testo"])) ? trim ($_POST["testo"]): '';
   $data = date("d-m-Y");
	$tag = (isset($_POST["tag"])) ? trim ($_POST["tag"]): '';
	//$thelist = (isset($_POST["_url"])) ? trim ($_POST["_url"]): '';
    $_active = (isset($_POST["_active"])) ? trim ($_POST["_active"]): '';
	// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
	if (!get_magic_quotes_gpc()) {
		//$user = addslashes($user);
		$user_id = addslashes($user_id);
 		$titolo = addslashes($titolo);
		
          $thelist = addslashes($thelist);
		$testo = addslashes($testo);
	     $data = addslashes($data);
		$tag = addslashes($tag);
        $_active = addslashes($_active);
		
	}
		if(empty($_GET["cat"]))
{

}else
{

	 if ($handle = opendir('../public/media/photo/'.$pieces[1].'/img_thumb/')) {
	 
		   while (false !== ($file = readdir($handle)))
			  {
				  if ($file != "." && $file != "..")
			  {
					
					$thelist .= ''.$file.'';
					
					
		$pieces = explode("|", addslashes($_POST["cat"]));
		$strSQL = "INSERT INTO foto(_userid,";
		$strSQL.="_catid,";
		$strSQL.="_dir,";
		$strSQL.="titolo,";
		$strSQL.="testo,";
		$strSQL.="url,";
		$strSQL.="tag,";
		$strSQL.="data,";
		$strSQL.="active)";
		$strSQL.= "VALUES('".$user_id."',";
		$strSQL.="'".$pieces[0]."',";
		$strSQL.="'".$pieces[1]."',";
		$strSQL.="'".$thelist."',";
		$strSQL.="'- Nessuna descrizione -',";
		$strSQL.="'".$thelist."',";
		$strSQL.="'',";
		$strSQL.="'".$data."',";
		$strSQL.="1)";
		
				  }
			   }
		  closedir($handle);
	}
	$db->query($strSQL) or die($db->error);
        $db->close();
		$msg = "fatto";
		echo $strSQL;
}
	
}


?>
<p class="titolo">Aggiungi Foto</p>
<?php
 if(isset($error)){ echo $error;}
if(isset($msg)){ echo $msg;} else {
?>
	<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>?cat=<?php echo "".$pieces[0]."|".$pieces[1].""; ?>">

<table width="100%" align="center">
<tr>
	<td></td>
	<td><input name="user_id" type="hidden" id="user_id" readonly  value="<?php if(isset($_POST['user_id'])){echo $_POST['user_id'];}else { echo get_userID($_SESSION["user_crypt"]); }?>"  /></td>
</tr>
<tr>
      <td>Seleziona Categoria</td>
      <td><?php echo "<select onchange=\"document.location.href = '" . $_SERVER['PHP_SELF'] . "?cat=' + this.value;\" name=\"cat\">";?>

        <option  selected="selected" value="">Seleziona</option>
        <?php
	$result = $db->query("SELECT * FROM foto_categorie");
	
	while($row = $result->fetch_array())
	{
	$_cat= $row['titolo'];
	$id = $row['id'];
  ?>
        <option value="<?php echo $id; ?>|<?php echo $_cat; ?>"<?php if($pieces[0]=="".$id."") echo 'selected'?> ><?php echo $_cat; ?></option>
        <?php
  }
?>
      </select></td>
    </tr>
	</table>
<?php

?></table>
		<input type="submit" value="Aggiungi Foto" name="invia" />&nbsp;<input type="reset" value="Annulla Modifiche">
	</form><?php
	echo "".$thelist."<br>"; ?>
<?php
}
require_once(dirname(__FILE__) . "/../template/".$template_admin."/footer.php");
?>

Mi dite come risolvere il problema?

grazie mille e buon natale.

ciao.
 
ciao
vorrei sapere: è qui che leggi i nomi delle immagini che poi metterai nel campo che chiami url?
$thelist .= ''.$file.'';

dato che leggi i nomi dei file avendo messo .= se al primo giro del while il file è Acquario.JPG
in $thelist ti trovi Acquario.JPG
se al secondo il file è Affresco particolare.jpg
in in $thelist ti trovi Acquario.JPGAffresco particolare.jpg
ecc...
se è così prova toglere il punto di concatenamento
$thelist = ''.$file.'';

p.s.
nessuno??
sa come risolvere i problema?
io non so se lo so risolvere, ma penso che gli esperti, ieri e l'altro ieri stavano ingurgitando torroni ecc.. e oggi... bicarbonato
 
ciao, ho fatto cosi come mi hai detto ma non serviva nemmeno quella variabile ma serviva solo $file

per adesso me la inserisce solo una ed invece nella cartella c'è ne sono 3.

vedi codice:
PHP:
     if(empty($_GET["cat"]))
{

}else
{

     if ($handle = opendir('../public/media/photo/'.$pieces[1].'/img_thumb/')) {
     
           while (false !== ($file = readdir($handle)))
              {
                  if ($file != "." && $file != "..")
              {
                    
                   
                    
                    
        $pieces = explode("|", addslashes($_POST["cat"]));
        $strSQL = "INSERT INTO foto(_userid,";
        $strSQL.="_catid,";
        $strSQL.="_dir,";
        $strSQL.="titolo,";
        $strSQL.="testo,";
        $strSQL.="url,";
        $strSQL.="tag,";
        $strSQL.="data,";
        $strSQL.="active)";
        $strSQL.= "VALUES('".$user_id."',";
        $strSQL.="'".$pieces[0]."',";
        $strSQL.="'".$pieces[1]."',";
        $strSQL.="'".$file."',";
        $strSQL.="'- Nessuna descrizione -',";
        $strSQL.="'".$file."',";
        $strSQL.="'',";
        $strSQL.="'".$data."',";
        $strSQL.="1)";
        
                  }
               }
          closedir($handle);
    }
    $db->query($strSQL) or die($db->error);
        $db->close();
        $msg = "fatto";
        echo $strSQL;
}
    
}

mi scuso per prima .. ma avevo fretta .. e ti ringrazio molto e buon anno nuovo.

mi dici come fare ?

Perché sto riscrivendo un sito vecchio che avevo fatto in asp net e lo sto creando tutto in php
grazie mille.
 
Ultima modifica:
ciao
se non ho capito male devi leggere nella cartella xy se ci sono delle immagini e se si inserire il nome dell'immagine nel db, giusto?
se è così dai un occhio alla funzione glob() per ricavare i nomi dei file è comodissima
 
ciao, si è cosi..

ma la cosa strana faccendo altri test..

l'ultimo codice ora e questo:
PHP:
   if(empty($_GET["cat"]))
{

}else
{

	
$dir = "../public/media/photo/".$pieces[1]."/img_thumb/"; //You could add a $_GET to change the directory
$files = scandir($dir);
foreach($files as $key => $file){


		
		$pieces = explode("|", addslashes($_POST["cat"]));
        $strSQL = "INSERT INTO foto(_userid,";
        $strSQL.="_catid,";
        $strSQL.="_dir,";
        $strSQL.="titolo,";
        $strSQL.="testo,";
        $strSQL.="url,";
        $strSQL.="tag,";
        $strSQL.="data,";
        $strSQL.="active)";
        $strSQL.= "VALUES('".$user_id."',";
        $strSQL.="'".$pieces[0]."',";
        $strSQL.="'".$pieces[1]."',";
        $strSQL.="'".$file."',";
        $strSQL.="'- Nessuna descrizione -',";
        $strSQL.="'".$file."',";
        $strSQL.="'',";
        $strSQL.="'".$data."',";
        $strSQL.="1)";
		
		//$db->query($strSQL) or die($db->error);
		
       
        //$db->close();
		$msg = "fatto";
        echo $strSQL;
		}
}
e mi si stampa la query e qui tutto ok e i nomi ci sono tutti in 3 rige e 3 file:
Codice:
INSERT INTO foto(_userid,_catid,_dir,titolo,testo,url,tag,data,active)VALUES('1','1','Scaglie di marmo','.','- Nessuna descrizione -','.','','27-12-2011',1)INSERT INTO foto(_userid,_catid,_dir,titolo,testo,url,tag,data,active)VALUES('1','1','Scaglie di marmo','..','- Nessuna descrizione -','..','','27-12-2011',1)INSERT INTO foto(_userid,_catid,_dir,titolo,testo,url,tag,data,active)VALUES('1','1','Scaglie di marmo','Acquario.JPG','- Nessuna descrizione -','Acquario.JPG','','27-12-2011',1)INSERT INTO foto(_userid,_catid,_dir,titolo,testo,url,tag,data,active)VALUES('1','1','Scaglie di marmo','Affresco particolare.jpg','- Nessuna descrizione -','Affresco particolare.jpg','','27-12-2011',1)INSERT INTO foto(_userid,_catid,_dir,titolo,testo,url,tag,data,active)VALUES('1','1','Scaglie di marmo','Becaccino 2.jpg','- Nessuna descrizione -','Becaccino 2.jpg','','27-12-2011',1)

però se inserisco :
PHP:
$db->query($strSQL) or die($db->error);
		
       
        $db->close();
		$msg = "fatto";
        echo $strSQL;

e mi dice :
INSERT INTO foto(_userid,_catid,_dir,titolo,testo,url,tag,data,active)VALUES('1','1','Scaglie di marmo','.','- Nessuna descrizione -','.','','27-12-2011',1)
Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in D:\xampp\htdocs\mc2\admin\ph_auto_.php on line 68

mi sa che non gli riesce ad leggere il contenuto $file,
come lo recupero la variabile?

grazie mille ci sono quasi..

grazie.
 
ciao
come detto prova la glob, http://it2.php.net/manual/en/function.glob.php
schematizzando:
PHP:
<?php
//....
$pieces = explode("|", addslashes($_POST["cat"]));
$path='../public/media/photo/'.$pieces[1].'/img_thumb/';
$imm=glob($path."*.jpg");
/*
estrae tutte (e solo) le jpg. !! non le .JPG quindi eventalmente da fare un accodamento all'array, analogo per le .png e/o .gif es.
$imm=array_merge(glob($path."*.jpg"),glob($path."*.png"));
$imm è un array che contiene per quella cartella es. $imm[0] => pinco.jpg $imm[1] => pallo.jpg  ecc...
volendo puoi ordinarle
sort($imm);
*/
if(is_array($imm)){
foreach($imm as $valore){//poi per un aggeggio così lungo usa la sintassi heredoc http://it2.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
	$strSQL = <<< QUE
	INSERT INTO foto(
	_userid, _catid, _dir, titolo, testo, url,  tag, data, active)
     VALUES('$user_id]', '$pieces[0]','$pieces[1]','$valore','- Nessuna descrizione -', '$valore', '', '$data', 1)
QUE;
	$db->query($strSQL) or die($db->error);
	//....
}
/*
le parti di $strSQL che non variano col foreach potresti prepararle fuori dal ciclo, senza riciclarle tutte le volte
*/
}
//....
?>
prova, al massimo non funzia
 
ciao
come detto prova la glob, http://it2.php.net/manual/en/function.glob.php
schematizzando:
PHP:
<?php
//....
$pieces = explode("|", addslashes($_POST["cat"]));
$path='../public/media/photo/'.$pieces[1].'/img_thumb/';
$imm=glob($path."*.jpg");
/*
estrae tutte (e solo) le jpg. !! non le .JPG quindi eventalmente da fare un accodamento all'array, analogo per le .png e/o .gif es.
$imm=array_merge(glob($path."*.jpg"),glob($path."*.png"));
$imm è un array che contiene per quella cartella es. $imm[0] => pinco.jpg $imm[1] => pallo.jpg  ecc...
volendo puoi ordinarle
sort($imm);
*/
if(is_array($imm)){
foreach($imm as $valore){//poi per un aggeggio così lungo usa la sintassi heredoc http://it2.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
	$strSQL = <<< QUE
	INSERT INTO foto(
	_userid, _catid, _dir, titolo, testo, url,  tag, data, active)
     VALUES('$user_id]', '$pieces[0]','$pieces[1]','$valore','- Nessuna descrizione -', '$valore', '', '$data', 1)
QUE;
	$db->query($strSQL) or die($db->error);
	//....
}
/*
le parti di $strSQL che non variano col foreach potresti prepararle fuori dal ciclo, senza riciclarle tutte le volte
*/
}
//....
?>
prova, al massimo non funzia
grazie invece funziona l'unico e che mi scrive cosi:
../public/media/photo/Scaglie di marmo/img_thumb/Acquario.JPG
io voglio solo :
Acquario.JPG

ti ringrazio molto.. mi risolvi il piccolo problema.
grazie mille.
 

Discussioni simili