ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP (ΜΑΘΗΜΑ 9)

...ασύγχρονα μαθήματα γλώσσας PHP

ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP (ΜΑΘΗΜΑ 9)

Δημοσίευσηαπό M.Jackson » 14 Ιουν 2012, 23:22

ΜΑΘΗΜΑ 9 MYSQL & PHP


Σε αυτό το θέμα θα δούμε μια πολλή βασική λειτουργία της PHP, η δυνατότητα σύνδεσης της με την MySQL μια ανοικτού κώδικα βάση δεδομένων η οποία είναι ενσωματωμένη και με το XAMPP αλλά και τα πλείστα hosting sites, στο panel τους (Cpanel κτλ) έχουν αυτή το πρόγραμμα για βάση δεδομένων. Είναι η πλέον διαδεδομένη βάση δεδομένων και το όνομα της PHP έχει ταυτιστεί με την MySQL.

Γενικά για την MySQL.
Η MySQL είναι από τα πιο διαδεδομένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων, και σήμερα μετρά περισσότερα από 12 εκατομμύρια εγκαταστάσεις (πλην των localhost) το όνομα της "My" το πίρε από το όνομα της κόρη του Φιλανδού Μόντυ Βιντένιους, Co-Founder της MySQL AB.
Η MySQL AB είναι μια εταιρία η οποία χρηματοδοτεί την MySQL και σήμερα ανήκει στην Oracle.

Στην MySQL αυτά που θα μας απασχολήσουν προς το παρών είναι τα:
Queries: Είναι κάποιες "ερωτήσεις" που κάνουμε στην MySQL για ένα συγκεκριμένο πίνακα για να μας επιστρέψει πίσω αποτελέσματα. Σε αυτές τις ερωτήσεις δεν καθορίζουμε το πως να βρει τα αποτελέσματα αλλά δίνουμε στην γλώσσα κάποια στοιχεία για να μας βρει τα αποτελέσματα. Για παράδειγμα δίνουμε στην γλώσσα το στοιχείο Male έτσι ώστε να μας δώσει τα αποτελέσματα μόνο για τα Males. Αυτό το είδος προγραμματισμού ονομάζεται Declarative Programming και είναι η 4η γενιά προγραμματισμού.
Inseration: Θα μάθουμε πως να εισάγουμε νέα στοιχεία σε ένα πίνακα αποκλειστικά μέσα από την PHP και αυτό θα γίνει και πάλη μέσω ενός Query.
Selection: Θα μάθουμε να βρίσκουμε κάποια στοιχεία από ένα πίνακα αποκλειστικά και πάλη μέσα από την PHP.
Ταξινόμηση: Θα μάθουμε να ταξινομούμε τα αποτελέσματα μας.
Ενημέρωση: Θα μάθουμε να ενημερώνουμε ένα row δηλαδή να κάνουμε Edit κάποια στοιχεία.
Διαγραφή: Θα μάθουμε να διαγράφουμε στοιχεία από έναν πίνακα.

Δημιουργία Βάσης δεδομένων:
Όταν αναφερόμαστε σε μια βάση δεδομένων, έχουμε ένα όνομα το οποίο αντιπροσωπεύει το όνομα του project μας. Μέσα σε αυτό μπορούμε να φτιάξουμε πολλά tables τα οποία θα αναλαμβάνουν να κρατάνε συγκεκριμένες πληροφορίες. Για παράδειγμα σε ένα project με το όνομα ubuntu-gr μπορούμε να έχουμε ένα table users και ακόμα ένα για τα posts.

Αρχικά ανοίγουμε την διεύθυνση του phpMyAdmin απλά γράφοντας στο URL μας το:
Κώδικας: Επιλογή όλων
http://localhost/phpmyadmin/


Στην συνέχεια πατάμε στο πάνω πάνελ το κουμπί Databases και φτιάχνουμε μια καινούργια με το όνομα Ubuntu-gr όπως φαίνεται στην πιο κάτω εικόνα:


Όπως βλέπουμε στην πιο κάτω η βάση δεδομένων μας έχει φτιαχτεί με επιτυχία και μπορούμε να το δούμε στο αριστερό πάνελ. Πατάμε πάνω στο λινκ με το όνομα της βάσης δεδομένων: ubuntu-gr



Δημιουργία Table/s - Πίνακα/ες
Στο παράδειγμα μας φτιάχνουμε έναν πίνακα και τον ονομάζουμε users. Για να τον δημιουργήσουμε πρέπει να πατήσουμε πάνω στο λινκ με το όνομα της βάσης δεδομένων όπως είπαμε στην πιο πάνω φωτογραφία.

Στην συνέχεια θα δούμε 2 πεδία τα οποία θα μας βοηθήσουν για να φτιάξουμε τον πινακα μας. Το ένα θα θέλει το όνομα του πινάκα και το άλλο πόσες στήλες/πεδία θέλουμε να έχει ο πίνακας μας. Στο παράδειγμα μας φτιάχνουμε ένα πίνακα με το όνομα Users και με 3 πεδία (ID, Username, Password).



Συμπληρώνουμε τώρα τα πεδία μας όπως φαίνεται πιο κάτω:


Το αποτέλεσμα είναι να έχουμε έναν κενό πίνακα:


PHP & MySQL μαζί:
Την όλη διαδικασία που κάναμε θα μπορούσαμε να την κάναμε και μέσα από ένα query μέσα από την PHP, προς το παρών δεν μας ενδιαφέρει αυτό αφού για τα απλά, το γραφικό περιβάλλον είναι πιο εύκολο. Τώρα όμως θα δούμε πως μπορούμε να πάρουμε, να εισάγουμε, να ανανεώσουμε και να διαγράψουμε στοιχεία στην βάση δεδομένων μας με την χρήση της δυναμικής γλώσσας PHP.

Για να πετύχουμε αυτό, πρέπει να συνδέσουμε την βάση δεδομένων που φτιάξαμε με το πρόγραμμα μας. Αυτό γίνεται πολλή απλά με την χρήση 2-3 εντολών οι οποίες είναι σταθερές. Αν το project που γράφουμε θα έχει πολλά αρχεία τα οποία θα χρειάζονται σύνδεση με την MySQL καλό θα ήταν να φτιάχναμε ένα αρχείο το οποίο θα περιέχει τις εντολές για σύνδεση στην MySQL και απλά με μια απλή εντολή την include θα κάνουμε include αυτό το αρχείο στα άλλα αρχεία.

Inseration - Προσθήκη νέων στοιχειών

Δημιουργούμε το αρχείο connection.php και γράφουμε τον πιο κάτω κώδικα:
Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("ubuntu-gr") or die(mysql_error()) ;
?>


Όπως βλέπουμε πιο πάνω φτιάξαμε την σύνδεση και αν δοκιμάσουμε να τρέξουμε το πρόγραμμα και δεν πάρουμε κάποιο error τότε η mySQL είναι έτοιμη και ακούει της εντολές μας.

Πιο κάτω έχουμε το αρχείο add.html το οποίο είναι η φόρμα όπου ο χρήστης δίνει τα στοιχεία του.
Μορφοποιημένος Κώδικας: Επιλογή όλων
<html>
<body>

<form action="add.php" method="POST">
<input type="text" name="username">
<input type="password" name="pass">
<input type="submit" value="Add!">
</form>

</body>
</html>


Φτιάχνουμε κάποιο αρχείο με το όνομα add.php: Σε αυτό το αρχείο θα διαβάζουμε το όνομα και τον κωδικό ενός user και θα το καταχωρούμε στον πίνακα users.
Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php

include 'connection.php';
$username = $_POST['username'];
$password = $_POST['pass'];

$query = "INSERT INTO tblUsers (username, password) VALUES ('$username', '$password')";
$result = mysql_query($query);

?>


Τρέξτε σε localhost το add.html και δοκιμάστε, στην συνέχεια μέσα από το phpMyAdmin μπείτε στον πίνακα και δείτε τα στοιχεία που βάλατε.
Πιο πάνω είδαμε πολλή εύκολα πως γίνεται το Inseration, είναι εύκολο και η λογική λέει, λέμε στην MySQL INSERT δηλαδή καταχώρησε INTO tblUsers στον πίνακα tblUsers (username, password) στα πεδία username και password VALUES τις ακόλουθες τιμές: $username, $password. Είναι συμαντικό εδώ να αναφέρουμε ότι πρέπει να μπουν τα εισαγωγικά ανάμεσα στο $username και το $password.

Επιλογή/Εύρεση/Αναζήτηση - Selection
Σε αυτή τη φάση προσπαθούμε με ένα query να βρούμε κάποια αποτελέσματα. Θα πρέπει να γνωρίζουμε από 0 έως και δεκάδες στοιχεία. Θα μπορούσαμε για παράδειγμα να ψάχναμε για όλα τα αποτελέσματα χωρίς περιορισμό, ή να θέλαμε μόνο ένα συγκεκριμένο username κτλ. Η λογική είναι η ίδια.

Φτιάχνουμε ένα με το όνομα: search.html
Μορφοποιημένος Κώδικας: Επιλογή όλων
<html>
<body>

<form action="search.php" method="get">
<input type="text" name="search_username">
<input type="submit" value="Search">
</form>

</body>
</html>


Στην συνέχεια φτιάχνουμε ένα άλλο αρχείο με το όνομα search.php:
Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php

include 'connection.php';
$username = $_GET['search_username'];

$query = "SELECT * FROM tblUsers";
$result = mysql_query($query);

while($row = mysql_fetch_array($result))
{
echo $row['username'] . " " . $row['password'];
echo '<br>';
}

echo "<br><br><br>";

$query = "SELECT username, password FROM tblUsers WHERE username = '$username'";
$result = mysql_query($query);

while($row = mysql_fetch_array($result))
{
echo $row['username'] . " " . $row['password'];
echo '<br>';
}

?>


Βεβαιωθείτε ότι έχετε τουλάχιστον 2-3 στοιχεία στον πίνακα σας με διαφορετικά usernames και τρέξτε το πρόγραμμα. Πιο κάτω βλέπουμε στην σύνταξη του query μας:
Κώδικας: Επιλογή όλων
SELECT column_name(s) FROM table_name


Όπως είδαμε πιο πάνω αν θέλουμε να απομονώσουμε συγκεκριμένο αποτέλεσμα χρησιμοποιούμε το WHERE. Βασικά λέμε στην MySQL να επιλέξει όλα τα πεδία του πίνακα (* = όλα τα πεδία δηλαδή id, username, password) αν θέλουμε μόνο κάποια και όχι όλα τότε του τα λέμε δηλαδή SELECT username, password..... ο περιορισμός έρχεται μετά το WHERE όπου του λέμε βρες ένα ή περισσότερα αποτελέσματα τα οποία βρίσκονται στον πίνακα tblUsers και το username του ισούται με το $username δηλαδή κάποιο/γενικό username που έχει η συγκεκριμένη μεταβλητή την συγκεκριμένη στιγμή.

Είδαμε ότι πιο πάνω έχουμε το While loop και αυτό είναι λογικό γιατί στον πίνακα μας έχουμε περισσότερα από ένα στοιχεία και θέλουμε να τα εμφανίσουμε όλα και όχι μόνο το πρώτο.
Κώδικας: Επιλογή όλων
$row = mysql_fetch_array($result)


Με την πιο πάνω εντολή λέμε στην PHP να φτιάξει ένα Loop με επαναλήψεις όσες είναι τα στοιχεία του πίνακα, δηλαδή αν έχουμε 6 στοιχεία θα κάνει 6 επαναλήψεις αν έχει 1000 θα κάνει 1000.

Κώδικας: Επιλογή όλων
echo $row['username'] . " " . $row['password'];

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

Ταξινόμηση
Μπορούμε να ταξινομήσουμε τα αποτελέσματα ενός query έτσι ώστε όταν κάνουμε loop μέσα για να τυπώσουμε τα αποτελέσματα να είναι ταξινομημένα. Αυτό είναι αρκετά χρήσιμο σε ημερομηνίες και ώρες όπως είναι το Bloging, ή top 20 στα voting για παράδειγμα.

Η σύνταξη του query είναι η πιο κάτω:
Αύξουσα
Μορφοποιημένος Κώδικας: Επιλογή όλων
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC

Φθίνουσα
Μορφοποιημένος Κώδικας: Επιλογή όλων
SELECT column_name(s) FROM table_name ORDER BY column_name(s) DESC


Στο πιο πάνω παράδειγμα την μόνη ταξινόμηση που μπορούμε να κάνουμε είναι στο ID και να την κάνουμε φθίνουσα για να πάρουμε πρώτο το τελευταίο και να τον τυπώσουμε πρώτο, κάτι σαν LIFO (Last In First Out). Ο κώδικας για το αρχείο order.php

Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php

include 'connection.php';

$query = "SELECT * FROM tblUsers ORDER BY id DESC";
$result = mysql_query($query);

while($row = mysql_fetch_array($result))
{
echo $row['username'] . " " . $row['password'];
echo '<br>';
}


?>


Στο πιο πάνω query λέμε στην MySQL να επιλέξει όλα τα στοιχεία χωρίς περιορισμό, και να τα ταξινόμηση σε φθίνουσα σειρά βάση του ID.

Ενημέρωση
Με αυτή τη μέθοδο μπορούμε να ενημερώσουμε ένα υπάρχων στοιχείο του πίνακα με νέα στοιχεία χωρίς να χρειαστεί να φτιάξουμε νέο και να διαγράψουμε το προηγούμενο.
Η σύνταξη του UPDATE είναι:
Κώδικας: Επιλογή όλων
UPDATE table_name SET column1=value WHERE column=value


Φτιάχνουμε το αρχείο update.php και γράφουμε το εξής:
Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php

include 'connection.php';
$username = "m.jackson";

$query = "UPDATE tblUsers SET username = 'jackson' WHERE username = '$username'";
$result = mysql_query($query);


?>


Το πιο πάνω πρόγραμμα είναι πολλή ειδικό και δεν είναι γενικό, αν θέλουμε να το κάνουμε γενικό τότε θα φτιάξουμε ένα HTML αρχείο με φόρμα και input data για να τα στείλουμε στο πρόγραμμα μας. Όπως είδαμε πιο πάνω λέμε στην MySQL να θέσει στο πεδίο username την τιμή jackson ή $value όπου το username = $old_username. Σημαντικό αν δεν θέσουμε το WHERE τότε όλα τα rows θα πάρουν την συγκεκριμένη τιμή.

Delete - Διαγραφή στοιχείων
Με αυτή τη μέθοδο ΔΙΑΓΡΑΦΟΥΜΕ από τον πίνακα μας μια εγγραφή. Η όλη διαδικασία γίνεται πάλι από query και είναι εξαιρετικά εύκολο όπως και με τα προηγούμενα. Η σύνταξη του είναι:
Κώδικας: Επιλογή όλων
DELETE FROM table_name WHERE column = value


Και βλέπουμε εδώ ένα παράδειγμα. Έχουμε ένα αρχείο delete.php όπου διαγράφουμε ένα στοιχείο που το ID του είναι το 1.
Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php

include 'connection.php';
$username = "m.jackson";

$query = "DELETE FROM tblUsers WHERE id = 1";
$result = mysql_query($query);


?>


Πολλή απλά λέμε ένα στοιχείο από τον πίνακα θα μπορούσαμε να λέγαμε στην MySQL να διέγραφε ένα row με βάση το username του, λογικό είναι εδώ, αν θέσουμε ενα πολλή γενικό στοιχείο όπως είναι η ημερομηνία μπορεί να χάσουμε μεγάλη ποσότητα από δεδομένα, όταν ένα πεδίο είναι μοναδικό τότε η διαγραφή αναφέρεται σε μόνο ένα στοιχείο, όπως είναι το id σε εμάς αφου είναι auto_increment.

Είδαμε κάποια βασικά πράγματα για την MySQL και την δυνατότητα της να συνδέεται με την PHP. Είμαστε σε θέση και με βάση τα προηγούμενα μαθήματα να φτιάξουμε δυναμικές ιστοσελίδες. Χρειάζεται χρόνο και εξάσκηση για να μπορέσουμε να φτιάξουμε μεγάλα πράγματα. Θα πρέπει να κάνετε λάθη, να ψάχνεται την απάντηση για να μπορείτε να πείτε πως έχω καλές γνώσεις σε αυτό το θέμα. Οι δυνατότητες που προσφέρει η MySQL είναι πολλές πρέπει να πειραματιστούμε μαζί τους για να τα μάθουμε.
Τελευταία επεξεργασία από M.Jackson και 04 Σεπ 2013, 13:46, έχει επεξεργασθεί 2 φορά/ες συνολικά
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό mitsos93 » 06 Οκτ 2012, 01:50

Έχω μία βάση δεδομένων την 'test' στην οποία έχω φτιάξει έναν πίνακα με δύο στήλες τις col_1 και col_2 και μέσω ενός προγράμματος php βάζω στην πρώτη το όνομα και στη δεύτερη τον κωδικό κάθε καινούριου χρήστη.
Με ένα άλλο σκριπτακι php ο κάθε χρήστης μπορεί να μπαίνει στο λογαριασμό του. Αλλά και σωστός να είναι ο κωδικός, όταν κάνω log in μου βγάζει πάντα ότι έχω δώσει λάθος κωδικό. Το ψάχνω αρκετή ώρα τώρα αλλά δεν μπορώ να καταλάβω που είναι το λάθος.
Το σκριπτάκι που ελέγχει όνομα και κωδικό είναι το εξής:
Κώδικας: Επιλογή όλων
<?php

include 'connect.php';

$name=$_POST['username'];
$pass=$_posT['password'];

$query="SELECT * FROM test_table WHERE col_1=$name";
$result=mysql_query($query);

while($row=mysql_fetch_array($result))
   if($row['col_2']==$pass)
      header( 'Location: user_account.html' );
header( 'Location: wrong_pass.html' );

?>


Μπορεί να βοηθήσει κάποιος;
1 Linux: Αρχάριος┃ Προγραμματισμός: Τίποτα ┃ Αγγλικά: i speak the england very best
2 Ubuntu 14.04 LTS 64 bit, Windows 7 64-bit
3 Intel Core i5-2410M CPU @ 2.30GHz ‖ RAM 4GB ‖ HP Pavilion g6
4 Intel Device [8086:0116] (rev 09) ⋮ ATI Radeon HD 6400M Series
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] ⋮ eth1: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller
mitsos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 41
Εγγραφή: 29 Ιούλ 2011, 17:09
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό parenthesis » 06 Οκτ 2012, 02:00

Δοκίμασε να βάλεις μονά εισαγωγικά γύρω από την php μεταβλητή σου στο query :
Κώδικας: Επιλογή όλων
$query = "SELECT * FROM test_table WHERE col_1 = '$name' ";

Το λέει και στον οδηγό πιο πάνω.
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πολύ καλό
2 Dual boot:
  • Ubuntu 13.04 raring 3.8.0-34-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic
  • Fedora 19 Schrödinger’s Cat 3.13.5-101.fc19.x86_64 64bit (el_GR.utf8, gnome)
3 Intel Core i5-3337U CPU @ 1.80GHz ‖ RAM 3844 MiB ‖ TOSHIBA VCUAA - TOSHIBA SATELLITE U940
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05) ⋮ wlan0: Intel Centrino Wireless-N 2230 [8086:0887] (rev c4)
Άβαταρ μέλους
parenthesis
punkTUX
punkTUX
 
Δημοσιεύσεις: 150
Εγγραφή: 06 Οκτ 2009, 22:47
Launchpad: mara_sdr
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό mitsos93 » 06 Οκτ 2012, 02:10

Το διόρθωσα, αλλά πάλι το ίδιο μου βγάζει..
1 Linux: Αρχάριος┃ Προγραμματισμός: Τίποτα ┃ Αγγλικά: i speak the england very best
2 Ubuntu 14.04 LTS 64 bit, Windows 7 64-bit
3 Intel Core i5-2410M CPU @ 2.30GHz ‖ RAM 4GB ‖ HP Pavilion g6
4 Intel Device [8086:0116] (rev 09) ⋮ ATI Radeon HD 6400M Series
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] ⋮ eth1: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller
mitsos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 41
Εγγραφή: 29 Ιούλ 2011, 17:09
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό parenthesis » 06 Οκτ 2012, 02:33

Α, επίσης, διόρθωσε τη δεύτερη γραμμή εδώ :
Κώδικας: Επιλογή όλων
$name=$_POST['username'];
$pass=$_posT['password'];


Είναι $_POST, όχι $_posT
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πολύ καλό
2 Dual boot:
  • Ubuntu 13.04 raring 3.8.0-34-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic
  • Fedora 19 Schrödinger’s Cat 3.13.5-101.fc19.x86_64 64bit (el_GR.utf8, gnome)
3 Intel Core i5-3337U CPU @ 1.80GHz ‖ RAM 3844 MiB ‖ TOSHIBA VCUAA - TOSHIBA SATELLITE U940
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05) ⋮ wlan0: Intel Centrino Wireless-N 2230 [8086:0887] (rev c4)
Άβαταρ μέλους
parenthesis
punkTUX
punkTUX
 
Δημοσιεύσεις: 150
Εγγραφή: 06 Οκτ 2009, 22:47
Launchpad: mara_sdr
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό mitsos93 » 06 Οκτ 2012, 15:02

Ακόμα το ίδιο..
1 Linux: Αρχάριος┃ Προγραμματισμός: Τίποτα ┃ Αγγλικά: i speak the england very best
2 Ubuntu 14.04 LTS 64 bit, Windows 7 64-bit
3 Intel Core i5-2410M CPU @ 2.30GHz ‖ RAM 4GB ‖ HP Pavilion g6
4 Intel Device [8086:0116] (rev 09) ⋮ ATI Radeon HD 6400M Series
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] ⋮ eth1: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller
mitsos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 41
Εγγραφή: 29 Ιούλ 2011, 17:09
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό parenthesis » 06 Οκτ 2012, 16:06

Το συγκεκριμένο σκριπτάκι εμένα μου δουλεύει κανονικά (με τις διορθώσεις που σου είπα). :problem:

Έλεγξε αν γίνεται σωστά η σύνδεση στη βάση δεδομένων σου.
Επίσης, δες αν παίρνεις σωστά τα δεδομένα από την html φόρμα σου (βάλε κάποια print() μέσα στο σκριπτάκι, και βάλε σε σχόλια τα header()).
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πολύ καλό
2 Dual boot:
  • Ubuntu 13.04 raring 3.8.0-34-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic
  • Fedora 19 Schrödinger’s Cat 3.13.5-101.fc19.x86_64 64bit (el_GR.utf8, gnome)
3 Intel Core i5-3337U CPU @ 1.80GHz ‖ RAM 3844 MiB ‖ TOSHIBA VCUAA - TOSHIBA SATELLITE U940
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05) ⋮ wlan0: Intel Centrino Wireless-N 2230 [8086:0887] (rev c4)
Άβαταρ μέλους
parenthesis
punkTUX
punkTUX
 
Δημοσιεύσεις: 150
Εγγραφή: 06 Οκτ 2009, 22:47
Launchpad: mara_sdr
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό mitsos93 » 07 Οκτ 2012, 15:24

parenthesis έγραψε:Επίσης, δες αν παίρνεις σωστά τα δεδομένα από την html φόρμα σου (βάλε κάποια print() μέσα στο σκριπτάκι, και βάλε σε σχόλια τα header()).

Το έκανα έτσι:
Κώδικας: Επιλογή όλων
<?php

include 'connect.php';

$name=$_POST['username'];
$pass=$_POST['password'];

$query="SELECT * FROM test_table WHERE col_1= '$name' ";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
print $name;
echo "<br>";
print $pass;
echo "<br>";
print_r($row);


/*while($row=mysql_fetch_array($result))
   if($row['col_2']==$pass)
      header( 'Location: user_account.html' );
header( 'Location: wrong_pass.html' );
*/

?>


Και παίρνω
Κώδικας: Επιλογή όλων
mitsos2
mitsos2
Array ( [0] => mitsos2 [col_1] => mitsos2 [1] => mitsos2 [col_2] => mitsos2 )

έχοντας βάλει όνομα και κωδικό το 'mitsos2'. Δεν υπάρχει πρόβλημα σ' αυτά, σωστά;
1 Linux: Αρχάριος┃ Προγραμματισμός: Τίποτα ┃ Αγγλικά: i speak the england very best
2 Ubuntu 14.04 LTS 64 bit, Windows 7 64-bit
3 Intel Core i5-2410M CPU @ 2.30GHz ‖ RAM 4GB ‖ HP Pavilion g6
4 Intel Device [8086:0116] (rev 09) ⋮ ATI Radeon HD 6400M Series
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] ⋮ eth1: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller
mitsos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 41
Εγγραφή: 29 Ιούλ 2011, 17:09
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό parenthesis » 07 Οκτ 2012, 16:11

Ναι, απ' αυτό δε φαίνεται να έχεις πρόβλημα με την html φόρμα.

Οπότε έχω να προτείνω το εξής :
Βάλε μια εντολή exit κάτω από το πρώτο header() :
Κώδικας: Επιλογή όλων
while($row=mysql_fetch_array($result)) {
      if($row['col_2']==$pass) {
        header( 'Location: user_account.html' );
        exit;
      }
   }

header( 'Location: wrong_pass.html' );
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πολύ καλό
2 Dual boot:
  • Ubuntu 13.04 raring 3.8.0-34-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic
  • Fedora 19 Schrödinger’s Cat 3.13.5-101.fc19.x86_64 64bit (el_GR.utf8, gnome)
3 Intel Core i5-3337U CPU @ 1.80GHz ‖ RAM 3844 MiB ‖ TOSHIBA VCUAA - TOSHIBA SATELLITE U940
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05) ⋮ wlan0: Intel Centrino Wireless-N 2230 [8086:0887] (rev c4)
Άβαταρ μέλους
parenthesis
punkTUX
punkTUX
 
Δημοσιεύσεις: 150
Εγγραφή: 06 Οκτ 2009, 22:47
Launchpad: mara_sdr
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 8 - ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL & PHP

Δημοσίευσηαπό mitsos93 » 07 Οκτ 2012, 20:34

parenthesis έγραψε:Ναι, απ' αυτό δε φαίνεται να έχεις πρόβλημα με την html φόρμα.

Οπότε έχω να προτείνω το εξής ......


Επίσης καμία αλλαγή.. Είτε τη βρούμε τη λύση πάντος είτε όχι, σ' ευχαριστώ για το χρόνο σου
1 Linux: Αρχάριος┃ Προγραμματισμός: Τίποτα ┃ Αγγλικά: i speak the england very best
2 Ubuntu 14.04 LTS 64 bit, Windows 7 64-bit
3 Intel Core i5-2410M CPU @ 2.30GHz ‖ RAM 4GB ‖ HP Pavilion g6
4 Intel Device [8086:0116] (rev 09) ⋮ ATI Radeon HD 6400M Series
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] ⋮ eth1: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller
mitsos93
babeTUX
babeTUX
 
Δημοσιεύσεις: 41
Εγγραφή: 29 Ιούλ 2011, 17:09
Εκτύπωση

Επόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Μαθήματα PHP

cron