Newsgroup: it.comp.www.php
Titolo: [forse OT]memorizzare immagini in DB MySql

si può?se si come?di che tipo deve essere il campo?scusate ma di questo ne
sov eramente poco...se mi indicate pure qualche sito dove poter documentarmi
circa questo e altir quesiti riguardanti mysql vi sarei molto granto,meglio
se in italiano!ciao ciao!

No, non si puň. Non si possono memorizzare i file. Perň si possono
memorizzare i loro nomi. Oppure, un altro metodo (che ho utilizzato io, e di
cui ti incollo il codice quissotto), č quello di rinominare il file
dell'immagine con uno dei campi della tabella (per esempio, per quanto mi
riguarda, la chiave primaria che corrisponde poi all'id dell'oggetto
inserito) e richiamarlo come segue (evidenzio con una freccia => le righe
che ti interessano direttamente)
<text_ins.php>
<?php
if ($HTTP_COOKIE_VARS['SESSION']) {
$login = 1;
} else {
$login = 0;
}
if ( $login == 0 ) {
echo "<b>In 5 seconds you will be redirected to the login page. If you don't
have an account and you are authorized to have one, please register.
Otherwise, login as 'guest'.</b>";
} elseif ( $login == 1 ) {
include "connect.php";
$user_det = "SELECT * FROM session WHERE session_id='$SESSION'";
$result = mysql_query($user_det);
$text_id = mysql_fetch_object($result);
$id = $text_id->user;
setlocale ("LC_ALL", "IT");
$time = time();
$date_loc = strftime("%Y-%m-%d",$time);
 if ($textype == 0) {
 echo "You have to select a type of text, using the menu.";
 } else {
 $text_ins = "INSERT INTO writings
(textype,insdate,creadate,author,topic,title,body) VALUES
('$textype','$date_loc','$year-$month-$day','$id','$topic','$title','$body')
";
 $new_item = mysql_query($text_ins);
 $verify = mysql_affected_rows();
  if ( $verify == 1 ) {
  echo "Success!";
  $textid_det = "SELECT * FROM writings ORDER BY textid DESC LIMIT 0,1 ";
  $result = mysql_query($textid_det);
  $text_id = mysql_fetch_object($result);
  $id_text = $text_id->textid;
  $img_dir = "textimg";
  $img_name = "{$HTTP_POST_VARS['name']}";
  $img_type = $uploadedfile_type;
  $img_dim = strlen($img_type);
  $ext_build = strpos($img_type,"/")+1;
  $extension = substr($img_type,$ext_build,$img_dim);
   if ($extension == "pjpeg") {
   $extension="jpg";
   }
=>  $img_name = "$id_text.$extension";
   if($uploadfile<>"none") {
    if(!copy($uploadedfile,"$img_dir/$img_name")) {
       echo "Error: image did not send.";
    echo "Image is too big or it does not exist.";
       echo "Try again.";
      }
   else {
   echo "<b>Image has been sent.</b><br><small>image location on server is:
<b>$home_dir/$img_name</b></small><br>";
    }
  } else {
  echo "buggy";
  }
  }
 }
}
?>
<text_show.php>
<?php
if ($HTTP_COOKIE_VARS['SESSION']) {
$login = 1;
} else {
$login = 0;
}
if ( $login == 0 ) {
echo "<b>In 5 seconds you will be redirected to the login page. If you don't
have an account and you are authorized to have one, please register.
Otherwise, login as 'guest'.</b>";
} elseif ( $login == 1 ) {
include "connect.php";
=>$text_sel = "SELECT * FROM writings WHERE textid='$writings'";
$result = mysql_query($text_sel);
include "header.inc";
while ($text = mysql_fetch_object($result)) {
$id = $text->textid;
$textype = $text->textype;
$insdate = $text->insdate;
$creadate = $text->creadate;
$aut_id = $text->author;
$title = $text->title;
$body = $text->body;
$insdate_rev = join("-", array_reverse(split("-", $insdate)));
$creadate_rev = join("-", array_reverse(split("-", $creadate)));
$aut_ident_query = "SELECT * FROM users WHERE id='$aut_id'";
$aut_ident = mysql_query($aut_ident_query);
$aut_user = mysql_fetch_object($aut_ident);
$author = $aut_user->user;
# TODO: formattazione differente per ogni tipo di testo
echo <<< EOF
<table>
<tr><td>Data inserimento: $insdate_rev</td><td>Data composizione:
$creadate_rev</td><td>Autore: $author</td><td>Titolo: $title</td></tr>
=><tr><td>Testo:<br><img src="textimg/$id.jpg">$body</td></tr></table>
EOF;
}
include "footer.inc";
}
?>
La cosa č un po' confusionaria, se non capisci riscrivimi via email che
faccio con piů calma
ciauz! :)

 No, non si può. Non si possono memorizzare i file.
C4224T4. Certo che si puo', da dove prendi questa sicurezza per dire no?
Campo BLOB e dentro i dati...
Cmq. e' in genere sconsigliato perche' molto meno performante.
Tutorial per vedere come si fa:
www.phpbuilder.com/columns/florian19991014.php3

Mi era stato detto. Da fonti sicure. Evidentemente quel "You can't"
significava "lascia perdere che č meglio". :)

 significava "lascia perdere che č meglio". :)
fonte sicura? quali sono le fonti sicure? :)))

Dobbiamo fare una sterile polemica o finiamo qui?

[BTW]
1. leggere FAQ
2. Voto per una *sterile polemica*.
ghghgh..
--
CIAO!
Gusher

 significava "lascia perdere che č meglio". :)
Un "You can't" e' without doubt una informazione erroneous, nient'altro. E
posso assicurare che devi cambiare le 'fonti sicuri' (BTW: plurale?) che
pare poco competente...
'Lascia perdere' neanche, perche' esistono situazioni reali in cui ha dei
vantaggi. Per elencare qualcosa:
- non si rischiano link morti (immagine cancellato). MySQL non conosce
mecchanismi per controllare referenze esterne al database, compromettendo
l'integrita' di un database
- export/import dei dati piu' compatto e molto flessibile
- non ci sono problemi se sposti cartelle, ristrutturazione di un sito
- in sistemi molto sicuro si puo' limitare l'accesso piu' facilmente
(access granting ecc.)
- facile da gestire ad esempio per sistemi (news, publishing) in cui
vengono cambiato spessi l'immagini senza dover rinominare i dati sul
filesystem (ma la parte manutenzione periodica e' un capitolo per se).
I svantaggi sono cmq. gravi:
- BLOB deve essere sempre caricato completamente
- per ogni immagine devi chiamare uno script aposito
- il database diventa lento se i BLOB sono nella stessa tabella con altri
dati (piccoli). Soprattutto in mySQL il retrival dei dati risulta piu'
lento (in media).
- Query BLOB in mysql possiedono un limite per la memoria