κενά σε text field ενός πίνακα σε μια MySQL βάση

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

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

Απάντηση
mariospapa
Δημοσιεύσεις: 33
Εγγραφή: 01 Αύγ 2010 18:11

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από mariospapa » 17 Νοέμ 2010 13:50

Έχω δημιουργήσει ένα text box στο προφίλ ενός χρήστη, ο οποίος μπορεί να βάλει γράψει κάποια σχόλια και μετά πατώντας το πλήκτρο apply αποθηκεύονται τα σχόλια αυτά σε μια μεταβλήτη που ανανεώνει τις τιμές μιας εγγραφής ενός πεδίου του πίνακα. Όταν ο χρήστης επισκεφθεί πάλι το προφίλ του, τα σχόλια αυτά που έγραψε έχουν καταχωρηθεί, αλλά μπροστά απ'αυτά υπάρχουν κενά, δλδ:

Ο χρήστης καταχωρεί:

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

Αυτό είναι το προσωπικό μου σχόλιο!
αλλά ο χρήστης βλέπει μετά εφόσον επισκεφθεί και πάλι το προφίλ του, αυτό:

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

     Αυτό είναι το προσωπικό μου σχόλιο!   
Που μπορεί να οφείλεται αυτή η προσθήκη των κενών;

Το πεδίο του πίνακα είναι TEXT με collation: utf8_unicode_ci.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από cherouvim » 17 Νοέμ 2010 14:30

Πρώτα από όλα δες αν υπάρχει στη βάση το κενό.

πχ κάνε μέσα από την εφαρμογή σου ένα comment "test" και με το query:

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

select concat('|',comment,'|') from comments order by id desc limit 1;
πρέπει να δεις:

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

|test|
και όχι πχ:

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

|        test  |

mariospapa
Δημοσιεύσεις: 33
Εγγραφή: 01 Αύγ 2010 18:11

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από mariospapa » 17 Νοέμ 2010 14:47

cherouvim έγραψε:Πρώτα από όλα δες αν υπάρχει στη βάση το κενό.

πχ κάνε μέσα από την εφαρμογή σου ένα comment "test" και με το query:

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

select concat('|',comment,'|') from comments order by id desc limit 1;
πρέπει να δεις:

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

|test|
και όχι πχ:

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

|        test  |

Έτρεξα στην εφαρμογή μου, το query που μου έγραψες και παρατήρησα ότι σε όλες τις τιμές του πεδίου που δεν είχαν comment έβγαλε:

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

||
ενώ στην τιμή του πεδίου που είχα βάλει "test" (όπως μου υπέδειξες) έβγαλε:

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

|test|
Επομένως δεν υπάρχει το κενό στην βάση!

Όμως πως μπορώ να το αποφύγω και από το text box στο profile του χρήστη γιατί κάθε φορά που θέλει να ανανεώσει το σχόλιό του δημιουργεί επιπλέον κενά μπροστά από το κείμενό του!

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από cherouvim » 17 Νοέμ 2010 15:04

Η βάση σου είναι καθαρή. Επόμενο βήμα είναι να ελέγξεις το html που παράγεις. Δες στο generated source εκεί που εκτυπώνεις το comment τι έχει;

Αν είναι κάτι της μορφής:

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

<p>             test</p>
ή

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

<p>             
          test
</p>
τότε δεν έχεις πρόβλημα γιατί οι browsers τα κόβουν αυτά τα κενά.

Μήπως όμως έχει και &nbsp; μέσα;

Αλλιώς θα πρέπει να εξετάσεις μήπως το πρόβλημα είναι styling μόνο, προκαλείται δηλαδή από το CSS. Το firebug θα σε βοηθήσει.

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

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από korgr » 17 Νοέμ 2010 15:26

Επειδή κάποτε έψαχνα αυτό το bug μια ολόκληρη ώρα θα σου πω με κλειστά μάτια τι φταίει!

Φρόντισε να έχεις στον html κώδικα σου το textarea έτσι

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

         <textarea></textarea>
και όχι έτσι

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

         <textarea>
         </textarea>
Το πρόβλημα δηλαδή προκύπτει από τα tabs που βάζει αυτόματα στην μορφοποίηση του κώδικα ο εκάστοτε editor (πχ Dreamweaver)

mariospapa
Δημοσιεύσεις: 33
Εγγραφή: 01 Αύγ 2010 18:11

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από mariospapa » 17 Νοέμ 2010 15:49

cherouvim έγραψε:Η βάση σου είναι καθαρή. Επόμενο βήμα είναι να ελέγξεις το html που παράγεις. Δες στο generated source εκεί που εκτυπώνεις το comment τι έχει;

Αν είναι κάτι της μορφής:

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

<p>             test</p>
ή

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

<p>             
          test
</p>
τότε δεν έχεις πρόβλημα γιατί οι browsers τα κόβουν αυτά τα κενά.

Μήπως όμως έχει και &nbsp; μέσα;

Αλλιώς θα πρέπει να εξετάσεις μήπως το πρόβλημα είναι styling μόνο, προκαλείται δηλαδή από το CSS. Το firebug θα σε βοηθήσει.

Όχι δεν έχει &nbsp; μέσα στον html code... Μάλλον θα πρέπει να'ναι θέμα styling... Θα πρέπει να το ψάξω περισσότερο εκεί! Σ'ευχαριστώ για τις συμβουλές σου!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από fafos » 17 Νοέμ 2010 16:59

vaze ena trim prin doseis tis metavlhtes sthn vash kai eisai etoimos..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

κενά σε text field ενός πίνακα σε μια MySQL βάση

Δημοσίευση από korgr » 17 Νοέμ 2010 18:06

fafos έγραψε:vaze ena trim prin doseis tis metavlhtes sthn vash kai eisai etoimos..
Μιλάμε για κείμενο σε textarea και όχι textfield οπότε η trim χρειάζεται προσοχή γιατί από όσο θυμάμαι καθαρίζει και τα \n \r (που ίσως στο κείμενο της textarea είναι σημαντικά). Επίσης δεν μπορούμε να είμαστε σίγουροι πως σε ένα τέτοιο entry δεν χρειάζονται πιθανά tabs κλπ.
Αν χρησιμοποιηθεί η trim καλό θα ήταν να οριστεί και το δεύτερο όρισμα που καθορίζει και τι θα γίνει trim.

Απάντηση

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

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

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