Προβλημα με εικόνες στη MySQL

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
ewigkeit
Δημοσιεύσεις: 36
Εγγραφή: 26 Μάιος 2008 17:15

Προβλημα με εικόνες στη MySQL

Δημοσίευση από ewigkeit » 02 Φεβ 2009 20:54

Καλησπερα.
Εχω το εξης προβλημα.

Μεσα απο το Dreamweaver εχω δημιουργησει μια φορμα αποστολης καποιων στοιχειων αλλα εχω τα εξης προβλήματα.

1)Το κλασικο προβλημα με τα ελληνικα!!
2)Προβλημα με το upload εικονας στη βάση δεδομενων.Λαμβανω το μηνυμα σφαλματος "Column 'images' cannot be null".Φυσικα και δεν ειναι null αλλα not null.
Συνεπως τι μπορει να συμβαινει?

Στο dreamweaver το upload γινεται με file field δε ξερω αν δημιουργει αυτο το προβλημα,και δε διαβαζει σωστα η mysql,οπως και επισης δε ξερω σε τη μορφη να πω το dreamweaver να την ανεβασει.Εχω τις εξης επιλογες:

text
integer
double
date
check box Y,N
check box 1,0
check box -1,0


Δε βλεπω κατι που να μου κάνει σε blob...

Καμια ιδεα καποιος?

dotoree
Δημοσιεύσεις: 16
Εγγραφή: 29 Ιαν 2009 10:51

Προβλημα με εικόνες στη MySQL

Δημοσίευση από dotoree » 02 Φεβ 2009 21:57

ewigkeit έγραψε:Καλησπερα.
Εχω το εξης προβλημα.

Μεσα απο το Dreamweaver εχω δημιουργησει μια φορμα αποστολης καποιων στοιχειων αλλα εχω τα εξης προβλήματα.

1)Το κλασικο προβλημα με τα ελληνικα!!
2)Προβλημα με το upload εικονας στη βάση δεδομενων.Λαμβανω το μηνυμα σφαλματος "Column 'images' cannot be null".Φυσικα και δεν ειναι null αλλα not null.
Συνεπως τι μπορει να συμβαινει?

δες αυτό (δεν το πολύνομίζω όμως....)
http://bugs.mysql.com/bug.php?id=2508

ειναι η φορμα multipart?
http://www.caucho.com/resin-3.0/jsp/tut ... tipart.xtp

ewigkeit
Δημοσιεύσεις: 36
Εγγραφή: 26 Μάιος 2008 17:15

Προβλημα με εικόνες στη MySQL

Δημοσίευση από ewigkeit » 02 Φεβ 2009 23:43

dotoree έγραψε:
ewigkeit έγραψε:Καλησπερα.
Εχω το εξης προβλημα.

Μεσα απο το Dreamweaver εχω δημιουργησει μια φορμα αποστολης καποιων στοιχειων αλλα εχω τα εξης προβλήματα.

1)Το κλασικο προβλημα με τα ελληνικα!!
2)Προβλημα με το upload εικονας στη βάση δεδομενων.Λαμβανω το μηνυμα σφαλματος "Column 'images' cannot be null".Φυσικα και δεν ειναι null αλλα not null.
Συνεπως τι μπορει να συμβαινει?

δες αυτό (δεν το πολύνομίζω όμως....)
http://bugs.mysql.com/bug.php?id=2508

ειναι η φορμα multipart?
http://www.caucho.com/resin-3.0/jsp/tut ... tipart.xtp
Ναι η φορμα ειναι multipart, εχει ονομα,τηλεφωνο,email,σχολια,και browse for file.
Αλλα σε php οχι σε jsp :(

dotoree
Δημοσιεύσεις: 16
Εγγραφή: 29 Ιαν 2009 10:51

Προβλημα με εικόνες στη MySQL

Δημοσίευση από dotoree » 03 Φεβ 2009 11:24

ewigkeit έγραψε: Ναι η φορμα ειναι multipart, εχει ονομα,τηλεφωνο,email,σχολια,και browse for file.
Αλλα σε php οχι σε jsp :(
Ok, μηπως να βλέπαμε λίγο κώδικα και την δομή του πίνακα σου στην MySQL να καταλάβουμε λίγο παραπάνω τι γίνεται;

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Προβλημα με εικόνες στη MySQL

Δημοσίευση από ThyClub » 03 Φεβ 2009 11:55

Τσέκαρε αν η μεταβλητή που κρατάει το όνομα του αρχείου έχει τιμή ή είναι null. Αν είναι null τότε το μήνυμα είναι σωστό γιατί εσύ έχεις δηλώσει ότι το column "images" -> not null.

Δώσε και λίγο κώδικα όμως

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Προβλημα με εικόνες στη MySQL

Δημοσίευση από Apostolis_38 » 03 Φεβ 2009 16:04

dotoree έγραψε: Column 'images' cannot be null".Φυσικα και δεν ειναι null αλλα not null.
- Αν το μήνυμα στο βγάζει όταν κάνεις αποστολή των στοιχείων, τότε δεν λέει αν η τιμή του πεδίου είναι null ή not null αλλά οτι δεν καταχωρείται εγγραφή στο πεδίο images. Δεν στέλνονται δεδομένα ή το πεδίο στη βάση έχει άλλη ονομασία απ' ότι στη φόρμα (π.χ. images και image). Η πιθανόν να έχει ξεχαστεί η παράμετρος images στο query (π.χ. ' " $images " ' )

- blob ορίζεις να είναι το πεδίο στη βάση. H φόρμα ανεβάζει το αρχείο σαν file.
Πάντως δεν είναι καλή ιδέα να καταχωρείς την φωτογραφία στην βάση. Με μερικές δεκάδες φωτογραφίες μπορεί να αποκτήσεις τεράστια σε μέγεθος βάση. Κράτα καλύτερα το file name ή το πολύ πολύ το path.

ewigkeit
Δημοσιεύσεις: 36
Εγγραφή: 26 Μάιος 2008 17:15

Προβλημα με εικόνες στη MySQL

Δημοσίευση από ewigkeit » 03 Φεβ 2009 20:03

Apostolis_38 έγραψε:
dotoree έγραψε: Column 'images' cannot be null".Φυσικα και δεν ειναι null αλλα not null.
- Αν το μήνυμα στο βγάζει όταν κάνεις αποστολή των στοιχείων, τότε δεν λέει αν η τιμή του πεδίου είναι null ή not null αλλά οτι δεν καταχωρείται εγγραφή στο πεδίο images. Δεν στέλνονται δεδομένα ή το πεδίο στη βάση έχει άλλη ονομασία απ' ότι στη φόρμα (π.χ. images και image). Η πιθανόν να έχει ξεχαστεί η παράμετρος images στο query (π.χ. ' " $images " ' )

- blob ορίζεις να είναι το πεδίο στη βάση. H φόρμα ανεβάζει το αρχείο σαν file.
Πάντως δεν είναι καλή ιδέα να καταχωρείς την φωτογραφία στην βάση. Με μερικές δεκάδες φωτογραφίες μπορεί να αποκτήσεις τεράστια σε μέγεθος βάση. Κράτα καλύτερα το file name ή το πολύ πολύ το path.
Ναι μου το βγαζει οταν κανω αποστολη των δεδομενων.Στον πινακα,στην στηλη "images" εχω καθορισει να παιρνει τιμες "not null", συνεπως μαλλον δεν ανεβαινουν σωστα απο το "browse for file",γιατι μου δινει μονο τις επιλογες οπως ενεφερα παραπανω
"text,integer,double,date,check box Y,N, check box 1,0 ,check box -1,0".

Τι θελω να κανω τωρα ακριβως...Θελω να κανω ενα πινακα που να περιεχει αριστερα την εικονα,και στα υπολοιπα cells τη μαρκα ενος προιοντος,το μοντελο και την τιμη.Μετα με repeat region,θελω να κανω populate την σελιδα με ολα τα records.Προσπαθω λοιπον να κανω κατι σαν mini cms,για ευκολια στην εισαγωγη νεων προιοντων ,χωρις να ανοιγω dreamweaver.

Να ρωτησω το εξης ομως τωρα.

Γινεται να εχω το στο πεδιο images το path,που να κοιταει ενα καταλογο στο server (προς το παρον κανω local development) και να βλεπει απο εκει τις εικονες?Και πως γινεται αυτο?Μηπως του βαζω τιμη varchar?

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Προβλημα με εικόνες στη MySQL

Δημοσίευση από korgr » 03 Φεβ 2009 20:40

ewigkeit έγραψε: Γινεται να εχω το στο πεδιο images το path,που να κοιταει ενα καταλογο στο server (προς το παρον κανω local development) και να βλεπει απο εκει τις εικονες?Και πως γινεται αυτο?Μηπως του βαζω τιμη varchar?
Όχι μόνο γίνεται αλλά και επιβάλλεται!
Η συντριπτική πλειοψηφία απο μας έτσι δουλεύει.
Αν το παμε και λιγο παρακατω, ακομα και αυτο δεν ειναι η πλεον ενδεδειγμενη λυση.
Προσωπικα προτιμω την λυση του image bank! Δεν ειναι τιποτα αλλο απο εναν πινακα images οπου καταχωρεις το filename, την λεζαντα κλπ κλπ και μετα στο column image στο κυριως table σου απλά καταχωρείς το id του image που έχεις από πριν εισάγει.
Αν παλι θες περισσοτερα images ανα record απλα χρησιμοποιεις και ενδιαμεσο table.

dotoree
Δημοσιεύσεις: 16
Εγγραφή: 29 Ιαν 2009 10:51

Προβλημα με εικόνες στη MySQL

Δημοσίευση από dotoree » 03 Φεβ 2009 21:05

korgr έγραψε: Όχι μόνο γίνεται αλλά και επιβάλλεται!
Η συντριπτική πλειοψηφία απο μας έτσι δουλεύει.
Αν το παμε και λιγο παρακατω, ακομα και αυτο δεν ειναι η πλεον ενδεδειγμενη λυση.
Προσωπικα προτιμω την λυση του image bank! Δεν ειναι τιποτα αλλο απο εναν πινακα images οπου καταχωρεις το filename, την λεζαντα κλπ κλπ και μετα στο column image στο κυριως table σου απλά καταχωρείς το id του image που έχεις από πριν εισάγει.
Αν παλι θες περισσοτερα images ανα record απλα χρησιμοποιεις και ενδιαμεσο table.
Συμφωνώ και γώ και νομίζω ότι είναι και πιο απλό. Δεν ξέρω κανένα να χρησιμοποιεί blob για Image storing :)

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Προβλημα με εικόνες στη MySQL

Δημοσίευση από Apostolis_38 » 04 Φεβ 2009 10:48

Στις ιδιότητες του browse for file θα βάλεις type = "file". Τίποτε άλλο.
Κατά τα άλλα συμφωνώ με τους προηγούμενους.

ewigkeit
Δημοσιεύσεις: 36
Εγγραφή: 26 Μάιος 2008 17:15

Προβλημα με εικόνες στη MySQL

Δημοσίευση από ewigkeit » 04 Φεβ 2009 16:49

OK εστω οτι θελω να δημιουργησω μια registration page με ονομα,επιθετο,τηλεεφωνο,εμαιλ,και εικονα.Ο κωδικας που εφτιαξα ειναι ο παρακατω.

Κώδικας: Επιλογή όλων

<?php require_once&#40;'Connections/dbconnection.php'&#41;; ?>
<?php
if &#40;!function_exists&#40;"GetSQLValueString"&#41;&#41; &#123;
function GetSQLValueString&#40;$theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = ""&#41; 
&#123;
  if &#40;PHP_VERSION < 6&#41; &#123;
    $theValue = get_magic_quotes_gpc&#40;&#41; ? stripslashes&#40;$theValue&#41; &#58; $theValue;
  &#125;

  $theValue = function_exists&#40;"mysql_real_escape_string"&#41; ? mysql_real_escape_string&#40;$theValue&#41; &#58; mysql_escape_string&#40;$theValue&#41;;

  switch &#40;$theType&#41; &#123;
    case "text"&#58;
      $theValue = &#40;$theValue != ""&#41; ? "'" . $theValue . "'" &#58; "NULL";
      break;    
    case "long"&#58;
    case "int"&#58;
      $theValue = &#40;$theValue != ""&#41; ? intval&#40;$theValue&#41; &#58; "NULL";
      break;
    case "double"&#58;
      $theValue = &#40;$theValue != ""&#41; ? doubleval&#40;$theValue&#41; &#58; "NULL";
      break;
    case "date"&#58;
      $theValue = &#40;$theValue != ""&#41; ? "'" . $theValue . "'" &#58; "NULL";
      break;
    case "defined"&#58;
      $theValue = &#40;$theValue != ""&#41; ? $theDefinedValue &#58; $theNotDefinedValue;
      break;
  &#125;
  return $theValue;
&#125;
&#125;

$editFormAction = $_SERVER&#91;'PHP_SELF'&#93;;
if &#40;isset&#40;$_SERVER&#91;'QUERY_STRING'&#93;&#41;&#41; &#123;
  $editFormAction .= "?" . htmlentities&#40;$_SERVER&#91;'QUERY_STRING'&#93;&#41;;
&#125;

if &#40;&#40;isset&#40;$_POST&#91;"MM_insert"&#93;&#41;&#41; && &#40;$_POST&#91;"MM_insert"&#93; == "registration_form"&#41;&#41; &#123;
  $insertSQL = sprintf&#40;"INSERT INTO registration &#40;first_name, last_name, phone_number, email, images&#41; VALUES &#40;%s, %s, %s, %s, %s&#41;",
                       GetSQLValueString&#40;$_POST&#91;'first_name'&#93;, "text"&#41;,
                       GetSQLValueString&#40;$_POST&#91;'last_name'&#93;, "text"&#41;,
                       GetSQLValueString&#40;$_POST&#91;'phone_number'&#93;, "text"&#41;,
                       GetSQLValueString&#40;$_POST&#91;'email'&#93;, "text"&#41;,
                       GetSQLValueString&#40;$_POST&#91;'image'&#93;, "text"&#41;&#41;;

  mysql_select_db&#40;$database_dbconnection, $dbconnection&#41;;
  $Result1 = mysql_query&#40;$insertSQL, $dbconnection&#41; or die&#40;mysql_error&#40;&#41;&#41;;

  $insertGoTo = "success.php";
  if &#40;isset&#40;$_SERVER&#91;'QUERY_STRING'&#93;&#41;&#41; &#123;
    $insertGoTo .= &#40;strpos&#40;$insertGoTo, '?'&#41;&#41; ? "&" &#58; "?";
    $insertGoTo .= $_SERVER&#91;'QUERY_STRING'&#93;;
  &#125;
  header&#40;sprintf&#40;"Location&#58; %s", $insertGoTo&#41;&#41;;
&#125;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>registration</title>
<style type="text/css">
<!--
a&#58;link &#123;
	text-decoration&#58; none;
&#125;
a&#58;visited &#123;
	text-decoration&#58; none;
&#125;
a&#58;hover &#123;
	text-decoration&#58; none;
&#125;
a&#58;active &#123;
	text-decoration&#58; none;
&#125;
-->
</style></head>

<body>
<form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="registration_form" target="_top" id="registration_form">
  <table width="413" border="0" align="center">
    <tr>
      <td width="58" align="left" valign="middle" nowrap="nowrap"><label id="first_name">Όνομα</label>&#58;</td>
      <td width="147"><input name="first_name" type="text" id="first_name" size="40" /></td>
    </tr>
    <tr>
      <td align="left" valign="middle" nowrap="nowrap"><label id="last_name">Επίθετο</label>      
      &#58;</td>
      <td><input name="last_name" type="text" id="last_name" size="40" /></td>
    </tr>
    <tr>
      <td align="left" valign="middle" nowrap="nowrap"><label id="phone_number">
        <label id="phone_number">Αριθμός Τηλεφώνου</label>
&#58;
</label></td>
      <td><input type="text" name="phone_number" id="phone_number" /></td>
    </tr>
    <tr>
      <td align="left" valign="middle" nowrap="nowrap"><p>
        <label id="email">
        <label id="email">Διεύθυνση email</label>
&#58;
</label>
      </p></td>
      <td><input type="text" name="email" id="email" /></td>
    </tr>
    <tr>
      <td height="78" align="left" valign="middle" nowrap="nowrap">&nbsp;</td>
      <td><label for="image"></label>
      <input type="file" name="image" id="image" /></td>
    </tr>
    <tr>
      <td height="78" align="left" valign="middle" nowrap="nowrap">&nbsp;</td>
      <td><label for="submit"></label>
      <input type="submit" name="submit" id="submit" value="Αποστολή Στοιχείων" /></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="registration_form" />
</form>
</body>
</html>
Ειναι σωστως?Το πεδιο image το εβαλα στη βαση να ειναι varchar στη βαση .Υποθετω οτι στη βαση θα αποθηκευεται η διαδρομη..αληθευει?

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Προβλημα με εικόνες στη MySQL

Δημοσίευση από Apostolis_38 » 04 Φεβ 2009 17:39

Αν και δεν είμαι εξοικειωμένος με αυτή την τεχνική, μου κάνει εντύπωση το

Κώδικας: Επιλογή όλων

&#40;%s, %s, %s, %s, %s&#41;
.
Δηλαδή το ότι δεν χρησιμοποιεί ' και κατά δεύτερο το GetSQLValue.

Γύρνα το images σε null στη βάση και τρέξε το script να δείς αν περνάει δεδομένα στα άλλα πεδία ή αν υπάρχει γενικότερο πρόβλημα.

ewigkeit
Δημοσιεύσεις: 36
Εγγραφή: 26 Μάιος 2008 17:15

Προβλημα με εικόνες στη MySQL

Δημοσίευση από ewigkeit » 04 Φεβ 2009 18:30

Apostolis_38 έγραψε:Αν και δεν είμαι εξοικειωμένος με αυτή την τεχνική, μου κάνει εντύπωση το

Κώδικας: Επιλογή όλων

&#40;%s, %s, %s, %s, %s&#41;
.
Δηλαδή το ότι δεν χρησιμοποιεί ' και κατά δεύτερο το GetSQLValue.

Γύρνα το images σε null στη βάση και τρέξε το script να δείς αν περνάει δεδομένα στα άλλα πεδία ή αν υπάρχει γενικότερο πρόβλημα.
Με το που εκανα το images "null" το προβλημα σταματησε να υφισταται.Συνεπως τα δεδομενα δε φευγουνε σωστα απο τι φορμα απο το πεδιο file upload.Τα υπολοιπα δουλευουνε σωστα.

Με το που αφαιρεσα τα %s, %s, %s, %s, %s ελαβα ενα parser error.Συνεπως απαιτουνται.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Προβλημα με εικόνες στη MySQL

Δημοσίευση από Apostolis_38 » 05 Φεβ 2009 10:41

Σου καταχώρησε την εικόνα ή περασε όλες τις άλλες τιμές και άφησε το images κενό;

Δοκίμασε κι αυτό: γύρνα πάλι το images σε not null και πριν το:

Κώδικας: Επιλογή όλων

<input type="file" name="image" id="image" />
βάλε το:

Κώδικας: Επιλογή όλων

<input type = "hidden" name = "MAX_FILE_SIZE" value = "30000000">
(30Mb δηλαδή) και δοκίμασε να ανεβάσεις εικονα μικρότερη απο 30Mb.


To

Κώδικας: Επιλογή όλων

&#40;%s, %s, %s, %s, %s&#41;
σίγουρα χρειάζεται γιατί απο εκεί παίρνει τις τιμές, απλώς εγώ περίμενα κάτι σε ('%s', '%s', '%s', '%s', '%s').
Εν πάσει περιπτώσει.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Προβλημα με εικόνες στη MySQL

Δημοσίευση από korgr » 05 Φεβ 2009 11:40

μήπως απλά να αντικαταστήσεις το $_POST['image'] με το $_FILES['image']['name'] ;
Λέω τώρα εγώ...
:roll:

Φυσικα αυτο για να αποθηκευσεις απλα το Filename στη βαση.
Η ιδια εικονα θα παραμεινει στο temp folder του server αφου πουθενα δεν βλεπω να χρησιμοποιειται μια move_uploaded_file ή κατι σχετικο....

πχ

Κώδικας: Επιλογή όλων

$path = "../db/images/"; // εδω βαζεις το δικο σου path
move_uploaded_file &#40;$_FILES&#91;'image'&#93;&#91;'tmp_name'&#93;, $path.$_FILES&#91;'image'&#93;&#91;'name'&#93; &#41;;

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες