PHP και MySQL

Post Pic
στις 25.05.10. Kατηγορίες +, MySQL, PHP με 2 Σχόλια

Σε αυτό το πολύ αναλυτικό βοήθημα, από τον Νίκο Χατζηδάκη, θα δούμε πως μπορούμε να χρησιμοποιήσουμε την PHP και να γράψουμε κώδικα και εντολές, ώστε να συνδεθούμε με μία βάση δεδομένων, να προσθέσουμε εγγραφές, να επεξεργαστούμε εγγραφές, και τέλος πως να αφαιρέσουμε και να προβάλουμε τις εγγραφές της.

Σύνδεση με βάση δεδομένων

Δημιουργούμε ένα αρχείο dbconn.php με τον παρακάτω κώδικα

<?php
function dbconnect() {
// Σύνδεση με διακομιστή
$db_connect = mysql_connect("localhost", "db_user", "db_password")
or die ("Αποτυχία σύνδεσης στον διακομιστή");
// Αν χρησιμοποιείτε κωδικοποίηση utf8 και δεν σας εμφανίζει σωστά τα
ελληνικά
// mysql_query("SET NAMES 'utf8'", $db_connect);
// Επιλογή βάσης δεδομένων
$db_select = mysql_select_db("db_name", $db_connect)
or die ("Αποτυχία επιλογής βάσης δεδομένων");
}
?>

Με το παρακάτω, συνδεόμαστε στην mysql

mysql_connect("localhost", "db_user", "db_password")

Μην ξεχάσετε να αντικαταστήσετε τα localhost ο host της βάσης db_user το όνομα του χρήστη της βάσης db_password ο κωδικός του χρήστη της βάσης db_name το όνομα της βάσης. or die (“Αποτυχία σύνδεσης στον διακομιστή”); Αν για κάποιο λόγο παρουσιαστεί πρόβλημα, εμφανίζεται το μήνυμα “Αποτυχία σύνδεσης στον διακομιστή”. Κάποιες φορές, όταν η βάση είναι κωδικοποιημένη σε utf8, τα ελληνικά γράμματα εμφανίζονται με ερωτηματικά. Για να το διορθώσουμε, εισάγουμε το παρακάτω:

mysql_query("SET NAMES 'utf8'", $db_connect);

Τέλος επιλέγουμε το όνομα της βάσης

$db_select = mysql_select_db("db_name", $db_connect)

Διευκολύνει να έχουμε την παραπάνω συνάρτηση σε ξεχωριστό αρχείο, και όποτε τη χρειαζόμαστε να το εισάγουμε. Έτσι, αν θέλουμε να αλλάξουμε για παράδειγμα τον κωδικό ή τον χρήστη, το κάνουμε σε ένα αρχείο. Για να εισάγουμε το αρχείο της συνάρτησης σε ένα άλλο αρχείο php χρησιμοποιούμε την εντολή include() ως εξής:

<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();

ΕΝΤΟΛΕΣ

// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

Αν και δεν είναι απαραίτητο να κάνουμε αποσύνδεση, καλό θα ήταν να μην το ξεχνάμε.

Προσθήκη και ενημέρωση εγγραφών σε βάση δεδομένων

Έστω ο πίνακας clients (id, name, surname) με το id ρυθμισμένο σε auto_increment ώστε να αυξάνεται μόνο του με κάθε εγγραφή που προσθέτουμε. Αρχικά δημιουργούμε ένα αρχείο add.php ή update.php και καλούμε τη συνάρτηση που δημιουργήσαμε πριν, ώστε να συνδεθούμε στη βάση δεδομένων.

<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();
…
// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

Στη συνέχεια με τον παρακάτω κώδικα δηλώνουμε τι θέλουμε να εισάγουμε και που.

// Προσθήκη δεδομένων
$qAdd = mysql_query("INSERT INTO clients (id, name, surname)
VALUES ('', 'Νίκος', 'Παπανικολάου')") or die
("Παρουσιάστηκε πρόβλημα κατά την εισαγωγή των αρχείων."));
if ($qAdd)
{
echo "Τα δεδομένα προστέθηκαν.";
}

Ενώ με τον παρακάτω τι θέλουμε να αλλάξουμε/επεξεργαστούμε.

// Ενημέρωση δεδομένων
$qUpdate=mysql_query("UPDATE clients SET name = 'name', surname =
'surname' WHERE id='1' ");
if ($qUpdate)
{
echo "Τα δεδομένα ενημερώθηκαν.";
}

Έτσι το αρχείο add.php παίρνει την παρακάτω μορφή,

<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();
// Προσθήκη δεδομένων
$qAdd = mysql_query("INSERT INTO clients (id, name, surname)
VALUES ('', 'Νίκος', 'Παπανικολάου')") or die
("Παρουσιάστηκε πρόβλημα κατά την εισαγωγή των αρχείων."));
if ($qAdd)
{
echo "Τα δεδομένα προστέθηκαν.";
}
// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

Ενώ το update.php την παρακάτω:

<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();
// Ενημέρωση δεδομένων
$qUpdate=mysql_query("UPDATE clients SET name = 'name', surname =
'surname' WHERE id='1' ");
if ($qUpdate)
{
echo "Τα δεδομένα ενημερώθηκαν.";
}
// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

Εμφάνιση εγγραφών από βάση δεδομένων

Αρχικά δημιουργούμε ένα αρχείο index.php και καλούμε τη συνάρτηση που δημιουργήσαμε πριν, ώστε να συνδεθούμε στη βάση δεδομένων.

<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();
…
// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

Στη συνέχεια με τον παρακάτω κώδικα «τραβάμε» τα αποτελέσματα από την βάση μας.

// Ερώτημα προς την βάση
$q=mysql_query("SELECT * FROM clients ");
$num = mysql_num_rows($q);
// Αν υπάρχουν αποτελέσματα
if ($num > 0 ) {
$i=0;
while ($i < $num) {
// Δημιουργία σύντομων ονομάτων μεταβλητών
$name = mysql_result($q,$i,"name");
$surname = mysql_result($q,$i,"surname");
// Εκτύπωση μεταβλητών
echo "Όνομα: $name<br />";
echo "Επώνυμο: $surname <br />";
// Αν δεν υπάρχουν αποτελέσματα
++$i; } } else { echo "Δεν έχουν καταχωρηθεί δεδομένα για εσάς ακόμα."; }

Έτσι το αρχείο παίρνει την παρακάτω μορφή.

<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();
// Ερώτημα προς την βάση
$q=mysql_query("SELECT * FROM clients ");
$num = mysql_num_rows($q);
// Αν υπάρχουν αποτελέσματα
if ($num > 0 ) {
$i=0;
while ($i < $num) {
// Δημιουργία σύντομων ονομάτων μεταβλητών
$name = mysql_result($q,$i,"name");
$surname = mysql_result($q,$i,"surname");
// Εκτύπωση μεταβλητών
echo "Όνομα: $name<br />";
echo "Επώνυμο: $surname <br />";
// Αν δεν υπάρχουν αποτελέσματα
++$i; } } else { echo "Δεν έχουν καταχωρηθεί δεδομένα για εσάς ακόμα."; }
// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

Μπορούμε να συμπεριλάβουμε και διάφορα κριτίρια στην αναζήτησή μας, όπως αν το όνομα είναι «Νίκος». Αυτό γίνεται προστέτοντας στο mysql query το WHERE name=’Νίκος’

$q=mysql_query("SELECT * FROM clients WHERE name=’Νίκος’");

Διαγραφή εγγραφών από βάση δεδομένων

Αρχικά δημιουργούμε ένα αρχείο delete.php και καλούμε τη συνάρτηση που δημιουργήσαμε πριν, ώστε να συνδεθούμε στη βάση δεδομένων.

<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();
…
// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

Στη συνέχεια με τον παρακάτω κώδικα δηλώνουμε τι θέλουμε να διαγράψουμε.

// Αφαίρεση δεδομένων
$qRemove = mysql_query("DELETE FROM clients WHERE id='1' ");
if ($qRemove)
{
echo "Τα δεδομένα αφαιρέθηκαν.";
}
Έτσι το αρχείο παίρνει την παρακάτω μορφή.
<?php
// Εισαγωγή του αρχείου με την συνάρτηση
include(“dbconn.php”);
// Καλούμε την συνάρτηση
dbconnect();
// Αφαίρεση δεδομένων
$qRemove = mysql_query("DELETE FROM clients WHERE id='1' ");
if ($qRemove)
{
echo "Τα δεδομένα αφαιρέθηκαν.";
}
// Αποσύνδεση απο τον διακομιστή
/mysql_close($db_connect);
?>

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


Member Area
Άν είστε ήδη συνδρομητής κάντε login με τα στοιχεία σας. Για να γίνετε συνδρομητής πατήστε εδώ

Tags: , , , , , , , , , ,

cn92 { Προσωπική Ιστοσελίδα / Άρθρα Στο GreekTuts }
Ο Νίκος ασχολείται με την σχεδίαση ιστοσελίδων και την ανάπτυξη εφαρμογών διαδικτύου, βρίσκεται στην Αθήνα.

2 Σχόλια στο άρθρο PHP και MySQL

  • dim says:

    Exw ena provlima.Exw egkatastisei ton wamp sto pc mou,dimiourgisa tin vasi mou.Na sou dwsw na katalaveis exw kanei mia istoselida enos mathimatos stin opoia tha mpainei enas tutor kai enas Student. Ston Student epitrepetai(pronomia apo ton server) na diavazei mono(mono select tou epitrepetai) kai na stelnei e-mail se olous tous tutors an exei kapoio provlima/aporia. Ston Tutor epitrepetai na kanei ,,,,.

    Telos,tis parapanw php istoselides prepei na mou tis emfanizei mono otan o xristis pou mpainei stin istoselida einai Tutor,to opoio oute pali mou to kanei.

    Oi parapanw istoselides den mou trexoun,den eimai kai kalos ston programmatismo opote katalavaineis.
    Sugnwmi gia ton kataigismo pliroforiwn.S’euxaristw ek twn proterwn.
    deleteannouncements.php
    $number”,$sql);
    while($row=mysql_fetch_array($result))
    {
    $newid=$row['number']-1;
    echo “$newid”;
    mysql_query(“UPDATE announcements SET announcements.number=’$newid’ WHERE announcemetns.number=’$row[number]“,$sql);//enhmerwsi meta th diagrafh
    }
    header(“Location: ../website/announcement.php”);

    ?>
    editannouncements1.php
    <?php
    session_start();

    if (!isset($_SESSION['Username']))
    {
    echo "Access denied!!!”;
    exit();
    }
    $hostname = “localhost”;
    $database = “mybase”;
    $username = “myuser”;
    $password = “mypsw”;
    $link = mysql_connect( $hostname , $username , $password ) or
    die(“Prosoxi!Provlima stin sundesi me ton server : ” . mysql_error());
    mysql_select_db($database,$link);

    $query=”SELECT * from announcements where number=$Index”;
    mysql_select_db(“mybase”,$link);
    $result=mysql_query($query,$link)or
    die(“Prosoxi!Provlima stin epilogi pinaka announcements : ” . mysql_error());

    $number = mysql_num_rows( $result );

    if ( $number == 0)
    {
    echo “apotuximeni sundesi”;
    }
    else
    {
    $row = mysql_fetch_array($result);

    $x=$Index;
    $Date=$row[1];
    $Subject=$row[2];
    $Text=$row[3];
    }

    echo ” “;

    echo ”;
    echo ‘Θέμα: ‘;
    echo ‘Κυρίως κείμενο: ‘.$Text.”;

    echo ”;

    echo ”;
    ?>
    editannouncements2.php
    <?php
    session_start();

    if (!isset($_SESSION['Username']))
    {
    echo "Access denied!!!”;
    exit();
    }
    $hostname = “localhost”;
    $database = “mybase”;
    $username = “myuser”;
    $password = “mypsw”;
    $link = mysql_connect( $hostname , $username , $password ) or
    die(“Prosoxi!Provlima stin sundesi me ton server : ” . mysql_error());
    mysql_select_db($database,$link);

    $sql=”UPDATE announcements SET
    `Date` = CURDATE(),
    `Subject` = ‘$subject’,
    `Text` = ‘$text’ WHERE `number` =’$number’ “;

    if (!mysql_query($sql,$link))
    {
    die(‘Error: ‘ . mysql_error());
    }
    echo “Η εγγραφή ανανεώθηκε “;

    mysql_close($link);
    echo “Πίσω“;
    ?>

  • Pingback: Tweets that mention PHP και MySQL | GreekTuts -- Topsy.com

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>