delete σε php/MySql

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

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

Απάντηση
nickop
Δημοσιεύσεις: 72
Εγγραφή: 03 Μάιος 2006 19:35
Επικοινωνία:

delete σε php/MySql

Δημοσίευση από nickop » 27 Σεπ 2007 20:36

Έχω το εξής.Μια φόρμα να καταχωρώ τα πεδία(form.html) μια βάση να τα αποθηκεύω και μια σελίδα (data.php) να τραβάω τα αποτελέσματα απο τη βάση.Στο data.php εμφανίζεται όλος ο πίνακας απο τη βάση δεν χρησιμοποιώ select.Τώρα θέλω να μπορώ να σβήνω εγγραφές απο τον πίνακα της βάσης απο το αρχείο form.html.Θέλω να κάνω delete κάποιες εγγραφές απο τη βάση μέσα απο το αρχείο form.html.Έχω δοκιμάσει κάτι τι οποίο δεν είναι το καλύτερο.Έχω κάνει ένα αρχείο delete.php

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

<?php
$con = mysql_connect&#40;"localhost","user","pass"&#41;;
if &#40;!$con&#41;
  &#123;
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
  &#125;

mysql_select_db&#40;"table", $con&#41;;

mysql_query&#40;"DELETE FROM prices WHERE stili = '40'"&#41;;

mysql_close&#40;$con&#41;;
?>
Έδωσα link μεσα στο form.html στο αρχείο delete.php και όταν το πατάω οκ σβήνεται απο τον πίνακα η γραμμή που έχει τη stili με int το 40.

Αυτό θέλω να αλλάξω.Θέλω κάτι που όταν τα πατάω να επιλέγω χειροκίνητα, να κάνω κάτι μέσα στο form.html που να καταχωρώ και μετά να πατάω delete και να σβήνεται.Δηλαδή τη μια να βάζω χειροκίνητα 40 την άλλη 50 έτσι ώστε να επιλέγω ποια σειρά απο τον πίνακα θα διαγραφεί.

Δεν ξέρω αν έγινα κατανοητός.
Είναι τα πρώτα μου βήματα σε php/Mysql

Άβαταρ μέλους
xmavidis
Honorary Member
Δημοσιεύσεις: 1217
Εγγραφή: 02 Δεκ 2003 19:59
Τοποθεσία: Ηράκλειο

delete σε php/MySql

Δημοσίευση από xmavidis » 28 Σεπ 2007 00:19

Το link της εγγραφής που θα διαγράψεις πχ θα είναι delete.php?id=5 ή οποιοσδήποτε άλλος ακέραιος. Στην σελίδα που πηγαίνεις θα έχεις αυτό:

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

$id = $_REQUEST&#91;'id'&#93;;
$query = mysql_query&#40;"SELECT FROM `table` WHERE `id`='$id' LIMIT 1"&#41;;
I want to know God’s thoughts; the rest are details.
Albert Einstein

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

delete σε php/MySql

Δημοσίευση από Banavas » 28 Σεπ 2007 13:34

Kάνε post τον κώδικα data.php για να σου τον μετατρέψω ώστε να κάνεις διαγραφή όποιο record θέλεις.
Happy coding....
Μάρκος
http://lasernet.gr

nickop
Δημοσιεύσεις: 72
Εγγραφή: 03 Μάιος 2006 19:35
Επικοινωνία:

delete σε php/MySql

Δημοσίευση από nickop » 28 Σεπ 2007 16:06

Ο κώδικας απο το data.php είναι ο παρακάτω

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

<?php
$con = mysql_connect&#40;"localhost","user","pass"&#41;;
if &#40;!$con&#41;
  &#123;
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
  &#125;

mysql_select_db&#40;"table", $con&#41;;

$result = mysql_query&#40;"SELECT * FROM prices"&#41;;

echo "<table width='300' border='1' align=center>
<tr>
<th>1 column</th>
<th>2 column</th>
<th>3 column</th>
</tr>";

while&#40;$row = @mysql_fetch_array&#40;$result&#41;&#41;
  &#123;
  echo "<tr>";
  echo "<td>" . $row&#91;'date'&#93; . "</td>";
  echo "<td>" . $row&#91;'dik'&#93; . "</td>";
  echo "<td>" . $row&#91;'trik'&#93; . "</td>";
  echo "</tr>";
  &#125;
echo "</table>";

mysql_close&#40;$con&#41;;
?>&#91;quote&#93;

&#91;/quote&#93;
δεν έχω id άρα αυτό που προτείνει ο xmavidis μάλλον δεν μπορώ να το κάνω.Εμποδίζει αυτό για να γίνει κάτι?

Ευχαριστώ

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

delete σε php/MySql

Δημοσίευση από Banavas » 28 Σεπ 2007 18:27

Το id μάλλον θα πρέπει να το προσθέσεις αν δεν έχεις κάποιο πεδίο μοναδικό πχ κωδικός.
Πρακτικά να το χρησιμοποιείς πάντα. Χρειάζεται για να μπορείς να βρείς μια συγκεκριμένη εγγραφή. Αν για παράδειγμα αναζητήσεις για date=(ημερομηνία) μπορεί να υπάρχουν πολές εγγραφές με την ίδια ημερομηνία, αν πάλι κάνεις μια εγγραφή ανά ημέρα τότε μπορεί το πεδίο date να δουλέψει σαν id.
Αναφέρομαι σε αναζητήσεις στη βάση που ενδεχομένως να μην σε ενδιαφέρουν για παρουσίαση των εγγραφών όμως όταν θέλεις να κάνεις μια ενέργεια όπως διόρθωση ή διαγραφή πρέπει να επιλέξεις την κατάλληλη εγγραφή στην οποία θα γίνουν οι αλλαγές.

Επειδή δεν ξέρω αν κάποιο από τα πεδία που έχεις, έχει μοναδικές εγγραφές θα σου δείξω σαν να είχες id και εσύ πρόσθεσέ το στον πίνακά σου.

Μπορεί να γίνει και με ξεχωριστό αρχείο αλλά θα σου δείξω πως να το κάνει με το ίδιο αρχείο data.php.


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

<?php 
$con = mysql_connect&#40;"localhost","user","pass"&#41;; 
if &#40;!$con&#41; 
  &#123; 
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;; 
  &#125; 
mysql_select_db&#40;"table", $con&#41;; 

//1111111111+++++++++++++++++++++++++++++++++++++++++++++
$id=$_GET&#91;id&#93;;
$del=$_GET&#91;del&#93;;

if &#40;del==1&#41; &#123; // αν η del έχει τιμή 1 τότε θα εκτελεστεί ο παρακάτω κώδικας 
 mysql_query&#40;"DELETE * FROM prices WHERE id='$id' "&#41;; 
&#125;
//1111111111+++++++++++++++++++++++++++++++++++++++++++

$result = mysql_query&#40;"SELECT * FROM prices"&#41;; 

echo "<table width='300' border='1' align=center> 
<tr> 
<td>1 column</td> 
<td>2 column</td> 
<td>3 column</td> ";
//22222222+++++++++++++++++++++++++++++++++++++++++++++  
echo"<td>del</td> ";
//22222222+++++++++++++++++++++++++++++++++++++++++++++  

echo"</tr>"; 

while&#40;$row = @mysql_fetch_array&#40;$result&#41;&#41; 
  &#123; 
  echo "<tr>"; 
  echo "<td>" . $row&#91;'date'&#93; . "</td>"; 
  echo "<td>" . $row&#91;'dik'&#93; . "</td>"; 
  echo "<td>" . $row&#91;'trik'&#93; . "</td>"; 
//333333333+++++++++++++++++++++++++++++++++++++++++++++  
  echo "<td><a href=\"data.php?del=1&id=" . $row&#91;'id'&#93; . "\">del</a></td>"; 
//333333333+++++++++++++++++++++++++++++++++++++++++++++  

  echo "</tr>"; 
  &#125; 
echo "</table>"; 
mysql_close&#40;$con&#41;; 
?>
H γραμμές κώδικα στην προσθήκη 2 & 3 θα προσθέσουν μία στήλη επιπλέον στην παρουσίαση των αποτελεσμάτων η οποία θα είναι ένα link del για κάθε γραμμή.
Εφόσον πατηθεί κάποιο del θα εκτελεστεί η εντολή <a> και θα ξανατρέξει το data.php με επιπλέον τιμές για τις παραμέτρους $del και $id.

Η del=1 θα έχει αποτέλεσμα να διαγραφεί η εγγραφή που έχει για id την τιμή του $id.
Μετά την διαγραφή θα συνεχίσει την εκτέλεση του κώδικα και θα εμφανίσει τα αποτελέσματα του πίνακα χωρίς το διαγραμμένο record.
Happy coding....
Μάρκος
http://lasernet.gr

nickop
Δημοσιεύσεις: 72
Εγγραφή: 03 Μάιος 2006 19:35
Επικοινωνία:

delete σε php/MySql

Δημοσίευση από nickop » 29 Σεπ 2007 00:42

Ευχαριστώ Lasernet για τη βοήθειά σου.Αλλά δεν κατάφερα.Μήπως υπάρχει κάποιο λάθος στον κώδικα που μου έδωσες.Έβαλα στον id(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY)προστέθηκε στις εγγραφές κανονικά στο data.php εμφανίζεται η καινούργια στήλη με το del αλλά όταν το πατάω βγάζει σφάλμα ότι δεν υπάρχει η σελίδα αυτή.
http://www.domain.gr/data.php?del=1&id=1

Πού στραβώνει η δουλειά?

Άβαταρ μέλους
p_pan
Δημοσιεύσεις: 1248
Εγγραφή: 11 Φεβ 2007 20:45
Τοποθεσία: Άστεγος!

delete σε php/MySql

Δημοσίευση από p_pan » 29 Σεπ 2007 03:51

koita den katalabeno gt mpeneis se tosi diadikasia.. to 8ema einai polu aplo... stin selida probolis 8a kaneis ena link to opoio 8a pigainei stin selida tou delete.php
kai auth 8a exei tin entoli gia delete h opoia 8a kanei delete id = $id opou $id = $_GET[id] to opoio 8a erxete apo tin selida pou emfanizonte oles h eggrafes... e kai 8a exeis ena link tou tipou... http://www.mypage.gr/delete.php?id=$id tora apo oti tsekara apo epano xoris na 8elo na prosbalo tis gnoseis kanenos pisteuo oti polla pragmata periseboun... dustixos den eimai sto pc m auth thn stigmi kai den mporo na katso na tsekaro para polu prosektika ton kodika kai na s doso to diko m paradigma kodika alla molis mporeso 8a to kano...[/code]
Αγράματος...

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

delete σε php/MySql

Δημοσίευση από Banavas » 29 Σεπ 2007 11:04

nickop έγραψε:Ευχαριστώ Lasernet για τη βοήθειά σου.Αλλά δεν κατάφερα.Μήπως υπάρχει κάποιο λάθος στον κώδικα που μου έδωσες.Έβαλα στον id(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY)προστέθηκε στις εγγραφές κανονικά στο data.php εμφανίζεται η καινούργια στήλη με το del αλλά όταν το πατάω βγάζει σφάλμα ότι δεν υπάρχει η σελίδα αυτή.
http://www.domain.gr/data.php?del=1&id=1

Πού στραβώνει η δουλειά?
Κατ' αρχήν ο κώδικας είναι ατσεκάριστος αλλά δεν νομίζω να έχει λάθος.
Κάτι συμβαίνει με το path. Πιθανόν να καλείς το data.php από κάποιο άλλο directory.
Anyway άλλαξε το κώδικα όπως παρακάτω για να λυθεί το πρόβλημα:

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

//333333333+++++++++++++++++++++++++++++++++++++++++++++  
  echo "<td><a href="". $PHP_SELF. "?del=1&id=" . $row&#91;'id'&#93; . "">del</a></td>"; 
//333333333+++++++++++++++++++++++++++++++++++++++++++++  
Εννοείται οτι αν βάλεις public το αρχείο data.php δεν θα σου μείνει ούτε μια εγγραφή.
Θα πρέπει να έχεις ένα αρχείο χωρίς τις προσθήκες για public και ένα αρχείο με τις προσθήκες ως σελίδα διαχείρισης με περιορισμένη πρόσβαση.
Happy coding....
Μάρκος
http://lasernet.gr

nickop
Δημοσιεύσεις: 72
Εγγραφή: 03 Μάιος 2006 19:35
Επικοινωνία:

delete σε php/MySql

Δημοσίευση από nickop » 29 Σεπ 2007 21:46

Σας ευχαριστώ και lasernet το ξέρω οτι σε ζαλίζω.Καταλαβαίνω όλα αυτά που μου λες για public και τέτοια.
Τώρα άλλαξα το κώδικα που μου έδωσες.Φορτώνει η σελίδα κανονικά αλλά δεν διαγράφεται η εγγραφή.Είναι σωστό το link που δίνει το del όσον αναφορά το id γιατί το συνγκρίνω με την εγγραφή απο τη βάση και είναι το ιδιο id.
Φορτώνει η σελίδα αλλα΄δεν διγράφεται η εγγραφή....

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

delete σε php/MySql

Δημοσίευση από Banavas » 29 Σεπ 2007 22:21

Σβύσε το αστεράκι όπως παρακάτω

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

mysql_query&#40;"DELETE FROM prices WHERE id='$id' "&#41;; 
δοκίμασε πάλι και πές μας τα αποτελέσματα.
Happy coding....
Μάρκος
http://lasernet.gr

nickop
Δημοσιεύσεις: 72
Εγγραφή: 03 Μάιος 2006 19:35
Επικοινωνία:

delete σε php/MySql

Δημοσίευση από nickop » 30 Σεπ 2007 18:28

Thanks banavas και πάλι αλλά το αποτέλεσμα είναι το ίδιο.Φορτώνει τη σελίδα μετά του πάτημα του del αλλά δεν διαγράφεται.
??????????

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

delete σε php/MySql

Δημοσίευση από Banavas » 30 Σεπ 2007 21:55

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

 if &#40;$del==1&#41; &#123;  
Sorry τώρα το πρόσεξα. Έκανα λάθος στο παραπάνω σημείο (ξέχασα το $)
Happy coding....
Μάρκος
http://lasernet.gr

nickop
Δημοσιεύσεις: 72
Εγγραφή: 03 Μάιος 2006 19:35
Επικοινωνία:

delete σε php/MySql

Δημοσίευση από nickop » 01 Οκτ 2007 00:15

Ευχαριστώ Banavas για το χρόνο που αφιέρωσες.Δουλεύει κανονικά.

Απάντηση

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

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

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