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

Αρχάριος στην php


Praetorianos

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

Δημοσ.

Έχω ένα θεματάκι στην php, φαντάζομαι εύκολο γι' αυτούς που ξέρουν, αλλά εγώ δεν έχω ασχοληθεί ιδιαίτερα οπότε κόλλησα.

Θέλω να φτιάξω ένα αρχείο σε php που να ελέγχει τα πεδία "username" και "password" που θα καταχωρούνται μέσω μιας ιστοσελίδας, να τα διασταυρώνει με μία βάση δεδομένων σε access και αν συμφωνούν τα username και password, να εμφανίζει τα πλήρη στοιχεία του πελάτη.

 

To κόλλημα εμφανίζεται στο εξής σημείο:

 

sdsdwx.jpg

 

Αν και στο dreamweaver λέει no mistakes (αν και δεν ξέρω αν ελέγχει συντακτικά λάθη ή κάτι άλλο), όταν πάω να το τρέξω μου βγαίνει το εξής σφάλμα:

Warning: Wrong parameter count for odbc_connect() in C:\Program Files\EasyPHP 2.0b1\www\group6\passwordresult.php on line 13

Could Not Connect to ODBC Database!

Γιατί έτσι?

 

 

Να πω επίσης ότι την λειτουργία από την γραμμή 16 και κάτω δεν την έχω καταλάβει αρκετά, ίσως έχω κάνει λάθος κι εκεί :-(

 

Δημοσ.
Έχω ένα θεματάκι στην php, φαντάζομαι εύκολο γι' αυτούς που ξέρουν, αλλά εγώ δεν έχω ασχοληθεί ιδιαίτερα οπότε κόλλησα.

Θέλω να φτιάξω ένα αρχείο σε php που να ελέγχει τα πεδία "username" και "password" που θα καταχωρούνται μέσω μιας ιστοσελίδας, να τα διασταυρώνει με μία βάση δεδομένων σε access και αν συμφωνούν τα username και password, να εμφανίζει τα πλήρη στοιχεία του πελάτη.

 

To κόλλημα εμφανίζεται στο εξής σημείο:

 

 

 

Αν και στο dreamweaver λέει no mistakes (αν και δεν ξέρω αν ελέγχει συντακτικά λάθη ή κάτι άλλο), όταν πάω να το τρέξω μου βγαίνει το εξής σφάλμα:

 

Γιατί έτσι?

 

 

Να πω επίσης ότι την λειτουργία από την γραμμή 16 και κάτω δεν την έχω καταλάβει αρκετά, ίσως έχω κάνει λάθος κι εκεί :-(

 

λοιπον

 

οσον αφορα τον κωδικα.

 

  • διατρέχεις με ένα while τα αποτελεσματα που πήρες απο το query (17)
  • έχεις έστω και ένα result, τότε "σηκώνεις" τη μεταβλητή $check (19)
  • μετά ελέγχεις αν το check σηκώθηκε (22) κι αν
  • ναι τότε στην μεταβλητη $a καταχωρείς το right (αν αυτο ειναι string, θα πρέπει να το βάλεις μέσα σε μονά ή διπλά αυτάκια)
  • αν δεν έχει σηκωθεί το check, τοτε στη μεταβλητη a βάζεις το wrong (ισχυει και πάλι αυτο που ειπα παραπανω με το string)

**********************************

οσον αφορά το σφαλμα.

 

Δεν συνδέεσαι στην βάση. Νομίζω ότι φταίει το κενο password που στέλνεις....

 

edit: όπου αριθμος -> αριθμός γραμμής

Δημοσ.
Δεν συνδέεσαι στην βάση. Νομίζω ότι φταίει το κενο password που στέλνεις....

 

edit: όπου αριθμος -> αριθμός γραμμής

Να 'σαι καλά, τώρα ψιλοκατάλαβα κάπως τον κώδικα με την επεξήγηση.

Το σφάλμα δυστυχώς κάπου αλλού οφείλεται καθώς είμαι σίγουρος ότι δεν χρειάζεται password για να συνδεθώ στον server οπότε πρέπει να το αφήσω κενό.

 

Το περίεργο είναι ότι αν συνδεθώ σε άλλη βάση (έστω Β) που έχει ανέβει στον server, την ανοίγει κανονικά! Ωραία λέω, θα μετατρέψω αυτή τη βάση και θα σβήσω την άλλη. Αμ δε.

Με το που αλλάξω τα ονόματα στα fields (πχ από username σε kodikos) μου βγάζει σφάλμα too few parameters :confused:

Δημοσ.

Ενδεχομένως να φταίει το όνομα της βάσης (trapeza-daneio). Δοκίμασε να αλλάξεις το όνομά της σε trapeza_daneio (άλλαξε τη παύλα με undescore)

Δημοσ.

σιγουρα φταίει αυτο.

 

διαβάζω ότι και παλαιότερα και η MySQL υπέφερε απο ένα τέτοιο bug. Στην δική σου βάση μπορεί για κάποιες λειτουργίες να μην πετάει σφάλμα, σε άλλες όμως πετάει. Οπότε μιας και τώρα ξεκινάς, αντικατέστησε το hyphen (-) με underscore (_)

Δημοσ.
Πέτα την Access και χρησιμοποίησε MySQL. Είναι πολύ καλά documented, και είναι πολύ ευκολη με το εργαλείο phpMyAdmin.

Καλή η πρόταση, κάκιστη η επεξήγηση... Αν το phpmyadmin και το http://www.google.gr/search?q=mysql&ie=utf-8 είναι εύκολο, τότε το office access και το F1 τι μπορεί να είναι;:-(

Anyway, για όποιον ενδιαφέρεται: http://www.weberdev.com/ViewArticle/Access-vs.-MySQL, κοινώς κάθε πρόγραμμα έχει και τη χρήση του

  • 3 εβδομάδες αργότερα...
Δημοσ.

Επαναφέρω το θέμα για μία επιπλέον ερώτηση που κόλλησα.

Μετά την φόρμα login εμφανίζεται αυτή η φόρμα όπου εμφανίζονται τα στοιχεία του πελάτη από μια βάση και όσα είναι μέσα στα textboxes υποτίθεται ότι μπορεί να τα αλλάξει.

 

56632426.jpg

 

 

Πατώντας όμως το "enter" εμφανίζεται αυτό:

 

95245275.jpg

 

 

Ο κώδικας που τρέχει είναι αυτός:

 

97043921.jpg

 

 

Που κάνω το λάθος? :-( Γενικά υπάρχει κάποιος τρόπος να φέρνει τα στοιχεία από μία βάση στα textboxes και μετά τις αλλαγές να τα ανανεώνει σε αυτή?

Δημοσ.

Μάλλον δεν παίρνει τα δεδομένα από τη φόρμα. Μπορείς να στείλεις και τον κώδικα που χρησιμοποιείς στη φόρμα; Επίσης, φαίνεται όχι έχεις και ένα θέμα στην κωδικοποίηση των δεδομένων που παίρνεις από τη βάση

Tip: Μη στέλνεις screenshots, αντέγραψε καλύτερα τον κώδικά σου και χρησιμοποίησε εδώ την επιλογή για κώδικα php

Δημοσ.
Μάλλον δεν παίρνει τα δεδομένα από τη φόρμα. Μπορείς να στείλεις και τον κώδικα που χρησιμοποιείς στη φόρμα; Επίσης, φαίνεται όχι έχεις και ένα θέμα στην κωδικοποίηση των δεδομένων που παίρνεις από τη βάση

Tip: Μη στέλνεις screenshots, αντέγραψε καλύτερα τον κώδικά σου και χρησιμοποίησε εδώ την επιλογή για κώδικα php

 

Οχι μαλλον σιγουρα δεν τα παιρνει απο την φορμα. Το $_GET[''] σημαινει οτι διαβαζει τα δεδομενα απο την κεφαλιδα Url μετα απο το ?

 

δηλ .index.php?&name1=omoma1&name2=omoma2&name3=omoma3κτλ

 

Αρα η φορμα λογικα ξανανοιγει την σελιδα με javascript document.location.replace("index.php?&name1="+document.forms["myform"].elements["name1"].value+"&name1="+document.forms["myform"].elements["name2"].value);

 

εκει δεν παιρνει τα δεδομενα απο τη φορμα για να ξανανοιξει τη σελιδα και να περασει τα δεδομενα!!

 

ψαξε για το document.location.replace εκει ειναι το προβλημα ή δωσε το κωδικα της φορμας να σου πουμε τι φταιει

Δημοσ.
Αρα η φορμα λογικα ξανανοιγει την σελιδα με javascript document.location.replace("index.php?&name1="+document.forms["myform"].elements["name1"].value+"&name1="+document.forms["myform"].elements["name2"].value);

Αυτός τρόπος είναι επιεικώς απαράδεκτος. Δεν υπάρχει κανένας απολύτως λόγος χρήσης javascript, από τη στιγμή που ένα submit button κάνει ακριβώς την ίδια δουλειά!

 

@Praetorianos: Μήπως στη φόρμα σου χρησιμοποιείς το method="POST" αντί για το method="GET"; Επίσης, το name1 το δίνεις τόσο στο ΑΦΜ, όσο και στο επάγγελμα

Δημοσ.

Λες απλα να θελει POST αντι για GET? Πιθανον αλλα μονο μαντεψιες μπορουμε να κανουμε αν δεν μας δωσει κι αλλα στοιχεια!

Δημοσ.

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

><?php
session_start();
$AFM = $_SESSION['b'];

στην αρχή και με μερικές αλλαγές ακόμα κατάφερα να το κάνω να τρέχει.Η κωδικοποίηση μου είπαν ότι είναι όπως αναφέρθηκε κι εδώ πρόβλημα της κωδικοποίησης της βάσης οπότε δεν μπορώ να κάνω κάτι εγώ :rolleyes:.

 

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

 

Αυτό που δεν έχω καταφέρει ακόμα είναι να κάνω έλεγχο των δεδομένων κατά την εισαγωγή τους, δηλαδή να μην μπορεί να καταχωρεί γράμματα σε πεδία που απαιτούν αριθμούς και ανάποδα. Υπάρχει κάποια εντολή? Βρήκα μόνο την:

><?php
if (is_int(23)) {
   echo "is integer\n";
} else {
   echo "is not an integer\n";
}
?>

αλλά δεν την έχω δοκιμάσει ακόμα..

 

 

Μπορεί να έχω μπερδέψει μερικούς με τον τρόπο που συντάσσω τον κώδικα αλλά είμαι κι ο ίδιος λίγο ψιλομπερδεμένος

 

Δημοσ.

Εγώ θα έλεγα ότι είσαι αρκετά μπερδεμένος....

 

Μπορείς να ελέγχεις είτε σε javascript είτε σε php

 

To σωστό είναι να τα ελέγχεις και στην φόρμα που κάνεις το submit αλλά και μετά που τα κάνεις POST

 

Μέθοδοι υπάρχουν πάρα πολλοί.... Ψάξε λίγο στο google και θα βρεις...

Δημοσ.
Μέθοδοι υπάρχουν πάρα πολλοί.... Ψάξε λίγο στο google και θα βρεις...

Πίστεψε με 8 ώρες σήμερα και αρκετές άλλες τις προηγούμενες μέρες δεν έκανα και τίποτα άλλο :-)

 

To σωστό είναι να τα ελέγχεις και στην φόρμα που κάνεις το submit αλλά και μετά που τα κάνεις POST

Σκέφτομαι αν υπάρχει κάποια εντολή ώστε με έλεγχο if μέσα στην PHP να ελέγχω αν είναι integer και αν ναι να περνάει τα στοιχεία στην βάση αλλιώς να βγάζει μήνυμα λάθους. Η εντολή που βρήκα είναι η παραπάνω και δοκιμάζω να την βάλω μέσα στο αρχείο αυτή τη στιγμή.

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

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

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