variable μεσα σε string

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

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

Απάντηση
heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

variable μεσα σε string

Δημοσίευση από heavyaris » 26 Οκτ 2010 23:08

παιδιά, θέλω να στείλω το εξής στη βάση του joomla:

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

Επίστρωση,Επιροδιωμένο,Επίχρυσο[+ mia_metavliti*product_weight]
και όπως είναι αναμενόμενο το καταλαβαινει σαν string και λαμβάνει:

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

Επίστρωση,Επιροδιωμένο,Επίχρυσο[+1*product_weight]
ο κώδικας που γράφω είναι:

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

$query_rodium1 = "update jos_vm_product set attribute = 'Επίστρωση,Επιροδιωμένο,Επίχρυσο[+'".$rodium_attribute1."*product_weight]'";		
το product_weight είναι τιμή της βάσης και όχι δικιά μου μεταβλητή που την ζητάω απο τον χρήστη.

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

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

variable μεσα σε string

Δημοσίευση από dva_dev » 27 Οκτ 2010 11:52

1) Κοιτάς για αρχή το documentation της mysql για να δεις όλες τις functions που υποστηρίζει ώστε να έχεις μια εικόνα του τι κάνουν.
2) Μετά δοκίμασε αυτό

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

$query_rodium1 = "update jos_vm_product set attribute =
    CONCAT('Επίστρωση,Επιροδιωμένο,Επίχρυσο[+',$rodium_attribute1*product_weight,']')";
Στη συνέχεια επαναλαμβάνεις το 1) τουλάχιστον κάθε φορά που θέλεις να κάνεις οτιδήποτε με query.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

variable μεσα σε string

Δημοσίευση από korgr » 27 Οκτ 2010 14:51

dva_dev έγραψε:1) Κοιτάς για αρχή το documentation της mysql για να δεις όλες τις functions που υποστηρίζει ώστε να έχεις μια εικόνα του τι κάνουν.
2) Μετά δοκίμασε αυτό

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

$query_rodium1 = "update jos_vm_product set attribute =
    CONCAT('Επίστρωση,Επιροδιωμένο,Επίχρυσο[+',$rodium_attribute1*product_weight,']')";
Στη συνέχεια επαναλαμβάνεις το 1) τουλάχιστον κάθε φορά που θέλεις να κάνεις οτιδήποτε με query.

Στο παρελθόν με είχες ξελασπώσει σε ένα σύνθετο query.
Τώρα βλέποντας αυτή σου την προσέγγιση, νιώθω μια ασφάλεια πως όπου και να κολήσω θα έχω ουσιαστική υποστήριξη.
Σε ευχαριστώ που είσαι εδώ και βοηθάς! :)

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

variable μεσα σε string

Δημοσίευση από heavyaris » 27 Οκτ 2010 18:37

dva_dev έγραψε:1) Κοιτάς για αρχή το documentation της mysql για να δεις όλες τις functions που υποστηρίζει ώστε να έχεις μια εικόνα του τι κάνουν.
2) Μετά δοκίμασε αυτό

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

$query_rodium1 = "update jos_vm_product set attribute =
    CONCAT('Επίστρωση,Επιροδιωμένο,Επίχρυσο[+',$rodium_attribute1*product_weight,']')";
Στη συνέχεια επαναλαμβάνεις το 1) τουλάχιστον κάθε φορά που θέλεις να κάνεις οτιδήποτε με query.
ειλικρινά, φίλε είσαι απίστευτος!
δεν έχω λόγια, ελπίζω μόνο οι γνώσεις σου να αξιοποιούνται και σε επαγγελματικό επίπεδο!
και πάλι ευχαριστώ! :)

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

variable μεσα σε string

Δημοσίευση από heavyaris » 27 Οκτ 2010 20:29

χμ.. εδώ όμως τώρα έγινε ο μεγάλος χαμός:

δυστυχώς κάποιες ομάδες προιόντων πρέπει να έχουν μεγαλύτερο συντελεστή ανα γραμμάριο..
και συγκεκριμένα τα μοντέλα με όνομα που αρχίζει από A29 ή A37 ή A33 ή A52 ή A42.
έτσι έχω 5 μοντέλα * 5 (οι παραπάνω) κατηγορίες = 25 προιόντα τα οποία πρέπει να πάρουν άλλο συντελεστή (έχω κάνει και ένα δεύτερο textbox στη φόρμα).

προσπάθησα να συντάξω το query, αλλά :

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

UPDATE jos_vm_product SET attribute = CONCAT( 'Επίστρωση,Επιροδιωμένο,Επίχρυσο[+', ( $rodium_attribute1 * product_weight ) , ']', WHERE product_sku LIKE 'A29%' OR product_sku LIKE 'A37%' OR product_sku LIKE 'A33%' OR product_sku LIKE 'A52%' OR product_sku LIKE 'A42%' ) 
δεν επιφέρει αποτέλεσμα γιατί το κάθε like έχει απο πίσω του άλλα 5 προιόντα πχ:
product_sku LIKE 'A37%' έχει A37 40cm, A37 45cm, A37 50cm, A37 55cm, A37 60cm, τα οποία εφόσον είναι και άλλα cm μήκους έχουν και άλλα γραμμάρια βάρους τα οποία πρέπει να συμμετάσχουν στο query ξεχωριστά...
δύσκολη κατάσταση...

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

variable μεσα σε string

Δημοσίευση από heavyaris » 27 Οκτ 2010 20:36

προσπάθησα και το:

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

UPDATE jos_vm_product SET attribute = CONCAT( 'Επίστρωση,Επιροδιωμένο,Επίχρυσο[+', ( 4 * ( SELECT product_weight
FROM jos_vm_product
WHERE product_sku LIKE 'A29%'
OR product_sku LIKE 'A37%'
OR product_sku LIKE 'A33%'
OR product_sku LIKE 'A52%'
OR product_sku LIKE 'A42%' ) ) , ']' ) 
αλλά έλαβα:

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

#1093 - You can't specify target table 'jos_vm_product' for update in FROM clause

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

variable μεσα σε string

Δημοσίευση από dva_dev » 28 Οκτ 2010 07:23

Για δοκίμασε κάπως έτσι:

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

$query_rodium1 = "
UPDATE jos_vm_product SET attribute = 
    CONCAT('Επίστρωση,Επιροδιωμένο,Επίχρυσο[+',$rodium_attribute1*product_weight,']')
WHERE
    product_sku LIKE 'A29%' OR
    product_sku LIKE 'A37%' OR
    product_sku LIKE 'A33%' OR
    product_sku LIKE 'A52%' OR
    product_sku LIKE 'A42%'
";
(το έχω απλώσει για να είναι πιο ευανάγνωστο, αλλά ρίξε μια ματιά γενικά για τη mysql σύνταξη του update statement)

Ομως δεν καταλαβαίνω γιατί πρέπει να έχει ξεχωριστή αντιμετώπιση, αφού έχεις ήδη πεδίο που λέει το βάρος (product_weight), εκτός αν σημαίνει κάτι άλλο. Θα χρειαζόσουν άλλο query μόνο αν άλλαζες την php μεταβλητή που περνάς ($rodium_attribute1) για τους συγκεκριμένους κωδικούς.

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

variable μεσα σε string

Δημοσίευση από heavyaris » 29 Οκτ 2010 19:07

Τα προϊόντα που υπάγονται στις παραπάνω 5 κατηγορίες είναι καδένες που η επιχρύσωση τους κοστίζει πιο ακριβά ανά γραμμάριο, γιαυτό "θέλουν" ξεχωριστό ερώτημα.
η τελική φόρμα είναι παρακάτω, και με την χωρίς την ΒΟΗΘΕΙΑ ΣΟΥ δεν θα ολοκληρωνόταν :)
όσα ευχαριστώ και να πώ πάλι λίγα θα είναι, να 'σαι καλά!
Συνημμένα
rodiumforsite.jpg

Απάντηση

Επιστροφή στο “MySQL”

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

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