find max

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

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

Απάντηση
wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 24 Οκτ 2011 20:32

Καλησπέρα παιδιά.
Έχω σε sql ένα table με στήλη id. (VARCHAR(100) NOT NULL) Έχω καταχωρήσει μέσα αριθμούς. Θέλω να βρω τον μεγαλύτερο αριθμό ανάμεσα στα id.

Δοκίμασα το

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

$result = mysql_query('SELECT max( id ) FROM products');
όμως εμφανίζει Resource id #5

Καμία ιδέα?

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

find max

Δημοσίευση από Kypros Lambrou » 24 Οκτ 2011 20:41

wdesignergr έγραψε:Καλησπέρα παιδιά.
Έχω σε sql ένα table με στήλη id. (VARCHAR(100) NOT NULL) Έχω καταχωρήσει μέσα αριθμούς. Θέλω να βρω τον μεγαλύτερο αριθμό ανάμεσα στα id.

Δοκίμασα το

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

$result = mysql_query('SELECT max( id ) FROM products');
όμως εμφανίζει Resource id #5

Καμία ιδέα?
Πρόσθεσε και

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

$max_array = mysql_fetch_array($result);
$max_id = max_array['id'];
αμέσως μετά την γραμμή $result που έχεις δώσει, και θα έχεις αποθηκευμένο αυτό που θέλεις στην μεταβλητή $max_id[/code]

wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 24 Οκτ 2011 23:26

Σε ευχαριστώ καταρχάς για την άμεση απάντηση.

Δοκίμασα αυτό:

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

include("connector.php");

$result = mysql_query('SELECT max(id) FROM products');
$max_array = mysql_fetch_array($result); 
$max_id = max_array['id']; 

echo "$max_id";
Αλλά μου βγάζει σφάλμα

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

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

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27630
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

find max

Δημοσίευση από cordis » 24 Οκτ 2011 23:53

μάλλον δεν μπορεί να συνδεθεί στην mysql...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

find max

Δημοσίευση από dva_dev » 24 Οκτ 2011 23:57

Για αρχή δοκίμασε να αλλάξεις το

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

$result = mysql_query('SELECT max(id) FROM products');
$max_array = mysql_fetch_array($result);
$max_id = max_array['id'];

σε

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

$result = mysql_query('SELECT max(id) AS maxid FROM products');
$max_array = mysql_fetch_array($result);
$max_id = max_array['maxid'];
και αν παίξει, άλλαξε τον τύπο του πεδίου στον πίνακα από varchar σε κάτι αριθμητικό (integer, longinteger ή κάτι παρόμοιο).
Αν θέλουμε να κρατήρουμε αριθμούς και να κάνουμε αριθμητικές πράξεις/συγκρίσεις πρέπει να είναι τύπου αριθμός το πεδίο στον πίνακα, αλλιώς παίζουμε με strings (και ως γνωστό το "10" < "2")

ΥΓ. Αυτά όταν επανέλθει η σύνδεση, όπως λέει και ο cordis.

wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 25 Οκτ 2011 14:16

Thanks για τις απαντήσεις, αλλά τίποτα.
Ο server μου είναι online και δέχεται την εντολή SELECT max(id) AS maxid FROM products στο phpmyadmin.
Εκτελόντας το παρακάτω, μου εμφανίζει πάλι το παραπάνω error.
Άλλαξα το id σε auto_increment αλλά πάλι τίποτα.
Όλη η βιβλιογραφία λέει πως τα παρακάτω δουλεύουν, εμένα γιατί δεν λειτουργούν.
Να προσθέσω ότι κάποια άλλα αρχεία, πχ. αυτά που εισάγουν δεδομένα στη βάση, λειτουργούν κανονικά.

Καμία ιδέα ακόμη?

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

<?php 
	 
if &#40;$dbc = mysql_connect &#40;'localhost' , 'username' , 'pass'&#41;&#41; &#123;
           &#125;else &#123;
           die &#40;'Could not connect to MySQL because&#58;' . mysql_error&#40;&#41;&#41;;
           &#125;

        // Επιλογή βάσης
        if &#40;@mysql_select_db &#40;'db'&#41;&#41; &#123;
           &#125;else&#123;
           die &#40;'Could not select the database because&#58;' . mysql_error&#40;&#41;&#41;;
           &#125;


$result = mysql_query&#40;'SELECT max&#40;id&#41; AS maxid FROM products'&#41;; 
$max_array = mysql_fetch_array&#40;$result&#41;; 
$max_id = max_array&#91;'maxid'&#93;;

?>

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

find max

Δημοσίευση από Kypros Lambrou » 25 Οκτ 2011 14:25

Σβήσε καταρχάς το σύμβολο '@' μπροστά απο το mysql_select_db μπας και εμφανίσει κανένα άλλο error κατά την επιλογή της βάσης δεδομένων. Το πρόβλημα δεν νομίζω να είναι στις εντολές sql που εκτελείς αλλά στην σύνδεση σου με την βάση. Έχεις κάτι άλλο μέσα στην σελίδα αυτή? Επειδή μπορεί το error να μην προέρχεται από εδώ αλλά απο κάποιο σφάλμα πιο πάνω και απλά να σταματά την εκτέλεση του κώδικα λόγω άλλου σφάλματος, με αποτέλεσμα να μην φτάνεις ποτέ μέχρι εδώ.

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

wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 25 Οκτ 2011 14:38

Έσβησα το σύμβολο @, όμως πάλι τα ίδια.
Έβαλα echo. Όλα δουλέβουν μέχρι το

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

$result = mysql_query&#40;'SELECT max&#40;id&#41; AS maxid FROM products'&#41;;
.

Χωρίς τις δύο από κάτω εντολές εμφανίζει
Resource id #3

Επίσης, είναι ο κώδικας όπως τον βλέπετε. Δεν έχω βάλει τίποτε άλλο.

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

find max

Δημοσίευση από Kypros Lambrou » 25 Οκτ 2011 14:42

Δοκίμασε να αλλάξεις το query σου σε
$result = mysql_query('"SELECT id FROM products LIMIT 1");
$max_array = mysql_fetch_array($result);
$max_id = max_array['id'];
για δοκιμή και δες αν σου βγάζει κάτι.

wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 25 Οκτ 2011 14:47

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

The website encountered an error while retrieving &#40;link&#41;. It may be down for maintenance or configured incorrectly.
τα ίδια.

Θα δοκιμάσω να ανεβάσω το αρχείο σε άλλο σερβερ και βάση για να δούμε αν έχω πρόβλημα με τον σέρβερ. (Αν και δεν νομίζω)

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

find max

Δημοσίευση από Kypros Lambrou » 25 Οκτ 2011 14:57

wdesignergr έγραψε:

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

The website encountered an error while retrieving &#40;link&#41;. It may be down for maintenance or configured incorrectly.
τα ίδια.

Θα δοκιμάσω να ανεβάσω το αρχείο σε άλλο σερβερ και βάση για να δούμε αν έχω πρόβλημα με τον σέρβερ. (Αν και δεν νομίζω)
Μόλις πρόσεξα ότι δεν υπάρχει $ μπροστά απο το max_array στην τελευταία εντολή. Διόρθωσε το και θα πρέπει να είσαι εντάξει.

wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 25 Οκτ 2011 15:51

Έχεις δίκιο. Όλα δουλεύουν έτσι...
(κάτι τόσο μικρό μας έκανε τόσο μεγάλη ζημιά :P)

Σας ευχαριστώ όλους πάρα πολύ για τη βοήθεια!

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

find max

Δημοσίευση από Kypros Lambrou » 25 Οκτ 2011 15:54

wdesignergr έγραψε:Έχεις δίκιο. Όλα δουλεύουν έτσι...
(κάτι τόσο μικρό μας έκανε τόσο μεγάλη ζημιά :P)

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

wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 25 Οκτ 2011 15:57

Ήταν το μόνο αρχείο που δεν είχα error reporting και να τα αποτελέσματα. Θα τοποθετήσω το παρακάτω σε connector.php και θα το κάνω include σε όλες τις σελίδες.

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

ini_set &#40;'display_errors',1&#41;;
error_reporting &#40;E_ALL & ~E_NOTICE&#41;;
Thanks για τις συμβουλές!

wdesignergr
Δημοσιεύσεις: 23
Εγγραφή: 28 Μάιος 2010 01:21

find max

Δημοσίευση από wdesignergr » 26 Οκτ 2011 10:37

Σε συνέχεια των παραπάνω,

θα ήθελα να μάθω σχετικά με τη χρήση του auto_increment.
Όταν ορίζω μια μεταβλητή auto_increment, ο αριθμός της μεταβλητής αυξάνεται κατά 1 σε κάθε νέα εκχώρηση row.
Αν όμως θελήσουμε να διαγράψουμε μια row, χάνουμε και το συγκεκριμένο νούμερο που έχει οριστεί από την auto_increment.
Συνεχίζοντας να εισάγουμε rows, η μεταβλητή συνεχίζει να αυξάνεται, παρακάμπτοντας ότι λείπει μια μεταβλητή που προηγουμένος διαγράψαμε.
Υπάρχει τρόπος να συμπληρώσουμε το κενό?

Ευχαριστώ και πάλι!

Απάντηση

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

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

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