edit database rows σε grid

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

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

Απάντηση
alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

edit database rows σε grid

Δημοσίευση από alou » 30 Μαρ 2014 19:32

Για να κάνεις κάποια καταχώριση ή update σε ήδη υπάρχουσα στη βάση, πρέπει να στείλεις τις τιμές των input στην php, να τις πάρει και να κάνει ένα query στη βάση.

Θα μπορούσες να κάνεις post τα στοιχεία μόνο με ajax έχοντας περισσότερες δυνατότητες να τα επεξεργαστείς και να τσεκάρεις διάφορα πριν την αποστολή αλλά έτσι αποκλείεις όποιον έχει απενεργοποιημένη javascript οπότε από μόνο του δεν είναι απολύτως σωστό. Θα πρέπει να μπουν είτε ανά σειρά είτε όλος ο πίνακας μαζί σε <form> και ένα submit button (σε κάθε σειρά ή στο τέλος, ανάλογα) για να μπορέσεις να το στείλεις και χωρίς js.

Επίσης, ένα input type="submit" αντιστοιχεί σε ένα form (που δεν υπάρχει στην html σου) και κάνει αποστολή όλων των στοιχείων της. Αυτή τη στιγμή δεν κάνει τίποτα κανένα κουμπί σου.

Ξεκίνα - καταρχάς - βάζοντας form tags όπως νομίζεις και οπωσδήποτε name σε κάθε input, διαφορετικά δεν υπάρχει τρόπος να το χρησιμοποιήσεις με post / get χωρίς js. Και αν μπει όλος ο πίνακας σε ένα form (όχι ξεχωριστά η κάθε σειρά και αποστολή μόνο ένα ένα), στο name θα βάλεις [] ώστε να υπονοείς ότι θα είναι array και όχι μία τιμή.

Πχ

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

<input name="thename&#91;&#93;" class="text" id="name_<?php echo $id; ?>" value="<?php echo $name; ?>" style="background&#58; transparent"/>
Όταν θα γίνουν post τα στοιχεία της φόρμας, και θα το πάρεις στην php (μπορείς να τα στείλεις στο ίδιο αρχείο ή σε κάποιο άλλο, ανάλογα τη λειτουργία που θες να υπάρχει - για την ώρα θα έλεγα πειραματίσου στο ίδιο και στην αρχή του script να τσεκάρεις αν υπάρχει $_POST, να πάρεις όποιες τιμές θες και να προχωρήσεις στα υπόλοιπα), θα υπάρχει ένα array $_POST['thename'] που θα περιέχει όλες τις τιμές των input με αυτό το όνομα.

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

Άβαταρ μέλους
dionisis71
Δημοσιεύσεις: 238
Εγγραφή: 04 Μάιος 2009 22:15
Επικοινωνία:

edit database rows σε grid

Δημοσίευση από dionisis71 » 30 Μαρ 2014 19:43

Σε ευχαριστώ πάρα πολύ..

έχω μαλλί να ξανω..

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

edit database rows σε grid

Δημοσίευση από alou » 30 Μαρ 2014 21:07

dionisis71 έγραψε: έχω μαλλί να ξανω..
:lol: μια χαρά τα λες

Άβαταρ μέλους
dionisis71
Δημοσιεύσεις: 238
Εγγραφή: 04 Μάιος 2009 22:15
Επικοινωνία:

edit database rows σε grid

Δημοσίευση από dionisis71 » 15 Ιουν 2014 18:05

καλησπέρα,

έχω βάλει τα form tags που χρειάζομαι, τα names σε κάθε input και με $_POST ελέγχω για το αν υπάρχει post αλλά δυστυχώς δεν φαίνεται να εκτελείται το post όταν πατάω save. To action που χρησιμοποιώ στο Form είναι σωστό;

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

<?php
				if&#40;$_POST&#41;
					&#123;
						echo 'yes';
					&#125;
                 include&#40;'db.php'&#41;;
                 
                 $query = 'SELECT * FROM users';
                 if &#40;$result = $mysqli->query&#40;$query&#41;&#41;
                    while &#40;$row = $result->fetch_row&#40;&#41;&#41;
                    &#123;
                    $id=$row&#91;0&#93;;
                    $name=$row&#91;1&#93;;
                    $username=$row&#91;2&#93;;
                    $email=$row&#91;3&#93;;
                    ?>
                    <form id="form_<?php echo $id; ?>" method="post" action="<?php $_PHP_SELF ?>">
              
                      <tr id="<?php echo $id; ?>" >
                        <td><label class="text" id="id_<?php echo $id; ?>"><?php echo $id; ?></label></td>                          
                        <td><input name="name" class="text" id="name_<?php echo $id; ?>" value="<?php echo $name; ?>" style="background&#58; transparent"/></td>
                        <td><input name="username" class="text" id="username_<?php echo $id; ?>" value="<?php echo $username; ?>" style="background&#58; transparent"/></td>
                        <td><input name="email" class="text" id="email_<?php echo $id; ?>" value="<?php echo $email; ?>" style="background&#58; transparent"/></td>
                        <td><input name="btn_edit" type="button" id="edit_<?php echo $id; ?>" class="edit" value="edit" />
                            <input name="btn_cancel" type="button" id="cancel_<?php echo $id; ?>" class="cancel" value="cancel" disabled="1"  />
                            <input name="btn_save" type="submit" id="save_<?php echo $id; ?>" class="save" value="submit" disabled="1" />
                        </td>
                      </tr>
                     
                    </form>

                    <?php
                    &#125;
                    ?>

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

edit database rows σε grid

Δημοσίευση από geomagas » 16 Ιουν 2014 00:58

Μα δεν κάνεις κάποιο update ή insert. Μόνο select.
Ή εγώ κατάλαβα κάτι λάθος.

EDIT: Τώρα το είδα.
Άλλαξε το $_PHP_SELF σε $_SERVER['PHP_SELF'].
Better yet, αν θέλεις (προφανώς) το post να γίνεται στο ίδιο url, μπορείς να παραλείψεις τελείως το action της φόρμας.

Απάντηση

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

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

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