php και image rollover

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

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

php και image rollover

Δημοσίευση από Apostolis_38 » 22 Δεκ 2008 18:38

Παιδιά σόρυ αν σας τσάκισα. Αλλη φορά θα δίνω παραδείγματα για το τι σκέφτομαι.

@korgr: μάλλον ο τρόπος που λένε τα παιδιά είναι πιο σωστός. Ομως έχω το πρόβλημα οτι στην java δεν ξέρω να δηλώσω το $row που είναι απαραίτητο για να εμφανίζει την εικόνα που θέλω. Δοκίμασα αυτό που μου είπε ο Thy για το showthumb() αλλά δεν δούλεψε.
Κατά τα άλλα το έχω φέρει σε σημείο που παίζει σχεδόν με τον ίδιο τρόπο. Η μόνη διαφορά είναι οτι δουλεύει ακριβώς σαν rollover, η μεγάλη εικόνα εμφανίζεται στην θέση που είναι το thumb κι όχι λίγο πιο δεξιά ή αριστερά όπως εσείς.
Πράγμα που πιστεύω πως θα καταφέρω αν "παίξω" λίγο με τα rows και τα columns του πίνακα μου.
Θα δοκιμάσω και το παράδειγμα του Alice για αυτόματο resize των thumbs. Ισως να είναι πιο σωστό έτσι.

Αυτό όμως με τούς πίνακες δεν το κατάλαβα.

Να σου εξηγήσω την περίπτωσή μου:
Εχω ένα πίνακα όπου αποθηκεύω
1.Το id του πίνακα (auto_increment)
2. Το id του πελάτη (για σύνδεση με άλλους πίνακες)
3. To όνομα της φωτογραφίας.

Οταν πάω να τραβήξω τις φωτογραφίες κοιτάω αν το id του πελάτη συμφωνεί με το id σε άλλους πίνακες.
Αν ναι τότε του "καρφώνω" το path και το βάζω να εμφανίσει τις συγκεκριμένες εγγραφές.
Αυτό όταν είχα ανάγκη για μία φωτογραφία.
Τώρα που χρειάζομαι και το thumb (γιατί πολύ απλά με το rollover που έχω φτιάξει δεν μπορώ να επηρεάσω το width και το height της φωτογραφίας) ή θα πρέπει να φτιάξω δύο πίνακες, ή θα πρέπει να κάνω upload την φωτογραφία --> να δημιουργήσω αντίγραφο σε άλλο φάκελο -->να περάσω το όνομα της φωτό σε δύο πεδία (ένα για το thumb ένα για την εικόνα).
Ο δεύτερος είναι σίγουρα πολύ πιο μπελαλίδικος τρόπος, απο την άλλη όμως εξοικονομεί πολύ περισσότερο χώρο στον server.


@tix-3: ευχαριστώ για το παράδειγμα.

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

php και image rollover

Δημοσίευση από fafos » 22 Δεκ 2008 19:21

Den xreiazete na feiakseis neo pedio sthn vash gia ta thumbnails... aplos otan parageis to thumbnail prostheteis ena prefix ston titlo pou to soneis... gia paradeigma an h kanonikh eikona sozete os 1.jpg h thumbnail mporei na onomazete se 1_tbl.jpg... etsi ksereis oti ayto to thumbnail antistoixei sthn 1.jpg kanonikh eikona.. oute neos fakelos xreiazete.. mesa ston idio fakelo tha sozeis kai tis 2 eikones...

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

php και image rollover

Δημοσίευση από korgr » 22 Δεκ 2008 19:33

Αυτό που με λίγα λόγια εννοούσα είναι πως θα μπορούσες αντί να έχεις ένα πεδίο για το filename της μεγάλης εικόνας, να το αφαιρέσεις και αυτό και να βαπτίζεις την εικόνα κατά το upload στην μορφή id.jpg και ταυτόχρονα μετά το upload το script να σου δημιουργεί αυτόματα και το thumbnail με όνομα του τύπου id_small.jpg

Αν για παράδειγμα ανεβάζεις μια φώτο για κάποιον πελάτη και στον πίνακα που ανέφερες η εγγραφή πήρε id= 35 οι εικόνες αυτόματα θα είναι οι 35.jpg και 35_small.jpg χωρίς να αποθηκεύσεις τα ονόματά τους στη βάση.
Το id μπορείς να το ξέρεις αμέσως μετά το insert σου με:

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

$id = mysql_insert_id();
Το ίδιο μπορείς να κάνεις και τώρα όπως τον έχεις τον πίνακα, βάζοντας αυτόματα σαν πρόθεμα το "small_" στο filename της εικόνας που ανεβάζεις. Για παράδειγμα αν ανεβάζεις μια εικόνα με όνομα "home.jpg" η μικρή να είναι η "small_home.jpg" (άρα δεν χρειάζεται να αποθηκεύσεις extra στον πίνακα σου και αυτό το όνομα αφού προκύπτει αυτόματα).

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

php και image rollover

Δημοσίευση από korgr » 22 Δεκ 2008 19:34

Με πρόλαβε ο fafos :lol:

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

php και image rollover

Δημοσίευση από fafos » 22 Δεκ 2008 19:54

korgr έγραψε:Με πρόλαβε ο fafos :lol:
kontopatrioth eisai argos.. :lol:

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

php και image rollover

Δημοσίευση από korgr » 22 Δεκ 2008 22:19

fafos έγραψε: kontopatrioth eisai argos.. :lol:
Οτι είμαι, είμαι, αλλά στην συγκεκριμένη περίπτωση ας όψεται και το τηλέφωνο που κτύπησε (ευτυχώς για καλό) :lol:
Αποστόλη sorry, στο τσακίσαμε στο off topic :)

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

php και image rollover

Δημοσίευση από ThyClub » 23 Δεκ 2008 10:15

Η άποψη μου είναι οτι τα thumbnails θα πρέπει να δημιουργούνται όταν κάνεις upload την εικόνα και όχι on the fly.Γιατι για 5 εικόνες δεν θα έχεις πρόβλημα αλλά για 150 πχζ τότε πάει τον κλάταρες τον σέρβερ.

@Αποστόλη δοκίμασε κι αυτό:

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


<script type="text/javascript">
function show&#40;imagename&#41;&#123;
var imagename;
var holder = document.getElementById&#40;'placeholder'&#41;;

placeholder.src = "images/"+imagename;
&#125;

function hide&#40;&#41;&#123;

var holder = document.getElementById&#40;'placeholder'&#41;;

placeholder.src = "";
&#125;
</script>



<img src="images/thumbs/test.gif" id="image" onmouseover="show&#40;'test.gif'&#41;" onmouseout="hide&#40;&#41;" />

<img id="placeholder" src=""/>

Δλδ περνάς το όνομα της εικονας σαν παράμετρο στην function show.

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

php και image rollover

Δημοσίευση από Apostolis_38 » 23 Δεκ 2008 10:36

Ok ThyClub. θα το δοκιμάσω και θα σου πω.

@fafos και korgr: Είχα σκεφτεί κι εγώ το ενδεχόμενο που μου λέτε, αλλά δυστυχώς για κάποιο λόγο ο server δεν με αφήνει να κάνω rename τα αρχεία. Εχω δοκιμάσει πολλά τρίκ (chmod κ.λπ. κ.λ.π.) αλλά τίποτα. Ενδεικτικά να σας πω οτι όταν μπαίνω στο cpanel όλα τα files και τα directories έχουν owner εμένα αλλά οι εικόνες έχουν owner Apache. Οπότε (μέχρι να λύσω αυτό το θέμα) δεν μπορεί να γίνει κάτι τέτοιο. Το κουφό είναι οτι αυτό μου το κάνει απο τότε που άλλαξα το script για το upload. Με το παλιό script δεν είχα τέτοιο πρόβλημα. Εν πάσει περιπτώσει.

Υ.Γ. Ντροπή σας. Στο topic μου ήρθατε να τα πείτε; :D :D :D

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

php και image rollover

Δημοσίευση από ThyClub » 23 Δεκ 2008 10:49

Είναι λογικό να έχουν σαν owner τον apache αν κάνεις upload με php. Στο cpanel τα uploads γίνονται με ftp και είσαι εσύ ο owner.

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

php και image rollover

Δημοσίευση από Apostolis_38 » 23 Δεκ 2008 11:04

Πιθανώς, αλλά προτού χρησιμοποιήσω το

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

$uploaddir = $_SERVER&#91;'DOCUMENT_ROOT'&#93;."/images/";
μου έπαιζε μια χαρά το rename.

Τέςπα. Αλλο θέμα αυτό που θα φτιαχτεί κάποια στιγμή.

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

php και image rollover

Δημοσίευση από Apostolis_38 » 23 Δεκ 2008 11:15

Λοιπόν ThyClub, επειδή κάποια στιγμή πρέπει κι εσύ να κάνεις Πρωτοχρονιά με τούς δικούς σου κι όχι επάνω απο το πληκτρολόγιο απαντώντας σε μένα, πάμε λίγο βήμα βήμα.

Εδώ είναι το query:

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

$query2 = "select a.*,b.* 
           from pics a, thumbs b 
		   where a.pcustid = '".$custid."' and a.pid = b.tid";
  $result2 = mysql_query&#40;$query2&#41;;
  $num_results2 = mysql_num_rows&#40;$result2&#41;;
  while &#40;$row =mysql_fetch_array&#40;$result2&#41;&#41;
&#123;
κι εδώ εμφανίζω τίς εγγραφές.

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

&#125;
.

Λογικά εδώ πρέπει να "σπάσει" η php και να μπεί η java. Σωστά;
Οπότε έχουμε:

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

?><script type="text/javascript"> 
function show&#40;imagename&#41;&#123; 
var imagename; 
var holder = document.getElementById&#40;'placeholder'&#41;; 

placeholder.src = "images/"+imagename; 
&#125; 

function hide&#40;&#41;&#123; 

var holder = document.getElementById&#40;'placeholder'&#41;; 

placeholder.src = ""; 
&#125; 
</script>

<img src="images/thumbs/test.gif" id="image" onmouseover="show&#40;'test.gif'&#41;" onmouseout="hide&#40;&#41;" /> 

<img id="placeholder" src=""/> <?php
Πού δηλώνω το:

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

.$row&#91;'thumb'&#93;.
για να μου εμφανίσει τίς εγγραφές;
Λογικά στο:

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

<img src="images/thumbs/test.gif"
, αλλά δεν...
Δοκίμασα και στο:

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

placeholder.src = "images/"+imagename; 
αλλά πάλι τίποτα

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

php και image rollover

Δημοσίευση από ThyClub » 23 Δεκ 2008 11:32

Λοιπόν...

Ξεκινάς με την js:

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

<script type="text/javascript"> 
function show&#40;imagename&#41;&#123; 
var imagename; 
var holder = document.getElementById&#40;'placeholder'&#41;; 

placeholder.src = "images/"+imagename; 
&#125; 

function hide&#40;&#41;&#123; 

var holder = document.getElementById&#40;'placeholder'&#41;; 

placeholder.src = ""; 
&#125; 
</script>

<img id="placeholder" src=""/>
Μετά με php:

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

$query2 = "select a.*,b.* 
           from pics a, thumbs b 
         where a.pcustid = '".$custid."' and a.pid = b.tid"; 
  $result2 = mysql_query&#40;$query2&#41;; 
  $num_results2 = mysql_num_rows&#40;$result2&#41;; 
  while &#40;$row =mysql_fetch_array&#40;$result2&#41;&#41; 
&#123;
echo "<img src="images/thumbs/$row&#91;thumb&#93;" id="image" onmouseover="show&#40;'$row&#91;image&#93;'&#41;" onmouseout="hide&#40;&#41;" />";
&#125;
:D

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

php και image rollover

Δημοσίευση από ThyClub » 23 Δεκ 2008 11:35

Επίσης καλό είναι στο placeholder να δώσεις και μεγέθη εικόνας πχ:

<img id="placeholder" src="" width="400" height="300" />

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

php και image rollover

Δημοσίευση από Apostolis_38 » 23 Δεκ 2008 14:04

Κοντά πρέπει να είμαστε.

Με μία μικρή αλλαγή

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

echo "<img src=images/thumbs/".$row&#91;'thumb'&#93;." id='image' onmouseover='show&#40;'".$row&#91;'thumb'&#93;."'&#41;' onmouseout=hide&#40;&#41;' />";
αντί για:

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

echo "<img src="images/thumbs/$row&#91;thumb&#93;" id="image" onmouseover="show&#40;'$row&#91;image&#93;'&#41;" onmouseout="hide&#40;&#41;" />"; 
(γιατί μου βγάζει unifined index image)

φέρνει τα thumbs αλλά δεν εμφανίζει την εικόνα στο placeholder.Απλώς δείχνει το κουτάκι με το κόκκινο X, που σημαίνει οτι δεν βρίσκει την εικόνα που πρέπει να εμφανίσει.

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

php και image rollover

Δημοσίευση από Apostolis_38 » 24 Δεκ 2008 13:15

Ελα Χιούστον, γουί χάβ α κόντακτ :victory: .

Αφού πρώτα παίδεψα το script του tix-3 (ευχαριστώ πολύ) που είναι πολύ πιο απλό βρήκα άκρη και στο δικό σου ThyClub.

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

placeholder.src = "absolute path"+imagename;
και όλα καλά.

Ζητάω συγνώμη αν σας τσάκισα αλλά μπορεί για εσάς να είναι απλό αυτό το κόλπο, για μένα όμως όχι.
Αλλιώς δεν θα ζήταγα τη βοήθειά σας :D
Χρωστάω ένα κουτί μελομακάρονα στον καθένα :D

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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