Αντικατασταση εικονασ (update) - τα φωτα σασ

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

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

Απάντηση
alohagr
Δημοσιεύσεις: 25
Εγγραφή: 16 Ιουν 2007 10:41

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από alohagr » 04 Οκτ 2008 11:09

Καλημέρα σε όλους, θα ήθελα να με βοηθήσετε σχετικά με το πως μπορώ να κάνω αντικατάσταση μιας εικόνας όταν κάνω edit. έχω χρησιμοποιήσει το script που βρήκα από εδώ www.freestuff.gr/forums/viewtopic.php?h ... bs&t=33159 (του fafos) για δημιουργία thumbnail και με έχει βοηθήσει πάρα πολύ. Αυτό που θέλω να κάνω τώρα είναι να μπορώ όταν κάνω edit όπως αλλάζω τα πεδία κειμένου που έχω προσθέσει, να μπορώ να αλλάζω και την φωτογραφία. Δηλαδή να διαγράφω την υπάρχουσα και να την αντικαθιστώ με μια καινούρια. Ευχαριστώ προκαταβολικά.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από vassilism » 04 Οκτ 2008 13:32

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

Λοιπόν, το 1ο πράγμα που πρέπει να κάνεις είναι να διαγράφεις την φωτογραφία.
Εδώ θα χρειαστείς κάποιους ελέγχους αν έχεις ανεβάσει κάποια φωτογραφία.

Εγώ έχω κάνει το εξής:
Στο script που ανεβάζω την φωτογραφία του λέω ότι αν δεν ανεβάζω κάποια φωτογραφία τότε αποθήκευσε στην βάση στο πεδίο thumb το κείμενο nothumb και στο πεδίο image το κείμενο noimage. Με αυτό τον τρόπο ξέρω αν έχω ανεβάσει κάποια φωτογραφία ή όχι.

Στην περίπτωση που έχεις ανεβάσει φωτογραφία και θες να την διαγράψεις πρέπει:
1 Να διαγράφεις το αρχείο του thumb και το αρχείο της image από τον φάκελο που τις έχεις ανεβάσει.
2 Να κάνεις UPDATE στην βάση για να ενημερώσεις την συγκεκριμένη εγγραφή.

Τώρα στο script που κάνεις edit πρέπει να βάλεις ένα Link του τύπου:

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

echo&#40;"<a href=\"delete_image.php?id=" . $rows&#91;'id'&#93; ." &thumb=". $rows&#91;'thumb'&#93; ."&image=" . $rows&#91;'image'&#93; . "\">Διαγραφή φωτογραφίας</a>"&#41;;
Έπειτα πρέπει να υπάρχει ένα script που να σου κάνει αυτή τη δουλειά.
Εγώ έχω φτιάξει το delete_image.php το οποίο είναι κάπως έτσι:

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

unlink&#40;$_SERVER&#91;'DOCUMENT_ROOT'&#93; . "/fotos/".$thumb&#41;;
unlink&#40;$_SERVER&#91;'DOCUMENT_ROOT'&#93; . "/fotos/".$image&#41;;
$query = "UPDATE uploads SET thumb='$nothumb',image='$noimage' WHERE id='$id'";
$result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;; 
echo&#40; "Η εικόνα διαγράφηκε" &#41;;
Αρχικά αυτά, ξεκίνα και σιγά σιγά θα τα καταφέρεις :wink:

alohagr
Δημοσιεύσεις: 25
Εγγραφή: 16 Ιουν 2007 10:41

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από alohagr » 04 Οκτ 2008 22:49

αρχικά να σε ευχαριστήσω για την απάντηση σου και να σου πω ότι μέχρι στιγμής έχω καταφέρει να κάνω edit έτσι ώστε να αλλάζω τα πεδία κειμένου (εκτός την φωτογραφία) και delete εγγραφών μαζί με τις φωτογραφίες που έχω ανεβάσει (thumb, image). Μέχρι εδώ όλα καλά λοιπόν, απλώς θέλω στο edit να μπορώ να αλλάζω και την φωτογραφία αν χρειαστεί.. Ελπίζω να έγινα κατανοητός.

* Επίσης να σου πω ότι δεν υπάρχει λόγος για να κάνω έλεγχο αν υπάρχει φωτογραφία γιατί έτσι και αλλιώς μέσα από το script του fafos αν δεν ανεβάσεις φωτογραφία δεν καταχωρείται εγγραφή στη βάση.

Ευχαριστώ και πάλι

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από vassilism » 05 Οκτ 2008 00:08

Ωραία μια χαρά τα πάς.
Τώρα για να ανεβάζεις πάλι εικόνα σου προτείνω να βασιστείς στο script που χρησιμοποιείς για να κάνεις την καταχώρηση.
Τον κώδικα τον έχεις ήδη και σου έχει μείνει ένας έλεγχος.
Από την στιγμή που έχεις διαγράψει την φωτογραφία δώσε να σου εμφανίζει αυτό:

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

<input type="file" name="uploaded_file">

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

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από fafos » 05 Οκτ 2008 14:35

Geia sou patrida!! :lol:

den xreiazetai na diagrapseis mia photo gia na kaneis antikatastash, aplos thn "kavalas" me thn nea photo:

kseroume oti ths dinoume ena titlo me to fname, p.x. 1253456_lrg.jpg kai 1253456_sml.jpg..

autes oi times yparxoun hdh sthn vash mas (image kai thumb), opote pairnoume mia timh apo thn eggrafh mas p.x. thn image kai eksagoume to fname pou ths exoume dosei:


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

$fname = explode&#40;'_', $image&#41;;
$fname = $fname&#91;0&#93;;
(opou $image h timh apo thn vash mas)

tora tha exoume $fname = 1253456 kai ksekiname thn eisagogh ths neas fotografias me to script kai anti gia insert sthn vash mas dinoume update (prepei na kanoume kai sta image kai thumb update dioti mporei na alaksame thn morfh ths photo p.x. apo jpg se gif)

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από Banavas » 05 Οκτ 2008 14:44

Μέχρι εδώ όλα καλά λοιπόν, απλώς θέλω στο edit να μπορώ να αλλάζω και την φωτογραφία αν χρειαστεί.. Ελπίζω να έγινα κατανοητός.
Στη φόρμα που αλλάζεις (edit) τα στοιχεία βάλε ένα έλεγχο ώστε ένα κομμάτι κώδικα να εκτελείτε μόνο αν έχει συμπληρωθεί το πεδίου αρχείου.
π.χ.

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

if&#40;!$_FILES&#91;userfile&#93;&#91;name&#93;==""&#41; &#123;
// κώδικας για διαγραφή προηγούμενης 
// κώδικας για ανέβασμα νέας εικόνας
&#125;
Έτσι η εικόνα θα αλλάζει μόνο όταν συμπληρώσεις το πεδίο "userfile". Αν δεν χρησιμοποιήσεις τον έλεγχο τότε όταν κάνεις διόρθωση και δεν δίνεις νέα εικόνα θα σου διαγράφει την παλιά.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από vassilism » 05 Οκτ 2008 15:49

Γεια σας «παιδιά» :P
fafos έγραψε: den xreiazetai na diagrapseis mia photo gia na kaneis antikatastash, aplos thn "kavalas" me thn nea photo:


Καλό !!!
Ούτε που μου είχε περάσει απ το μυαλό :doh:

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από Banavas » 05 Οκτ 2008 16:04

vassilism έγραψε:Γεια σας «παιδιά» :P
fafos έγραψε: den xreiazetai na diagrapseis mia photo gia na kaneis antikatastash, aplos thn "kavalas" me thn nea photo:


Καλό !!!
Ούτε που μου είχε περάσει απ το μυαλό :doh:
Με την προυπόθεση οτι το όνομα ανεβαίνει με το ίδιο ακριβώς όνομα.
Αν κάνεις διορθώσεις στο πρωτότυπο και ανεβάσεις πάλι την ίδια εικόνα οκ. Αν Όμως μετά από καιρό θέλεις να αλλάξεις μια φώτο με μια άλλη είναι δύσκολο να θυμάσαι πώς ήταν το όνομα του αρχείου ή θα πρέπει να ψάξεις να το βρεις και να μετονομάσεις το αρχείο σου. Κάτι που δεν είναι και πολύ πρακτικό.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από vassilism » 05 Οκτ 2008 16:32

Μάρκο αφού τα ονόματα των αρχείων τα κρατάμε στη βάση και ξέρουμε που και ποιο είναι.
Γιατί δεν είναι πρακτικός αυτός ο τρόπος?

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από Banavas » 05 Οκτ 2008 16:48

Μα το ανέφερα στο παραπάνω post. Γιατί θα πρέπει να θυμάμαι, ή να ψάξω να βρώ το όνομα από την βάση και να μετονομάσω το νέο αρχείο, από την στιγμή που μπορώ μα μην κάνω τίποτα από αυτά και απλώς να ανεβάσω ένα νέο αρχείο.

Δεν είπα οτι δεν γίνεται, αλλά οτι δεν είναι πολύ πρακτικό. :wink:
Happy coding....
Μάρκος
http://lasernet.gr

alohagr
Δημοσιεύσεις: 25
Εγγραφή: 16 Ιουν 2007 10:41

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από alohagr » 06 Οκτ 2008 10:59

Καλημέρα σε όλους σας και ευχαριστώ πολύ για τις απαντήσεις σας. Δυστυχώς το Σαββατοκύριακο έλειπα και τώρα άνοιξα τον υπολογιστή μου. Για να καταλάβω καλύτερα fafos δηλαδή μου λες να χρησιμοποιήσω το ίδιο script με τη διαφορά αντί για INSERT να βάλω UPDATE ? σας δίνω τον κώδικα που έχω κάνει μέχρι στιγμής για το edit για να με κατατοπίσετε λίγο περισσότερο. Που πρέπει να βάλω το script για την UPDATE της φωτογραφίας ; ευχαριστώ και πάλι παιδιά.

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

<div id="content">

<?php
require_once 'config.php';

  // Συνδέσου και επέλεξε τη βάση δεδομένων 
 $link = mysql_connect&#40;$dbhost, $dbuser, $dbpass&#41;;
 $editimg = $_GET&#91;'id'&#93;;
 $query = "SELECT * FROM $dbimg WHERE id='$editimg'";
 $result = mysql_db_query&#40;$dbname, $query, $link&#41;; 
 while&#40;$a1 = mysql_fetch_array&#40;$result&#41;&#41; 
	&#123;
 

?>




<h1><font color="#999999">Επεξεργασία του </font><font color="#ff0000"> <? echo "$a1&#91;title&#93;" ?> </font></h1>

<form action="edit.php" method="post" name="edit">

	Τίτλος &#58; <br />
	<input type="text" size="100"  name="title" id="title"  value="<? echo "$a1&#91;title&#93;"; ?>" />
  <br />
   <br />

    <hr />
      <?      
       $sql_cat_id = "SELECT id, category FROM categories";
       $res_cat_id = mysql_query&#40;$sql_cat_id&#41;;
                               
     ?>
                                                        
	Κατηγορία &#58;&nbsp;
    <select name="category_id">
	<?
	while &#40;$cat_array = mysql_fetch_array&#40;$res_cat_id&#41;&#41;
	&#123;
	echo "<option value=\"".$cat_array&#91;'id'&#93;."\" >".$cat_array&#91;'category'&#93;."</option>";
	&#125;
           ?>
       </select>
      <br /><br />
      
    <fieldset><legend>Φωτογραφία </legend><br /><? echo "<img src=\"uploads/$a1&#91;thumb&#93;\">" ?></fieldset>
       
	<br /><br />
  
	<input type="SUBMIT" name="edit" value="Αποθήκευση" />
	<input type="hidden" name="id" value="<? echo $editimg?>"> 
	
    
   
  </form>

<?
&#125;
?>

<?
// Εάν έχει γίνει αίτηση για επεξεργασία του νέου, το αλλάζω στη βάση δεδομένων
	if&#40;"Αποθήκευση" == $edit&#41; &#123;
					$title = $_POST&#91;'title'&#93;;
					$category_id = $_POST&#91;'category_id'&#93;;
					$editimg      = $_POST&#91;'id'&#93;;
					
					$sql = "UPDATE $dbimg set
										title = '$title', 
								 		category_id = '$category_id'
										where id  =  '$editimg'";
			 if &#40;mysql_query&#40;$sql&#41;&#41; &#123;
                        echo "<script language='JavaScript'> alert&#40;'Τα στοιχεία άλλαξαν με επιτυχία!'&#41;; </script>";
						 echo "<script language='JavaScript'> window.location='show.php'; </script>"; 

                        &#125; else &#123;
                                echo "<script language='JavaScript'> alert&#40;'Υπήρξε πρόβλημα κατά την επεξεργασία&#58;'&#41;; </script>".
                                mysql_error&#40;&#41;;
                                &#125;
                        &#125;
		
?>

</div>

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από vassilism » 06 Οκτ 2008 18:06

alohagr έγραψε:Για να καταλάβω καλύτερα fafos δηλαδή μου λες να χρησιμοποιήσω το ίδιο script με τη διαφορά αντί για INSERT να βάλω UPDATE ?
Ακριβώς αυτό σου λέει.
Πρόσεξε όμως να αναφέρεσε στην συγκεκριμένη εγγραφή.
Δηλάδη να κάνεις πρώτα GET τα στοιχεία απο τη βάση σου.

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από Alice_Cooper » 07 Οκτ 2008 00:23

Banavas έγραψε:Μα το ανέφερα στο παραπάνω post. Γιατί θα πρέπει να θυμάμαι, ή να ψάξω να βρώ το όνομα από την βάση και να μετονομάσω το νέο αρχείο, από την στιγμή που μπορώ μα μην κάνω τίποτα από αυτά και απλώς να ανεβάσω ένα νέο αρχείο.

Δεν είπα οτι δεν γίνεται, αλλά οτι δεν είναι πολύ πρακτικό. :wink:
ego pantos afto me thn antikatastash kano panta ....
sthn diorthosh stelno to onoma arxeiou apo thn emfanish kai apla sozo me to idio onoma to file ...
den xriazete update h db mono to select pou exeis hdh kanei ;)

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από Banavas » 07 Οκτ 2008 08:49

Λες να είναι πιο πρακτικό και να μην το βλέπω εγώ; :think:

Ισως είναι και όπως συνιθίσει ο καθένας!
Happy coding....
Μάρκος
http://lasernet.gr

alohagr
Δημοσιεύσεις: 25
Εγγραφή: 16 Ιουν 2007 10:41

Αντικατασταση εικονασ (update) - τα φωτα σασ

Δημοσίευση από alohagr » 07 Οκτ 2008 10:16

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

Απάντηση

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

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

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