Ciao a tutti,
ho fatto uno script che mi deve caricare l'annuncio nella tabella annunci ( tutto ok ) poi ho creato una tabella images che si lega alla tabella annuncio con un campo imagesid:
ora vorrei che postando la foto mi vada ad inserire l'id della foto (tabella images) nel campo imagesid cosi da legarlo all'annuncio del post tramite mysql_insert_id(), ma prova e riprova non riesco a capire cosa sbaglio, tutto funziona perfettamente ma non mi prende l'id .
Vi posto il codice se qualcuno puo' gurdarlo grazie mille.
Pagina dove inserisco l'annuncio e una volta dato il messaggio di inserimento corretto mi presenta il form per il caricamento della foto.
Codice PHP:
<?php echo $_SESSION['user_name'];?>
<?php echo $_SESSION['user_id'];
require ("db_connect.php");
if (isset($_POST['descrizione'])):
// x un nuovo annuncio usa il form
$user_id = $_POST['user_id'];
$aid = $_POST['aid'];
$cid = $_POST['cid'];
$did = $_POST['did'];
$eid = $_POST['eid'];
$fid = $_POST['fid'];
$gid = $_POST['gid'];
$descrizione = $_POST['descrizione'];
$mq = $_POST['mq'];
$locali = $_POST['locali'];
$prezzo = $_POST['prezzo'];
$tipologia = $_POST['tipologia'];
$altro = $_POST['altro'];
$cats = $_POST['cats'];
$nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];
$nome_file_vero = $_FILES['file_inviato']['name'];
$tipo_file = $_FILES['file_inviato']['type'];
$imagesid=mysql_insert_id();
if ($aid == '') {
exit('
Scegli la provincia x l annuncio. Click "Back" and try again.</p>');
}
$sql = "INSERT INTO annunci SET
descrizione='$descrizione',
mq='$mq',
locali='$locali',
prezzo='$prezzo',
tipologia='$tipologia',
altro='$altro',
annunciodate=CURDATE(),
provinciaid='$aid',
cittaid='$cid',
regioneid='$did',
clienteid='$eid',
tipoid='$fid',
condizioniid='$gid',
nome_file = '$nome_file_vero',
tipo_file = '$tipo_file',
dati_file = '$dati_file',
id='$imagesid',
user_id=".$_SESSION['user_id']."";
if (@mysql_query($sql)) {
echo '
</p>';
} else {
exit('
Errore aggiunta nuovo annuncio: ' . mysql_error() . '</p>');
}
$jid = mysql_insert_id();
if (isset($_POST['cats'])) {
$cats = $_POST['cats'];
} else {
$cats = array();
}
$numCats = 0;
foreach ($cats as $catID) {
$sql = "INSERT IGNORE INTO cittaprovinciauser
SET annunciid=$jid, cittaid=$catID, regioneid=$catID, clienteid=$catID, tipoid=catID, condizioniid=catID, imagesid=catID ";
$ok = @mysql_query($sql);
if ($ok) {
$numCats = $numCats + 1;
} else {
echo "
Errore inserimento annuncio $catID: " .
mysql_error() . '</p>';
}
}
?>
Annuncio salvato correttamente <?php echo $Cats; ?> categories.</p>
//ADESSO CHE HO SALVATO L'ANNUNCIO PROVVEDO AL CARICAMENTO DELL'IMMAGINE
<h2>Image upload</h2>
Maximum file size 200 kB. Formats: PNG, JPEG and GIF.</p>
<table>
<form method="post" action="images.php" enctype="multipart/form-data">
<input type="hidden" value="204800" name="MAX_FILE_SIZE" />
<input type="hidden" name="imagesid" value="<?php echo $imagesid;?>" />
<tr><td>Description (optional):</td>
<td><input name="descr" type="text" /></td></tr>
<tr><td>Image file:</td>
<td><input name="imgfile" type="file" /></td></tr>
<tr><td></td>
<td><input type="submit" value="OK" name="submitbtn" /></td></tr>
</form>
</table>
[url="<?php echo $_SERVER['PHP_SELF']; ?>"][/url]</p>
[url="submit.php"][img]immagini/continua.gif[/img][/url]</p>
<?php
else: // inserimento provincia e citta'
$authors = @mysql_query('SELECT id, name FROM provincia');
if (!$authors) {
exit('
errore inserimento provincia.</p>');
}
$cats = @mysql_query('SELECT id, citta FROM citta');
if (!$cats) {
exit('
errore inserimento citta.</p>');
}
$regiones = @mysql_query('SELECT id, regione FROM regione');
if (!$regiones) {
exit('
errore inserimento citta.</p>');
}
$clientes = @mysql_query('SELECT id, cliente FROM cliente');
if (!$clientes) {
exit('
errore inserimento citta.</p>');
}
$tipos = @mysql_query('SELECT id, tipo FROM tipo');
if (!$tipos) {
exit('
errore inserimento citta.</p>');
}
$condizionis = @mysql_query('SELECT id, condizioni FROM condizioni');
if (!$condizionis) {
exit('
errore inserimento citta.</p>');
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" method="post" enctype="multipart/form-data">
Inserisci annuncio
descrizione
<textarea name="descrizione" rows="5" cols="45">
</textarea></p>
mq:
<textarea name="mq" rows="5" cols="45">
</textarea></p>
locali:
<textarea name="locali" rows="5" cols="45">
</textarea></p>
prezzo:
<textarea name="prezzo" rows="5" cols="45">
</textarea></p>
tipologia:
<textarea name="tipologia" rows="5" cols="45">
</textarea></p>
altro:
<textarea name="altro" rows="5" cols="45">
</textarea></p>
</p>
<input type="hidden" name="imagesid" value="<?php echo $imagesid;?>" />
Condizioni Immobile:
<select name="gid" size="1">
<option selected value="">Condizioni Immobile:</option>
<option value="">---------</option>
<?php
while ($condizioni = mysql_fetch_array($condizionis)) {
$gid = $condizioni['id'];
$gcondizioni = htmlspecialchars($condizioni['condizioni']);
echo "<option value='$gid'>$gcondizioni</option>\n";
}
?>
</select></p>
Regione:
<select name="did" size="1">
<option selected value="">Seleziona Regione</option>
<option value="">---------</option>
<?php
while ($regione = mysql_fetch_array($regiones)) {
$did = $regione['id'];
$dregione = htmlspecialchars($regione['regione']);
echo "<option value='$did'>$dregione</option>\n";
}
?>
</select></p>
Provincia:
<select name="aid" size="1">
<option selected value="">Seleziona Provincia</option>
<option value="">---------</option>
<?php
while ($author = mysql_fetch_array($authors)) {
$aid = $author['id'];
$aname = htmlspecialchars($author['name']);
echo "<option value='$aid'>$aname</option>\n";
}
?>
</select></p>
Comune:
<select name="cid" size="1">
<option selected value="">Seleziona Citta</option>
<option value="">---------</option>
<?php
while ($cat = mysql_fetch_array($cats)) {
$cid = $cat['id'];
$cname = htmlspecialchars($cat['citta']);
echo "<option value='$cid'>$cname</option>\n";
}
?>
</select></p>
Tipo Cliente:
<select name="eid" size="1">
<option selected value="">Seleziona tipo cliente</option>
<option value="">---------</option>
<?php
while ($cliente = mysql_fetch_array($clientes)) {
$eid = $cliente['id'];
$ecliente = htmlspecialchars($cliente['cliente']);
echo "<option value='$eid'>$ecliente</option>\n";
}
?>
</select></p>
Canale Annuncio:
<select name="fid" size="1">
<option selected value="">Seleziona tipo annuncio</option>
<option value="">---------</option>
<?php
while ($tipo = mysql_fetch_array($tipos)) {
$fid = $tipo['id'];
$ftipo = htmlspecialchars($tipo['tipo']);
echo "<option value='$fid'>$ftipo</option>\n";
}
?>
</select></p>
<input type="image" src="immagini/salva.gif" value='salva'>
</form>
<?php endif; ?>
Images.php
Codice PHP:
<?php // images/images.php
include("connect.php");
$mysqli = connect_to_picdb();
// part 1: save uploaded images
$submitbtn = array_item($_POST, 'submitbtn');
$descr = array_item($_POST, 'descr');
$imgfile = array_item($_FILES, 'imgfile');
// is there form data to process?
if($submitbtn == 'OK' and is_array($imgfile)) {
$name = $imgfile['name'];
$type = $imgfile['type'];
$size = $imgfile['size'];
$uperr = array_item($imgfile, 'error');
$tmpfile = $imgfile['tmp_name'];
$imagesid=$_POST['imagesid'];
if(!$descr) $descr = $name;
switch ($type) {
case "image/gif":
$mime = "GIF Image"; break;
case "image/jpeg":
case "image/pjpeg":
$mime = "JPEG Image"; break;
case "image/png":
case "image/x-png":
$mime = "PNG Image"; break;
default:
$mime = "unknown";
}
if(!$tmpfile or $uperr or $mime == "unknown" or !is_uploaded_file($tmpfile))
echo "
An error occured when processing the form data:
Perhaps you forgot to specify an
image file or the file is too large
or the image type is unknown.</p>\n";
else {
// read the uploaded file and save it into database
$file = fopen($tmpfile, "rb");
$imgdata = fread($file, $size);
$imagesid=mysql_insert_id();
fclose($file);
if(!$mysqli->query(
"INSERT INTO images (name, type, image) " .
"VALUES ('" . $mysqli->escape_string($descr) . "', " .
" '$mime', " .
" '" . $mysqli->escape_string($imgdata) . "')"))
printf("
Could not save image: %s</p>\n", $mysqli->error);
$sql2="UPDATE annunci SET imagesid='{$imagesid}' WHERE id='{$imagesid}' ";
mysql_query($sql2);
}
}
// part 2: show images
echo "<h2>Images recently uploaded ...</h2>\n";
$sql =
"SELECT id, name, " .
"DATE_FORMAT(ts, '%Y/%c/%e %k:%i') AS dt " .
"FROM images ORDER BY ts DESC LIMIT 1";
$result = $mysqli->query($sql);
if($result->num_rows==0)
echo "
The database does not yet contain images ...</p>\n";
else {
while($row = $result->fetch_object())
$rows[] = $row;
echo '<table>', "\n<tr>";
for($i=0; $i<sizeof($rows); $i++) // images
echo '<th>',
"<img src=\"showpic.php?id=" .
$rows[$i]->id . "\" /></th>";
echo "</tr>\n<tr>";
for($i=0; $i<sizeof($rows); $i++) // names/descriptions
echo "<td>" . htmlspecialchars($rows[$i]->name) . "</td>";
echo "</tr>\n<tr>";
for($i=0; $i<sizeof($rows); $i++) // date+time
echo "<td>" . $rows[$i]->dt . "</td>";
echo "</tr>\n</table>\n";
}
?>
Tutto funziona alla meraviglia, la foto me la inserisce nella tabella images, l'annuncio è postato correttamente , l'unico problema è che non mi porta l'id come dovrebbe