Ιστοσελίδα με PHP

Ξεκίνησε από talex, 09 Οκτ 2008, 09:51:07 ΜΜ

« προηγούμενο - επόμενο »

talex

Προσπαθώ να κάνω μία ιστοσελίδα με PHP.
Έχω κάνει μία βάση δεδομένων mysql η οποία περιέχει τους πίνακες: Μενού, Επικοινωνία και Άρθρα.
Στον πίνακα Μενού περιέχονται οι τίτλοι του μενού, στον πίνακα Επικοινωνία υπάρχουν τα πεδία Διεύθυνση, email και στον πίνακα ʼρθρα περιέχονται τα πεδία τίτλος και κείμενο.
Η ιστοσελίδα περιέχει 3 πίνακες (1 για το μενού, 1 για το περιεχόμενο της ιστοσελίδας και 1 για τον τίτλο της ιστοσελίδας). Αυτό που θέλω να κάνω είναι κάνοντας κλικ στον πίνακα με το μενού να φορτώνει στην ίδια ιστοσελίδα τον πίνακα με το αντίστοιχο περιεχόμενο.
Αυτό που έχω κάνει μέχρι τώρα είναι να μου εμφανίζει το μενού αλλά δεν ξέρω τι να κάνω ώστε κάνοντας κλικ στον κάθε τίτλο να μου εμφανίσει από τη βάση sql το περιεχόμενο του συγκεκριμένου πεδίου.
Μπορεί κάποιος να βοηθήσει;

xaidi

Μπορώ να σε βοηθήσω, αλλά σου προτείνω να μην χρησιμοποιήσεις php προτίμησε αν θέλεις ASPX. Είναι πιο βατή και με την mysql που έχεις.
Ξεκίνα από εδώ http://www.microsoft.com/express/default.aspx και κάνε λήψη, τα πακέτα είναι δωρεάν και μπορείς να βρεις πολλά βιβλία online.
Δες και μια έτοιμη σελίδα: http://www.heritagesheep.eu/Default.aspx Αν σε ενδιαφέρει μπορώ να σου πω ότι θες.
Ευχαριστώ,

talex

Μέχρι να καθίσω να ασχοληθώ με την ASPX θα μου πάρει πιστεύω πιο πολύ χρόνο. Θα το προσπαθήσω πάντως. Σ' ευχαριστώ.

Όσο για την PHP δεν μπορώ να βρω κάποια έτοιμα από το internet; Το θέμα είναι πως να το ψάξω, για το συγκεκριμένο που θέλω.

Ευχαριστώ.

alkisg

Θες να μάθεις να τα κάνεις αυτά, ή σε ενδιαφέρει απλά να γίνουν;

Για το πρώτο, θα πρέπει να μάθεις πώς περνάμε GET ή POST παραμέτρους από HTML φόρμες στην PHP (μεταβλητές $_GET και $_POST αντίστοιχα), και κάποιες εντολές όπως mysql_connect για τη σύνδεση στη βάση.

Για το δεύτερο, γιατί δε βάζεις ένα CMS; Δε χρειάζεται να είναι πολύπλοκο, όπως Joomla ή Wordpress, υπάρχουν και πολύ πιο απλά...

talex

Ξεκινάμε μαθήματα δηλαδή;
Φυσικά και με ενδιαφέρει να μάθω. Γι' αυτό δεν χρησιμοποιώ και το Joomla.

Αυτά που έχω κατανοήσει είναι οι εξής εντολές:
mysql_connect : όπου συνδέεσαι με τον server data base
mysql_select_db: όπου επιλέγεις τη βάση δεδομένων
mysql_query: όπου επιλέγεις πεδία από έναν πίνακα και τα αποθηκεύεις σε μία μεταβλητή (αν θες).
mysql_fetch_array: όπου μπορείς να αποθηκεύσεις τα περιεχόμενα ενός ή περισσότερων πεδίων.

Τη μέθοδο POST την έχω κατανοήσει πως λειτουργεί σε μία φόρμα.

Δεν θέλω όμως προς το παρόν να έχω φόρμα. Αυτό που θέλω είναι κάνοντας κλικ σε ένα link (και όχι σε ένα submit button) να μου εμφανίζει τα δεδομένα που θέλω από ένα πεδίο της βάσης.

alkisg

Παράθεση από: talex στις 12 Οκτ 2008, 12:32:35 ΜΜ
Ξεκινάμε μαθήματα δηλαδή;

Κι εσύ κι εγώ μαζί... :)
Εγώ από php έμαθα ότι χρειαζόμουνα, τώρα στον ελάχιστο ελεύθερο χρόνο που μου μένει προσπαθώ να μπω στα ενδότερα του Linux, οπότε δεν μπορώ να βοηθήσω με tutorials παρά μόνο με λίγες κατευθύνσεις.
Τα links λειτουργούν όμοια με τις φόρμες, μόνο που περιορίζονται στην GET μέθοδο.
Δηλαδή είτε θα βάλεις
<a href="index.php?page=contents">
είτε θα το στείλεις σε τελείως διαφορετική σελίδα, π.χ.
<a href="newpage.php">

Στην πρώτη περίπτωση έχεις μόνο μια σελίδα, index.php, η οποία κάνει μια switch ανάλογα με την GET μεταβλητή με όνομα page, και "γράφει" διαφορετικές HTML σελίδες για κάθε περίπτωση:
Κώδικας: php
if (isset($_GET['page']) {
  $page = $_GET['page'];
  if ($page == 'contents') {
   ...εδώ κατασκευάζεις τη σελίδα contents, είτε από mysql είτε από με σκέτο κείμενο...
  }
  elseif ($page == 'otherpage') {
   ...εδώ κατασκευάζεις άλλη σελίδα, κτλ...
  }
}


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

Ένα σημείο που ίσως δεν είναι προφανές με την πρώτη επαφή, είναι ότι (αν εξαιρέσουμε προχωρημένες τεχνικές τύπου ajax ή iframes) δεν μπορούμε να φορτώσουμε ένα κομμάτι της σελίδας, οπότε αν θέλεις σε όλες τις σελίδες να εμφανίζεται το ίδιο μενού, θα πρέπει σε κάθε περίπτωση να το γράφεις.
Επομένως είτε στο index.php το γράφεις πάνω από τη switch,
είτε στο newpage.php κάνεις require ένα αρχείο common.php που γράφει τα κοινά πράγματα κάθε σελίδας (λειτουργεί περίπου σαν templates).

talex

Δηλαδή ο κώδικας θα πρέπει να είναι κάπως έτσι;
Στα εξηγώ σε περίπτωση που δεν κατανοώ κάτι σωστά.

<?php
$result = mysql_query("SELECT * FROM menu");

// Αν η μεταβλητή $_GET πάρει τιμή από το 'page' (τι είναι το 'page'. Σε μία φόρμα ήξερα ότι είναι το όνομα ενός hidden κουμπιού. Εδώ είναι το όνομα ιστοσελίδας; Το δηλώνω και κάπου αλλού;)
if (isset($_GET['page']))

{
$page = $_GET['page'];

//Αν η μεταβλητή είναι ίση με την τιμή contents
  if ($page == 'contents')
  {

// Εμφανίζω το μενού από τη βάση δεδομένων
     while($row = mysql_fetch_array($result))
        {       
        ?>
      <a href="index.php?page=contents">
        <?php               
        echo $row['main_menu'] . "<br>";
        echo "</a>";
        }
  }

Μ' αυτό δεν γίνεται κάτι. Κάτι έχω ξεχάσει ή κάτι δεν καταλαβαίνω σωστά.
Αν σε κουράσω πάντως πέστο μου.

lp

#7
Βασικά χρειάζεσαι σε πολύ απλή μορφή:
Μια βάση δεδομένων με τα παρακάτω πεδία:
α) page_id (κύριο κλειδί - κωδικός σελίδας)
β) page_title (τίτλος σελίδας)
γ) page_body (το περιεχόμενο)
δ) page_lang (η γλώσσα)
Ο παραπάνω πίνακας ήταν εύκολο να δημιουργηθεί είτε με php είτε μέσα από εργαλεία της mysql.

2. Ένα μηχανισμό που να μπορεί να εμφανίζει την σελίδα με τον κωδικό που αναφέρεται στο page_id επιλέγοντας μία σύνδεση από το αρχείο index
π.χ. το index.php

3. κώδικας php της μορφής

<?php
$bodyQ = mysql_query("SELECT page_body FROM pages WHERE page_id = ".$_GET['page_id']."");
$bodyR = mysql_fetch_array($bodyQ);
?>

<html>
<head>
..
..
..
</head>
<body>
<?php echo $bodyR['page_body']; ?>
</body>
</html>


4.
και τα link θα είναι http://www.domain.gr/?page_id=1

5. Φυσικά υπάρχουν και άλλα όπως για παράδειγμα περιβάλλον εισαγωγής δεδομένων στη βάση για να μην το κάνεις στο phpmyadmin, ζητήματα ασφάλειας κλπ.

6.
Αγαπημένο εύκολο βιβλίο για την δουλειά αυτή είναι το http://www.amazon.com/Codin-Web-Designers-Developing-Dynamic/dp/0321429192/ref=sr_1_1?ie=UTF8&s=books&qid=1224845045&sr=1-1 coding for the web
Λέων Προκόπης
2ο ΓΕΛ Ναυπλίου

panagiotis13

file mou ego proteino na xrisimopoiiseis ena paketo CMS opos to Joomla (joomla sta ellinika) h to wordpress (wordpress sta ellinika)

kai ta 2 einai dorean kai uparxei apistefti ypostiriksi kai polla plugins, extensions, templates. Proteino Joomla gia periploka sites, kai wordpress gia apla blogs. kai ta 2 doulevoun me PHP/MySQL