Προς το περιεχόμενο

προβολή στοιχείων απο MySQL σε php


DiNoR

Προτεινόμενες αναρτήσεις

Καλησπέρα, απο μια γρήγορη αναζήτηση που έκανα δε βρήκα κάτι παρόμοιο.

 

Όπως λέει και ο τίτλος θέλω να προβάλω κάποια στοιχεία στην ιστοσελίδα μέσω σύνδεσης με τη βάση δεδομένων του παιχνιδιού Lineage2.

 

1. Users online - Πόσοι είναι online

 

2. Online users, Nickname, race και level - Η βάση δεδομένων έχει τις τιμές account_name, base_race (1 - 118), level και online (0= offline, 1=online)

 

και

3. Πως μπορώ να συνδέσω 2 Tables

Εκει που λέει Race, αντι για αριθμό να μου δείχνει το αντιστοιχο race που βρίσκεται στο table (class_list)

Οι τιμες του class_list εχουν ως εξέις

class_name (text) και id (1-118)

 

Αν κάποιος μπορεί να με βοηθήσει ή να μου υποδείξει κάποιο οδηγό.

Ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Και τα τρία πράγματα που θέλεις να κάνεις είναι σχετικά εύκολα. Απαιτούνται βασικές γνώσεις SQL και υποθέτω ότι η scripting γλώσσα είναι η PHP. Αφιέρωσε κάποιο χρόνο ώστε να μάθεις τις δύο αυτές τεχνολογίες και να εξασκηθείς πάνω τους.

 

Το 3ο ερώτημά σου είναι μία επέκταση του 2ου. Όπως δηλαδή παίρνεις τα στοιχεία από τον ένα πίνακα, "κολλάς" στο αποτέλεσμα το class_name από τον άλλο πίνακα (πρόσεξε ότι το base_race field στον πρώτο πίνακα αντιστοιχεί στο id του δεύτερου). Συγκεκριμένα, θα χρησιμοποιήσεις το SQL statement JOIN.

 

Αν έχεις άλλες απορίες εδώ είμαστε. =]

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Και τα τρία πράγματα που θέλεις να κάνεις είναι σχετικά εύκολα. Απαιτούνται βασικές γνώσεις SQL και υποθέτω ότι η scripting γλώσσα είναι η PHP. Αφιέρωσε κάποιο χρόνο ώστε να μάθεις τις δύο αυτές τεχνολογίες και να εξασκηθείς πάνω τους.

 

Το 3ο ερώτημά σου είναι μία επέκταση του 2ου. Όπως δηλαδή παίρνεις τα στοιχεία από τον ένα πίνακα, "κολλάς" στο αποτέλεσμα το class_name από τον άλλο πίνακα (πρόσεξε ότι το base_race field στον πρώτο πίνακα αντιστοιχεί στο id του δεύτερου). Συγκεκριμένα, θα χρησιμοποιήσεις το SQL statement JOIN.

 

Αν έχεις άλλες απορίες εδώ είμαστε. =]

 

Να 'σαι καλα φίλε μου, ολα καλα με το 1ο και 2ο.

Όσο αφορα το το 3ο έχω ενα μικρο προβληματάκι, κατάλαβα σχεδόν πως λειτουργει σε php.

 

χρησιμοποιώ αυτην την εντολή

>$result = mysql_query ("SELECT characters.char_name, class_list.class_name
FROM characters, class_list
WHERE characters.race=class_list.id");

 

αλλα κάτι κάνω λάθος. Μου εμφανίζει 118 φορες το ίδιο ονομα χαρακτηρα με τα στατηστικά του..

Πιθανότατα να μη το χρησιμοποιώ στη σωστή θέση.

καμιά ιδέα?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δε βλέπω κάποιο λάθος στο SQL ερώτημά σου. Αν μπορείς πόσταρε και τον κώδικα που εμφανίζει τα αποτελέσματα.

 

Με JOIN θα ήταν κάπως έτσι, αλλά δε νομίζω να έχει καμία διαφορά στη συγκεκριμένη περίπτωση:

 

>SELECT characters.char_name, class_list.class_name
FROM characters
LEFT JOIN class_list
ON characters.race=class_list.id;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

άλλαξα το race με το classid.

 

>
<?php
$con = mysql_connect("xxxx.xxx.xxx.xxx","xxxxx","xxxxx");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
 
 mysql_select_db("emu_db", $con);
 
 $result = mysql_query("SELECT * FROM characters");

echo "<table border='1'>
<tr>
<th>Character</th>
<th>LvL</th>
<th>Class</th>
<th>PVP kills</th>
<th>PK kills</th>
</tr>";

$result = mysql_query("SELECT * FROM characters 
WHERE online='0' ORDER BY level DESC");

$result = mysql_query ("SELECT characters.char_name, class_list.class_name
FROM characters, class_list
WHERE characters.classid=class_list.id"); 

while($row = mysql_fetch_array($result)) 
 {
 echo "<tr>";
 echo "<td>" . $row['char_name'] . "</td>";
 echo "<td>" . $row['level'] . "</td>";
 echo "<td>" . $row['classid'] . "</td>";
 echo "<td>" . $row['pvpkills'] . "</td>";
 echo "<td>" . $row['pkkills'] . "</td>";
 echo "</tr>";
 }
echo "</table>";
mysql_close($con);
?>

 

αυτος είναι ο κωδικας και το αποτελεσμα στο συννημενο αρχειο.

post-32905-129062958849_thumb.gif

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το αποτέλεσμα είναι σωστό μιας και επιλέγεις μόνο τα fields characters.char_name και class_list.class_name. Οπότε η κάθε γραμμή που επιστρέφεται περιέχει μόνο αυτά τα στοιχεία. Δοκίμασε να συμπεριλάβεις όλα τα στοιχεία/πεδία που σε ενδιαφέρουν:

 

>SELECT characters.*, class_list.class_name
FROM characters, class_list
WHERE characters.classid=class_list.id;

 

ή πιο συγκεκριμένα:

 

>SELECT characters.char_name, characters.level, characters.classid, characters.pvpkills, characters.pkkills, class_list.class_name
FROM characters, class_list
WHERE characters.classid=class_list.id;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

εκανα αυτο που λές, εχεις δίκιο, τώρα εμφανίζει όλα τα στοιχεία αλλα δε μου κάνει την αλλαγή

 

κοιτα τα

 

characters.classid

class_list.id

 

είναι και τα 2 numeric.

 

Συνεπώς όπως το βλέπω, παίρνει τα νούμερα απο άλλη στήλη.

πρέπει κάπως να συνδέσω το

class_list.id με το class_list.class_name

post-32905-129062958851_thumb.gif

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τελικα τα κατάφερα.

Ειλικρινά δε ξέρω πως συνδεέι τις τιμές αλλά τα δείχνει σωστά.

 

>
<?php
$con = mysql_connect("χχχ.χχχ.χχχ.χχχ","χχχχχ","χχχχχ");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
 
 mysql_select_db("emu_db", $con);
 
 $result = mysql_query("SELECT * FROM characters, class_list");

echo "<table border='1'>
<tr>
<th>Character</th>
<th>LvL</th>
<th>Class</th>
<th>PVP kills</th>
<th>PK kills</th>
</tr>";

$result = mysql_query ("SELECT characters.*, class_list.*
FROM characters, class_list
WHERE characters.classid=class_list.id
AND online='1' AND accesslevel='0' ORDER BY level DESC");
 
while($row = mysql_fetch_array($result)) 
 {
 echo "<tr>";
 echo "<td>" . $row['char_name'] . "</td>";
 echo "<td>" . $row['level'] . "</td>";
 echo "<td>" . $row['class_name'] . "</td>";
 echo "<td>" . $row['pvpkills'] . "</td>";
 echo "<td>" . $row['pkkills'] . "</td>";
 echo "</tr>";
 }
echo "</table>";
mysql_close($con);
?>

 

επιδή δε θέλω να φαίνονται οι GM προσθεσα αυτη τη τιμή

AND accesslevel='0'

και το αποτέλεσμα

post-32905-129062958852_thumb.gif

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

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

  • Δημιουργία νέου...