Πρόβληματα με mysql

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

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

Απάντηση
Άβαταρ μέλους
Legend_fe
Δημοσιεύσεις: 347
Εγγραφή: 23 Δεκ 2002 12:11
Τοποθεσία: Αθήνα
Επικοινωνία:

Πρόβληματα με mysql

Δημοσίευση από Legend_fe » 31 Ιαν 2013 14:26

Γεια σας,
έχω την παρακάτω φόρμα που στέλνει κάποιες μεταβλητές στην php:
forma.html

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

<form id="form1" name="form1" method="POST" action="purchase.php">
  <p>
    <label>
      Customer ID&#58;
      <input type="text" name="CustomerID" id="CustomerID" size="10"/>
    </label>
  </p>
  <p>&nbsp;</p>
  <label>
    <select name="list1" id="list1">
    <option value=" " selected="selected"> </option>
    <option value="portrait">Portrait</option>
    <option value="landscape">Landscape</option>
    </select> Photograph ID&#58; <input type="text" name="catalogID1" id="catalogID1" size="10" />
    <br />
    <input type="submit" name="Submit" id="Submit" value="Submit" />
  </label>
</form>
και η purchase.php έχει τον παρακάτω κώδικα:

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

<?php
$username = "root";
$password = "root";
$hostname = "localhost";

$dbhandle = mysql_connect&#40;$hostname, $username, $password&#41;
	or die&#40;"Unable to connect to MySQL"&#41;;
echo "Connected to MySQL <BR>";
mysql_select_db&#40;"gallery",$dbhandle&#41;
	or die &#40;"could not select specified database <BR>"&#41;;
$varList = $_POST&#91;'list1'&#93;;
$varCatalogID = $_POST&#91;'catalogID1'&#93;;

if &#40; $varList == "portrait"&#41;
&#123;
	$availability = mysql_query&#40;"SELECT availability FROM gallery.portrait WHERE portrait.catalogID='$varCatalogID'"&#41;;
	$availability--;
	mysql_query&#40;"UPDATE gallery.portrait SET availability = '$availability' WHERE portrait.catalogID='$varCatalogID'"&#41;;
	$result = mysql_query&#40;"SELECT price FROM gallery.portrait WHERE catalogID='$varCatalogID'"&#41;;
	echo "Photo no." . $varCatalogID . "Price&#58; " . $result . "EURO <BR>";
&#125;
else
	echo "poulo";
?>
Τα προβλήματα είναι τα εξής:
1. Το availability στην βάση το έχω 100 και όταν περνάει από την purchase.php γίνεται 0 ή 2 (!)
2. στην θέση του price μου εμφανίζει "Resource id #4" ενώ η τιμή του στην βάση είναι π.χ. 25

Τι στο καλό κάνω λάθος; ΟΕΟ!

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πρόβληματα με mysql

Δημοσίευση από jpk » 31 Ιαν 2013 14:58

Πάμε το τι κάνεις λάθος στο συγκεκριμένο &#8230;
Η mysql-query επιστρέφει ένα recourse resultset όταν το query έχει μέσα του SELECT , βλέπε http://php.net/manual/en/function.mysql-query.php . Επίσης η PHP έχει το PDO που είναι ένα πολύ καλό database interface.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβληματα με mysql

Δημοσίευση από gvre » 31 Ιαν 2013 15:56

Καλύτερα να πας σε pdo, όπως σου είπε και ο jpk. To mysql extension είναι deprecated από την php 5.5.0 και θα καταργηθεί στο μέλλον. Με την ευκαιρία του pdo, δες τα prepared statements για να έχεις το κεφάλι σου ήσυχο από τα sql injections.

Άβαταρ μέλους
Legend_fe
Δημοσιεύσεις: 347
Εγγραφή: 23 Δεκ 2002 12:11
Τοποθεσία: Αθήνα
Επικοινωνία:

Πρόβληματα με mysql

Δημοσίευση από Legend_fe » 31 Ιαν 2013 16:02

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

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

Πρόβληματα με mysql

Δημοσίευση από dva_dev » 31 Ιαν 2013 16:15

Αφού το $availability δεν βλέπω να το χρησιμοποιείς πουθενά ίσως αντί να γράψεις

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

$availability = mysql_query&#40;"SELECT availability FROM gallery.portrait WHERE portrait.catalogID='$varCatalogID'"&#41;; 
$availability--; 
mysql_query&#40;"UPDATE gallery.portrait SET availability = '$availability' WHERE portrait.catalogID='$varCatalogID'"&#41;;
ίσως είναι προτιμότερο να γράψεις απλώς κάτι σαν

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

mysql_query&#40;"UPDATE gallery.portrait SET availability = availability - 1 WHERE portrait.catalogID='$varCatalogID'"&#41;;
Το "εξεζητημένο" δεν είναι αυτό που σου πρότειναν οι φίλοι παραπάνω. Το "εξεζητημένο" θα ήταν να φτιάξεις μια function ή stored procedure που να ελέγχει αν υπάρχει διαθεσιμότητα και μέσα σε κάποιο transaction που να κάνει τη μειώνει στο availability κατά 1 και να σου επιστρέφει το αποτέλεσμα, για να είσαι καλυμένος ότι δεν θα σου τύχει την ίδια στιγμή να ζητάνε 2+ χρήστες το ίδιο πράγμα.

Απάντηση

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

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

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