Parse error

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

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

Απάντηση
Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Parse error

Δημοσίευση από Apostolis_38 » 06 Μάιος 2008 17:27

Προσπαθώ να κάνω ένα select είτε με το:

query1 = "select count(*) from inv where ".$invno." = invno " ;

είτε με το:

query1 = "select count(*) from inv where ".$HTTP_POST_VARS["invno"]." = invno " ;

παίρνω συνέχεια το ίδιο μήνυμα:
Parse error: syntax error, unexpected '=' in C:\Inetpub\wwwroot\...\... on line 51

Εχω δοκιμάσει τα πάντα, κάθε συνδυασμό των quotes, με = ή με like, έχω κάνει το php.ini μαλιοκούβαρα, παρ' όλα αυτά ΤΙΠΟΤΑ.
Το ίδιο μήνυμα συνέχεια.
Εχει κανείς καμμιά ιδέα για το τι μπορεί να φταίει;

alexsoft

Parse error

Δημοσίευση από alexsoft » 06 Μάιος 2008 17:46

Κάτι δεν μου ταιριάζει εδώ.... μήπως εννοείς:

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

query1 = "select count(*) from inv where invno='".$invno."'" ;
ή εάν το invno (Invoice No.) είναι αριθμητικό:

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

query1 = "select count(*) from inv where invno=".$invno."" ;
Δηλαδή παίρνεις από το $_POST['inv'] τον αριθμό του invoice και το περνάς στο πεδίο invno και όχι το πεδίο στον αριθμό του invoice.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Parse error

Δημοσίευση από Apostolis_38 » 06 Μάιος 2008 17:55

Το πρώτο που αναφέρεις.
Οταν ο χρήστης πάει να καταχωρήσει τα στοιχεία ενός τιμολογίου θέλω το script να "πιάσει" το invno (νούμερο τιμολογίου), να τσεκάρει αν υπάρχει κι αν ναί να βγάλει μήνυμα, αν όχι να το καταχωρήσει.
Η σειρά που δηλώνεις τη μεταβλητή και το πεδίο στη βάση δεν παίζει ρόλο.
Σκέφτηκα να δηλώσω σαν unique το invno στην MySQL αλλά δεν ξέρω κατά πόσο μπορεί να επιστρέψει ένα "σαφές" μήνυμα οτι η εγγραφή υπάρχει, γιατί ο χρήστης δεν ξέρει και πολλά απο αυτά.
Το κουφό είναι οτι στο pc μου που το τεστάρω τρέχει μια χαρά αλλά στου χρήστη όχι :evil: .
Ψάχνω τα settings του IE αλλά δεν βρίσκω κάτι.

alexsoft

Parse error

Δημοσίευση από alexsoft » 06 Μάιος 2008 18:15

Για δοκίμασε το εξής:

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

query1 = "select count(invno) from inv where invno='".$invno."'" ; 
Θα πρέπει να σου επιστρέψει έναν αριθμό.

Κάνε ένα print το επιστρεφόμενο αποτέλεσμα να δεις εάν είναι σωστό.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Parse error

Δημοσίευση από Apostolis_38 » 06 Μάιος 2008 18:22

Δυστυχώς όχι.
ΟΤΙ και να κάνω επιστρέφει το:
Parse error: syntax error, unexpected '=' in κ.λ.π. κ.λ.π. :evil:

alexsoft

Parse error

Δημοσίευση από alexsoft » 06 Μάιος 2008 18:36

Για δοκίμασε και αυτό:

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

query1 = "SELECT COUNT(*) FROM inv WHERE `invno`='".$invno."'" ; 
Εάν δεν τρέξει και τώρα πρέπει να μας δώσεις τον κώδικα που προσπαθείς να εκτελέσεις το ερώτημα και να εμφανίσεις το αποτέλεσμα., διότι μόνο με το Query String δεν μπορούμε να πούμε περισσότερα.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Parse error

Δημοσίευση από Apostolis_38 » 06 Μάιος 2008 18:47

Αν και τελικά το έλυσα με το unique στην MySQL, ορίστε και το script:
(Οχι τίποτε άλλο αλλά μου κάνει εντύπωση που πετάει συνέχεια το ίδιο error)


// Δήλωση μεταβλητών για τα πεδία
$invid = $HTTP_POST_VARS["invid"];
$comp = $HTTP_POST_VARS["comp"];
$invno = $HTTP_POST_VARS["invno"];
$invdate = $HTTP_POST_VARS["invdate"];
$amount = $HTTP_POST_VARS["amount"];
$vat = $HTTP_POST_VARS["vat"];
$comments = $HTTP_POST_VARS["comments"];

// Ελεγχος σύνδεσης με τη βάση
@$db = mysql_pconnect ( '...', '...' , '...');

if (!$db)
{
echo "Η ΣΥΝΔΕΣΗ ΜΕ ΤΗ ΒΑΣΗ ΑΠΕΤΥΧΕ";
exit;
}


//Επιλογή πίνακα
mysql_select_db('invoices');

//Ελεγχος για διπλή καταχώρηση
query1 = "select count(*) from inv where ".$invno." = invno" ;
$result1 = mysql_query ($query1);
$count = mysql_result ($result1, 0);


if (!$count>0)
{

// Εισαγωγή δεδομένων
$query = "insert into inv values
('".$invid."','".$comp."','".$invno."','".$invdate."','".$comments."','".$amount."','".$vat."')" ;
$result = mysql_query ($query);

if ($result)
{
echo mysql_affected_rows ()." ΕΓΓΡΑΦΕΣ ΚΑΤΑΧΩΡΗΘΗΚΑΝ." ;
}

}

else

{
echo "<h2 align = center>Το τιμολόγιο έχει καταχωρηθεί ήδη.</h2>";
echo "Για να συνεχίσετε με την <a href=inv_entry.php>Καταχώρηση Τιμολογίου</a>";
echo "<br>";
echo "Για να συνεχίσετε με την <a href=home.html>Αναζήτηση Τιμολογίου</a>";
exit;
}


Edit Φυσικά όπως σου είπα έχω δοκιμάσει ΚΑΘΕ συνδυασμό του invno = invno αλλά τίποτα.
Ξέχασα να αναφέρω οτι τρέχω php5 και mysql 3.23

Οπως και να χει σε ευχαριστώ.

alexsoft

Parse error

Δημοσίευση από alexsoft » 06 Μάιος 2008 19:02

1) Στα $HTTP_POST_VARS χρησιμοποίησε trim ώστε να εξαλείψεις τυχόν κενούς χαρακτήρες στα άκρα.

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

$invid = trim&#40;$HTTP_POST_VARS&#91;"invid"&#93;&#41;; 
....
..σε όλα τα strings

2) Στο if (!$count>0) άσε μόνο if (!$count) διότι το ! εάν δεν υπάρχει δείχνει 0

3) Γιατί δεν χρησιμοποιείς το

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

 query1 = "SELECT COUNT&#40;invid&#41; FROM inv WHERE invno='".$invno."'" ;  

alexsoft

Parse error

Δημοσίευση από alexsoft » 06 Μάιος 2008 19:03

Apostolis_38 έγραψε:Ξέχασα να αναφέρω οτι τρέχω php5 και mysql 3.23

Οπως και να χει σε ευχαριστώ.
Μήπως η MySQL του πελάτη είναι άλλη έκδοση και έχει ασυμβατότητες;

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Parse error

Δημοσίευση από Apostolis_38 » 07 Μάιος 2008 11:48

- Το trim είχα σκοπό να το χρησιμοποιήσω. Σωστή η παρατήρησή σου.
- Και 0 να δείξει πάλι δεν γίνεται η δουλειά; Με μπέρδεψες λίγο :D
- Οτι και να βάλω στο count() εμφανίζει το ίδιο λάθος. Δεν πρέπει να είναι σφάλμα του script. Κάτι άλλο τρέχει.
- Οι ίδιες εκδόσεις τρέχουν και στο άλλο pc. Αν και για την έκδοση 5 της php έχω διαβάσει διάφορα κουφά.

alexsoft

Parse error

Δημοσίευση από alexsoft » 07 Μάιος 2008 12:04

Apostolis_38 έγραψε:- Το trim είχα σκοπό να το χρησιμοποιήσω. Σωστή η παρατήρησή σου.
- Και 0 να δείξει πάλι δεν γίνεται η δουλειά; Με μπέρδεψες λίγο :D
- Οτι και να βάλω στο count() εμφανίζει το ίδιο λάθος. Δεν πρέπει να είναι σφάλμα του script. Κάτι άλλο τρέχει.
- Οι ίδιες εκδόσεις τρέχουν και στο άλλο pc. Αν και για την έκδοση 5 της php έχω διαβάσει διάφορα κουφά.
Αποστόλη μη μπερδεύεσαι.

Στο if (!$count>0) το ! σου λέει στην ουσία if (0 > 0) {...}. Είναι δυνατό ποτέ ένας αριθμός να είναι μεγαλύτερος από τον εαυτό του;

ενώ το if (!$count) σου λέει if (0) {...}


ή βάλε το παρακάτω

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

if &#40;$count == 0&#41;
&#123;
  // Εισαγωγή δεδομένων
  $query = "insert into inv values &#40;'".$invid."','".$comp."','".$invno."','".$invdate."','".$comments."','".$amount."','".$vat."'&#41;" ;
  $result = mysql_query &#40;$query&#41;;

  if &#40;$result&#41;
  &#123;
    echo mysql_affected_rows &#40;&#41;." ΕΓΓΡΑΦΕΣ ΚΑΤΑΧΩΡΗΘΗΚΑΝ." ;
  &#125;
&#125; 

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Parse error

Δημοσίευση από Apostolis_38 » 07 Μάιος 2008 12:22

:D :D :D
Ok, κατάλαβα.

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Parse error

Δημοσίευση από dik_ » 07 Μάιος 2008 14:55

Το query1 δεν θέλει δολάριο; :D

$query1 = ...

alexsoft

Parse error

Δημοσίευση από alexsoft » 07 Μάιος 2008 15:12

dik_ έγραψε:Το query1 δεν θέλει δολάριο; :D

$query1 = ...
Μπράβο ρε dik_ ούτε εγώ να σου πω την αλήθεια το πρόσεξα, γιατί θεώρησα ότι έχει σωστά γραμμένη την μεταβλητή.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Parse error

Δημοσίευση από Apostolis_38 » 07 Μάιος 2008 16:34

Ενα δολάριο πάντα βοηθάει :D :D :D .
Αλλά καμμιά φορά το copy - paste σουφρώνει κανένα και κάνει πως δεν τρέχει τίποτα :wink:
Στο original υπάρχει κανονικά.

Απάντηση

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

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

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