slevinkelevra Δημοσ. 13 Φεβρουαρίου 2012 Δημοσ. 13 Φεβρουαρίου 2012 Γεια σας και πάλι... Ναι, σωστά καταλάβατε, όταν το θεμα λέει πρόβλημα με query-connection, αφορά στο γνωστο σπαστικό μήνυμα >Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\cultmap\testserchdebug.php on line 39 εχω τσεκάρει το query και το connection 100φορές και τίποτα... το query ειναι αυτό >$query=" SELECT simeia.xu AS xu , simeia.yu AS yu , simeia.simeia_idf AS idf , simeia.simeia_onoma AS onoma , typos.typos_xroma AS xroma FROM simeia, typos WHERE simeia.xroma=typos.typos_idf "; //parakato einai to line 39 $result=mysql_query($query, $connection); $numOfRows=mysql_num_rows($result); echo($numOfRows); if($numOfRows==0) {echo 'Δεν βρέθηκαν αποτελέσματα. Παρακαλω προσπαθήστε πάλι, εισάγωντας νεα κριτηρια αναζήτησης.'.'</br>';} $a=0; while($arr=mysql_fetch_array($result)) { $xu[$a]=$arr['xu']; $yu[$a]=$arr['yu']; $idf[$a]=$arr['idf']; $onoma[$a]=$arr['onoma']; $xroma[$a]=$arr['xroma']; $a++; } και το connection , το οποίο το κάνω include once απ άλλο αρχειο ειναι αυτό (όλο το αρχείο) ><?php header('Content-Type: text/html; charset=UTF-8'); $connection=mysql_connect('localhost','visit','visit') or die ('Sorry, cannot connect to host, due to '.mysql_error().'<br /><br/>'.'Please try again later'); mysql_select_db(xartis) or die('Sorry, cannot connect to the database, due to '.mysql_error().'<br /><br/>'.'Please try again later'); mysql_query('SET NAMES UTF8'); ?> Επίσης μου πεταει >Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\cultmap\testserchdebug.php on line 40 και >Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\cultmap\testserchdebug.php on line 45 αλλα μαλλον πρεπει να "λύσω" το πρωτο warning για να φυγουν και τα υπόλοιπα εχω τσεκάρει συνατξη του κωδικα, τη βάση δεδομένων, το γελειο ειναι οτι το ιδιο αρχειο connection το χρησιμοποιώ και σε άλλα αρχεια και κανενα προβλημα στα αλλα αρχεια... το επισης γελειο ειναι οτι αυτο το query, οταν το βαζω στη βαση , και το εκτελω με mysql δουλευει μια χαρα τι μπορει να κανω λάθος ? plz plz καποιος Ευχαριστω προκαταβολικα
subdee Δημοσ. 13 Φεβρουαρίου 2012 Δημοσ. 13 Φεβρουαρίου 2012 Το query αν το τρέξεις κατευθείαν στην MySQL λειτουργεί κανονικά;
slevinkelevra Δημοσ. 13 Φεβρουαρίου 2012 Μέλος Δημοσ. 13 Φεβρουαρίου 2012 Ναι.... Αν εννοείς να μπήκα στη phpMyAdmin βάση (χρησιμοποιώ AppServ) και να το ετρεξα απο τη καρτελα mysql, ναι... Τι στο καλό γίνεται ρε παιδιά?
slevinkelevra Δημοσ. 13 Φεβρουαρίου 2012 Μέλος Δημοσ. 13 Φεβρουαρίου 2012 Μήπως φταίει οτι τα querys είναι μέσα σε functions της php?? Δηλαδή αν ο χρήστης επιλέξει κάτι, τότε καλείται η μια συνάρτηση που περιέχει και το query, αλλιώς μια αλλη function, με διαφορετικό query....
subdee Δημοσ. 13 Φεβρουαρίου 2012 Δημοσ. 13 Φεβρουαρίου 2012 Χμμ παρατήρησα πως εδώ έχεις: >mysql_select_db(xartis) ενώ θα έπρεπε να έχεις: >mysql_select_db('xartis')
slevinkelevra Δημοσ. 14 Φεβρουαρίου 2012 Μέλος Δημοσ. 14 Φεβρουαρίου 2012 Φίλε subdee, καταρχας ευχαριστω για τις απαντησεις. Εβαλα μονα εισαγωγικα στο ονομα της βασης, και πάλι, καμια διαφορα, βγάζει λάθος, όταν τα query είναι σε functions. όταν δεν είναι σε functions , όλα ok, είτε έχω εισαγωγικα είτε όχι... Εχω 2 query μεσα σε functions. Αν ο χρήστης κάνει αναζητηση εκτελειται το ενα function, με το query μεσα προφανως, με συγκεκριμενα κριτηρια, ενω αν δεν κανει αναζητηση εκτελειται το αλλο function , με αλλο query, το οποίο φερνει όλα τα στοιχεια της βασης. Αν κανω σχόλια τα functions και αφησω "χύμα" τα query , εκτελούνται κανονικα. Τι να συμπερανω? Οτι τα functions εμποδιζουν την εκτελεση των query? Δεν ειναι λογικο, αφου οταν ειχα πρωτο-φτιαξει ετσι τον κωδικα, δουλευαν όλα κανονικα. γιατί δεν γινομουν μπουζουξής????
subdee Δημοσ. 14 Φεβρουαρίου 2012 Δημοσ. 14 Φεβρουαρίου 2012 Γιατί δεν μας παραθέτεις όλον τον κώδικα να δούμε τι ακριβώς γίνεται;
Uberalles_gr Δημοσ. 14 Φεβρουαρίου 2012 Δημοσ. 14 Φεβρουαρίου 2012 Στον κώδικα που μας παρέθεσες δεν βλέπω καμιά function... Βάλε όλο τον κώδικα.
slevinkelevra Δημοσ. 14 Φεβρουαρίου 2012 Μέλος Δημοσ. 14 Φεβρουαρίου 2012 λοιπόν η μεταβλητη yes ερχεται απο search form.aαν ειναι γεματη εκτελειται το ενα function με το query με τα συγκεκριμενα κριτηρια, αλλιως το αλλο, που τα φερνει όλα απο τη βαση...παμε... αρχειο με τα functions > include_once('connection.php'); //if data actually came from the form do the search function or the default function if ($yes==="yes") { ser(); sert(); } else { def(); deft(); } function def(){ //the default query to get all the x,y,id and name and throw them in an array $query=" SELECT simeia.xu AS xu , simeia.yu AS yu , simeia.simeia_idf AS idf , simeia.simeia_onoma AS onoma , typos.typos_xroma AS xroma FROM simeia, typos WHERE simeia.xroma=typos.typos_idf "; echo($query); $result=mysql_query($query, $connection); $numOfRows=mysql_num_rows($result); echo($numOfRows); if($numOfRows==0) {echo 'Δεν βρέθηκαν αποτελέσματα. Παρακαλω προσπαθήστε πάλι, εισάγωντας νεα κριτηρια αναζήτησης.'.'</br>';} $a=0; while($arr=mysql_fetch_array($result)) { $xu[$a]=$arr['xu']; $yu[$a]=$arr['yu']; $idf[$a]=$arr['idf']; $onoma[$a]=$arr['onoma']; $xroma[$a]=$arr['xroma']; $a++; echo($a); } } function ser(){ echo "</br>ser function works!</br>"; //getting the data that came from the form $typeselect=$_POST['typeselect']; $eraselect=$_POST['eraselect']; $nm=$_POST['nm']; $descr=$_POST['descr']; $chrono=$_POST['chrono']; echo "$typeselect</br>"; echo "$eraselect</br>"; echo "$nm</br>"; echo "$descr</br>"; echo "$chrono</br>"; //"trimming" data to clear out whitespaces at the front and the end $nm=trim($nm); $descr=trim($descr); $chrono=trim($chrono); $typeselect=trim($typeselect); $eraselect=trim($eraselect); //checking for completely empty fields if(!$chrono && !$descr && !$name && $typeselect==" " && $eraselect==" ") {echo ' Δεν έχετε εισάγει καθόλου δεδομένα. Παρακαλώ προσπαθήστε πάλι.</br>'; } //the query to get the specific x,y,id,name, according to the data that came from the form and then throw them in an array $querys=" SELECT simeia.xu AS xu , simeia.yu AS yu , simeia.simeia_idf AS idf , simeia.simeia_onoma AS onoma , typos.typos_xroma AS xroma FROM simeia, typos WHERE simeia.xroma=typos.typos_idf AND simeia.simeia_onoma LIKE '$nm%' AND simeia.chronology LIKE '$chrono%' AND simeia.simeia_description LIKE '$descr%' AND simeia.typos LIKE '$typeselect%' AND simeia.era LIKE '$eraselect%' "; echo($querys); $res=mysql_query($querys, $connection); $numRows=mysql_num_rows($res); echo($numRows); if($numRows==0) {echo 'Δεν βρέθηκαν αποτελέσματα. Παρακαλω προσπαθήστε πάλι, εισάγωντας νεα κριτηρια αναζήτησης.</br>';} $b=0; while($arrr=mysql_fetch_array($res)) { $xu[$b]=$arrr['xu']; $yu[$b]=$arrr['yu']; $idf[$b]=$arrr['idf']; $onoma[$b]=$arrr['onoma']; $xroma[$b]=$arrr['xroma']; $b++; } } //transform arrays from php to js for search function function sert(){ echo "sert function works!</br>";?> <script type="text/javascript" language="JavaScript"> var xu=[]; <? for($i=0;$i<$b; $i++) {echo "xu[$i]='".$xu[$i]."';\n";} ?> </script> <script type="text/javascript" language="JavaScript"> var yu=[]; <? for($i=0;$i<$b; $i++) {echo "yu[$i]='".$yu[$i]."';\n";} ?> </script> <script type="text/javascript" language="JavaScript"> var idf=[]; <? for($i=0;$i<$b; $i++) {echo "idf[$i]='".$idf[$i]."';\n";} ?> </script> <script type="text/javascript" language="JavaScript"> var onoma=[]; <? for($i=0;$i<$b; $i++) {echo "onoma[$i]='".$onoma[$i]."';\n";} ?> </script> <script type="text/javascript" language="JavaScript"> var xroma=[]; <? for($i=0;$i<$b; $i++) {echo "xroma[$i]='".$xroma[$ia]."';\n";} ?> </script> <? //} /////////////////////////////////////////////////////////////////////////////// //transform arrays from php to js for default function function deft(){ echo "deft function works!</br>";?> <script type="text/javascript" language="JavaScript"> var xu=[]; <? for($v=0;$v<$a; $v++) {echo "xu[$v]='".$xu[$v]."';\n";} ?> </script> <script type="text/javascript" language="JavaScript"> var yu=[]; <? for($v=0;$v<$a; $v++) {echo "yu[$v]='".$yu[$v]."';\n";} ?> </script> <script type="text/javascript" language="JavaScript"> var idf=[]; <? for($v=0;$v<$a; $v++) {echo "idf[$v]='".$idf[$v]."';\n";} ?> </script> <script type="text/javascript" language="JavaScript"> var onoma=[]; <? for($v=0;$v<$a; $v++) {echo 'onoma[$v]="'.$onoma[$v].'";\n';} ?> </script> <script type="text/javascript" language="JavaScript"> var xroma=[]; <? for($v=0;$v<$a; $v++) {echo 'xroma[$v]="'.$xroma[$v].'";\n';} ?> </script> <? } //making this var "empty" again, for re-use $yes="no"; ?> στα τελευταια 2 functions μετατρεπω τους πινακες απο Php σε javascript, για να τους "πιασω" και να τους "πεταξω" σε svg κωδικα (νομιζω δεν ειναι απαραιτητο να παραθεσω τον κωδικα της svg) και ολοκληρο οτ αρχειο του connection ><?php header('Content-Type: text/html; charset=UTF-8'); $connection=mysql_connect('localhost','visit','visit') or die ('Sorry, cannot connect to host, due to '.mysql_error().'<br /><br/>'.'Please try again later'); mysql_select_db('xartis') or die('Sorry, cannot connect to the database, due to '.mysql_error().'<br /><br/>'.'Please try again later'); mysql_query('SET NAMES UTF8'); ?> ευχαριστω και παλι
defacer Δημοσ. 14 Φεβρουαρίου 2012 Δημοσ. 14 Φεβρουαρίου 2012 Οι functions σου πάνε να προσπελάσουν τη μεταβλητή $connection πράγμα που δεν είναι δυνατό γιατί αυτή δηλώνεται στο global scope. Η ευκολότερη λύση είναι να κάνεις το εξής σε κάθε function: >function def(){ global $connection; // και τα άλλα ως έχουν } Η λύση αυτή είναι "κακή" αν τη δεις με κριτικό μάτι βέβαια, αλλά για κάτι "καλό" θα έπρεπε να ξαναγράψεις τα πάντα από την αρχή. Μερικά tips: 1. Βάλε error_reporting(E_ALL & E_STRICT) στην αρχή κάθε script και φτιάξε όλα τα notices που θα βγάλει. Αν το είχες από την αρχή έτσι, θα έβλεπες κατευθείαν ότι η $connection είναι undefined και δε θα ψαχνόσουν. 2. Διάβαζε τι κάνουν οι functions που χρησιμοποιείς. Η mysql_query μπορεί να επιστρέψει false (όπως κάνει στην περίπτωσή σου), αλλά δεν έχεις βάλει κανένα έλεγχο γι' αυτή την περίπτωση.
Uberalles_gr Δημοσ. 14 Φεβρουαρίου 2012 Δημοσ. 14 Φεβρουαρίου 2012 Λοιπόν, όταν καλείς μια συνάρτηση και δημιουργείς κάποιες μεταβλητές μέσα στην συνάρτηση (ο παρακάτω κώδικας είναι από αυτόν που μας έγραψες) > $xu[$a]=$arr['xu']; $yu[$a]=$arr['yu']; $idf[$a]=$arr['idf']; $onoma[$a]=$arr['onoma']; $xroma[$a]=$arr['xroma']; τότε οι μεταβλητές αυτές (έτσι όπως το έχεις κάνει εσύ) δεν μπορείς να τις χρησιμοποιήσεις και κάπου αλλού. Επομένως, το query γίνεται μια χαρά στην βάση σου. Το θέμα είναι στις μεταβλητές.
slevinkelevra Δημοσ. 14 Φεβρουαρίου 2012 Μέλος Δημοσ. 14 Φεβρουαρίου 2012 Παιδιά σας ευχαριστώ πολύ όλους... Uberalles, γίνεσαι λίγο πιο αναλυτικός? Defacer, τι θα πρότεινες ως πιο σωστή λύση? Και πάλι σας ευχαριστώ όλους...
Uberalles_gr Δημοσ. 15 Φεβρουαρίου 2012 Δημοσ. 15 Φεβρουαρίου 2012 Έχει δίκιο ο defacer δεν το είχα προσέξει. Μπορείς να κάνεις το παρακάτω και δεν χρειάζεται να καλέσεις το $connection > $sql = "SELECT id FROM mytable WHERE myfield > '2'"; if (mysql_query($sql)) { $find_query = mysql_query($sql); if (mysql_num_rows($find_query)) { while($found_query = mysql_fetch_array($find_query)) { } } } αλλιώς θα πρέπει να το καλέσεις στην function σου έτσι def($connection)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα