Πρόβλημα στην Διαχείριση Δεδομένων

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

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

Απάντηση
Άβαταρ μέλους
dimos_mitel
Δημοσιεύσεις: 279
Εγγραφή: 07 Αύγ 2009 21:06
Επικοινωνία:

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από dimos_mitel » 11 Μάιος 2012 20:54

Καλησπέρα σε όλους, έχω μια σελίδα διαχείρισης στην οποία εμφανίζονται η εγγραφές από τον πίνακα stoixeia_omadwn. Στην συγκεκριμένη σελίδα θέλω να υπάρχει η δυνατότητα της εμφάνισης, διαγραφής, ενημέρωσης και προσθήκης. Όμως κάτι πάει στραβά και δεν λειτουργεί. Μπορεί κανείς να βρει που έχω κάνει λάθος? Δεξιά από κάθε εγγραφή εμφανίζεται η δυνατότητα της ενημέρωσης και της διαγραφής. Μέσω του hidden θέλω να έχω για την κάθε εγγραφή το id της προκειμένου όταν πατήσω διαγραφή ή ενημέρωση δίπλα από αυτή που με ενδιαφέρει, μέσω του id της να γίνεται μεταβολή στην εγγραφή που θέλω. Τα submit button τα έχω δώσει το ίδιο όνομα (χ) επειδή πηγαίνει αυτή σε μια συνάρτηση για το layout της σελίδας μου.

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

<?php


$con = mysql_connect&#40;"localhost","root",""&#41;;
if &#40;!$con&#41;&#123;
die&#40;"Can not connect&#58; " . mysql_error&#40;&#41;&#41;;
&#125;
mysql_select_db&#40;"fillo_agwna",$con&#41;;
mysql_query&#40;"SET NAMES 'utf8'"&#41;;

//εδώ ελέγχω άν έγινε post και μετά άν είναι update,delete ή add
if &#40;isset&#40;$_POST&#91;'x'&#93;&#41;&#41; &#123;
if &#40;$_POST&#91;'x'&#93;=='update!!'&#41; &#123;

mysql_query&#40;'update stoixeia_omadwn set kwdikos_omadas="'.$_POST&#91;'kwdikos_omadas'&#93;.'" where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;.'"'&#41;;
mysql_query&#40;'update stoixeia_omadwn set onoma_omadas="'.$_POST&#91;'onoma_omadas'&#93;.'" where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;.'"'&#41;;

//Δεξιά από κάθε εγγραφή έχω update και delete, αναλόγως ποια θέλω να ενημερώσω ή διαγράψω το  where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;.'"'&#41;; θέλω να πέρνει το id της αντίστοιχης εγγραφής.

mysql_query&#40;'update stoixeia_omadwn set ar_arxigou="'.$_POST&#91;'ar_arxigou'&#93;.'" where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;.'"'&#41;;


&#125;
else if&#40;$_POST&#91;'x'&#93; == 'delete!!'&#41;&#123;
$DeleteQuery = "DELETE FROM stoixeia_omadwn WHERE kwdikos_omadas='$_POST&#91;hidden&#93;'";
mysql_query&#40;$DeleteQuery, $con&#41;;
&#125;
else if&#40;$_POST&#91;'x'&#93; == 'add!!'&#41;&#123;
$AddQuery = "INSERT INTO stoixeia_omadwn &#40;kwdikos_omadas, onoma_omadas, ar_arxigou&#41; VALUES &#40;'$_POST&#91;ukwdikos_omadas&#93;','$_POST&#91;uonoma_omadas&#93;','$_POST&#91;uar_arxigou&#93;'&#41;";
mysql_query&#40;$AddQuery, $con&#41;;
&#125;
&#125;

$sql = "SELECT * FROM stoixeia_omadwn";
$myData = mysql_query&#40;$sql,$con&#41;;
echo "<table border=1>
<tr>
<th>Κωδικός Ομάδας</th>
<th>Όνομα Ομάδας</th>
<th>Αριθμός Αρχηγού</th>
</tr>";
while&#40;$row = mysql_fetch_array&#40;$myData&#41;&#41;&#123;
echo "<form action=manage_omades.php method=POST>";
echo "<tr>";
echo "<td>" . "<input type=text name=kwdikos_omadas readonly=readonly value=" . $row&#91;'kwdikos_omadas'&#93; . " </td>";
echo "<td>" . "<input type=text name=onoma_omadas value=" . $row&#91;'onoma_omadas'&#93; . " </td>";
echo "<td>" . "<input type=text name=ar_arxigou value=" . $row&#91;'ar_arxigou'&#93; . " </td>";

//αυτή είναι η εγγραφή τύπου hidden που πέρνει την τιμή του id της κάθε εγγραφής &#40;αυτό τουλάχιστον θέλω να κάνει αλλά υπάρχει πρόβλημα.&#41;

echo "<td>" . "<input type=hidden name=hidden value=" . $row&#91;'kwdikos_omadas'&#93; . " 

</td>";
echo "<td>" . "<input type=submit name=x value=update!!" . " </td>";
echo "<td>" . "<input type=submit name=x value=delete!!" . " </td>";
echo "</tr>";

&#125;


echo "<tr>";

// τα παρακάτω χρησημοποιούνται για το ερώτημα του insert και δεν τα συμπεριλαμβάνω στο loop

echo "<td><input type=hidden name=ukwdikos_omadas></td>";
echo "<td><input type=text name=uonoma_omadas></td>";
echo "<td><input type=text name=uar_arxigou></td>";
echo "<td>" . "<input type=submit name=x value=add!!" . " </td>";
echo "</form>";
echo "</table>";
mysql_close&#40;$con&#41;;

?>
[/list]
Τελευταία επεξεργασία από το μέλος dimos_mitel την 12 Μάιος 2012 02:33, έχει επεξεργασθεί 1 φορά συνολικά.
miteletsis

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

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από Apostolis_38 » 12 Μάιος 2012 01:11

Διαίρει και βασίλευε.
Οταν λες οτι κάτει πάει στραβά σε ποιό σημείο εννοείς;
Τι ακριβώς δεν πάει καλά, σε ποιό σημείο;

Άβαταρ μέλους
dimos_mitel
Δημοσιεύσεις: 279
Εγγραφή: 07 Αύγ 2009 21:06
Επικοινωνία:

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από dimos_mitel » 12 Μάιος 2012 01:40

Υπάρχει πρόβλημα ειδικά στην ενημέρωση δεδομένων και στην διαγραφή. Έχω παρατηρήσει ότι ενημέρωση γίνετε μόνο στην ποιό καινούργια εγγραφή και όχι στις υπόλοιπες.. σε κάθε εγγραφή που εμφανίζεται από τον πίνακα δεξιά της υπάρχουν 2 κουμπιά, η ενημέρωση και η διαγραφή των δεδομένων. Από ότι έχω καταλάβει στον έλεγχο που κάνω στα ερωτήματα για την ενημέρωση και διαγραφή, για κάθε εγγραφή δεν αντιστοιχίζεται το δικό της id αλλά της τελευταίας. Συγκεκριμένα στο κουμπί που το έχω τύπου hidden και πέρνει το id θέλω για κάθε εγγραφή να υπάρχει το δικό της id ώστε όταν για παράδειγμα πατήσω διαγραφή ή ενημέρωση της 3ης στην σειρά εγγραφής να ενημερώνετε ή να διαγράφετε η 3η εγγραφή και να μην επηρεάζονται οι υπόλοιπες. Εκεί είναι το βασικό πρόβλημά μου.
miteletsis

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

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από Apostolis_38 » 12 Μάιος 2012 02:08

Εφόσον κάποια ενέργεια δεν παίρνει όλες τις εγγραφές αλλά την τελευταία, κατά πάσα πιθανότητα υπάρχει πρόβλημα στο loop.
Αν, για παράδειγμα, ο κωδικός που ζητάς είναι ο ukwdikos_omadas τότε πρέπει να μπει μέσα στο while.

Άβαταρ μέλους
dimos_mitel
Δημοσιεύσεις: 279
Εγγραφή: 07 Αύγ 2009 21:06
Επικοινωνία:

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από dimos_mitel » 12 Μάιος 2012 02:21

έξω από την while αυτό το κομμάτι:

echo "<td><input type=hidden name=ukwdikos_omadas></td>";
echo "<td><input type=text name=uonoma_omadas></td>";
echo "<td><input type=text name=uar_arxigou></td>";
echo "<td>" . "<input type=submit name=x value=add!!" . " </td>";

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

αν δείς στην γραμμή: echo "<td>" . "<input type=hidden name=hidden value=" . $row['kwdikos_omadas'] . " </td>";

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

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

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από Apostolis_38 » 12 Μάιος 2012 23:02

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

Συγκεκριμένα στο κουμπί που το έχω τύπου hidden και πέρνει το id 

where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;
Μάλλον εδώ έχεις μπερδευτεί.
hidden είναι η ιδιότητα του πεδίου της φόρμας. Δηλαδή να μην είναι ορατό.
Στη μεταβλητή όμως θα πάρεις ή το name ή το value.
Αναλόγως πως έχεις "στήσει" το πεδίο.

Άβαταρ μέλους
dimos_mitel
Δημοσιεύσεις: 279
Εγγραφή: 07 Αύγ 2009 21:06
Επικοινωνία:

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από dimos_mitel » 12 Μάιος 2012 23:14

Το έχω ονομάσει όμως και hidden, δεν έχω hidden μόνο την ιδιότητα. Το έκανα να δουλεύει. Τελικά δημιούργησα 2 φόρμες, η μια κλείνει μέσα στην while και η άλλη είναι για τα πεδία της προσθήκης δεδομένων και έχει το ίδιο action. Τώρα έχω προβλήματα με το layout μου αλλά θα λυθεί με λίγη προσπάθεια. ευχαριστώ!
miteletsis

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

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από Apostolis_38 » 12 Μάιος 2012 23:31

Μπορείς να βάλεις και τη φόρμα να τη δούμε;
Πλεονασμός είναι να έχεις 2 φόρμες για τον ίδιο σκοπό.

Άβαταρ μέλους
dimos_mitel
Δημοσιεύσεις: 279
Εγγραφή: 07 Αύγ 2009 21:06
Επικοινωνία:

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από dimos_mitel » 13 Μάιος 2012 00:36

Αυτός ο κώδικας είναι που τελικά δούλεψε.. αν σκεφτείς έναν καλύτερο τρόπο πες μου γιατί έχω ένα μικρό θέμα με τα values στον έλεγχο.

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

<?php


$con = mysql_connect&#40;"localhost","root",""&#41;;
if &#40;!$con&#41;&#123;
die&#40;"Can not connect&#58; " . mysql_error&#40;&#41;&#41;;
&#125;
mysql_select_db&#40;"fillo_agwna",$con&#41;;
mysql_query&#40;"SET NAMES 'utf8'"&#41;;

if &#40;isset&#40;$_POST&#91;'x'&#93;&#41;&#41; &#123;


if &#40;$_POST&#91;'x'&#93;=="update!!"&#41; &#123;

mysql_query&#40;'update stoixeia_omadwn set kwdikos_omadas="'.$_POST&#91;'kwdikos_omadas'&#93;.'" where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;.'"'&#41;;
mysql_query&#40;'update stoixeia_omadwn set onoma_omadas="'.$_POST&#91;'onoma_omadas'&#93;.'" where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;.'"'&#41;;
mysql_query&#40;'update stoixeia_omadwn set ar_arxigou="'.$_POST&#91;'ar_arxigou'&#93;.'" where kwdikos_omadas="'.$_POST&#91;'hidden'&#93;.'"'&#41;;


&#125;
else if&#40;$_POST&#91;'x'&#93; == "delete!!"&#41;&#123;

$DeleteQuery = "DELETE FROM stoixeia_omadwn WHERE kwdikos_omadas='$_POST&#91;hidden&#93;'";
mysql_query&#40;$DeleteQuery, $con&#41;;
&#125;
else if&#40;$_POST&#91;'x'&#93; == "add!!"&#41;&#123;

$AddQuery = "INSERT INTO stoixeia_omadwn &#40;kwdikos_omadas, onoma_omadas, ar_arxigou&#41; VALUES &#40;'$_POST&#91;ukwdikos_omadas&#93;','$_POST&#91;uonoma_omadas&#93;','$_POST&#91;uar_arxigou&#93;'&#41;";
mysql_query&#40;$AddQuery, $con&#41;;
&#125;
&#125;



$sql = "SELECT * FROM stoixeia_omadwn order by kwdikos_omadas";
$myData = mysql_query&#40;$sql,$con&#41;;
echo "<table border=1>
<tr>
<th>Κωδικός Ομάδας</th>
<th>Όνομα Ομάδας</th>
<th>Αριθμός Αρχηγού</th>
</tr>";

while&#40;$row = mysql_fetch_array&#40;$myData, MYSQL_ASSOC&#41;&#41;&#123;
echo "<form action=manage_omades.php method=POST>";
echo "<tr>";

echo "<td>" . "<input type=text name=kwdikos_omadas readonly=readonly value=" . $row&#91;'kwdikos_omadas'&#93; . " </td>";
echo "<td>" . "<input type=text name=onoma_omadas value=" . $row&#91;'onoma_omadas'&#93; . " </td>";
echo "<td>" . "<input type=text name=ar_arxigou value=" . $row&#91;'ar_arxigou'&#93; . " </td>";
echo "<td>" . "<input type=hidden name=hidden value=" . $row&#91;'kwdikos_omadas'&#93; . " </td>";

echo "<td>" . "<input type=submit name=x value=update!!" . " </td>";
echo "<td>" . "<input type=submit name=x value=delete!!" . " </td>";
echo "</tr>";
echo "</form>";
&#125;

echo "<form action=manage_omades.php method=POST>";
echo "<tr>";
echo "<td><input type=hidden name=ukwdikos_omadas></td>";
echo "<td><input type=text name=uonoma_omadas></td>";
echo "<td><input type=text name=uar_arxigou></td>";
echo "<td>" . "<input type=submit name=x value=add!!" . " </td>";
echo "</form>";
echo "</table>";

mysql_close&#40;$con&#41;;

?>
[/code]
miteletsis

Άβαταρ μέλους
dimos_mitel
Δημοσιεύσεις: 279
Εγγραφή: 07 Αύγ 2009 21:06
Επικοινωνία:

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από dimos_mitel » 13 Μάιος 2012 09:17

Όλα δουλεύουνε ρολόι τώρα.. βρήκα και το πρόβλημα που είχα στο layout. Απόστολε ευχαριστώ που ασχολήθηκες με το πρόβλημα μου.
miteletsis

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

Πρόβλημα στην Διαχείριση Δεδομένων

Δημοσίευση από Apostolis_38 » 13 Μάιος 2012 10:58

Πάνω από το pc κοιμόσουνα βλέπω :D
Μπράβο σου που το έφτιαξες.

Απάντηση

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

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

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