philos Δημοσ. 1 Σεπτεμβρίου 2017 Δημοσ. 1 Σεπτεμβρίου 2017 Καλησπέρα σε όλους! Λοιπόν, ο στόχος προς επίτευξη είναι ο εξής:- έχουμε έναν πίνακα με όνομα itrader (περιέχει τα feedbacks που δίνουν οι χρήστες για συγκεκριμένα thread urls (forum threads) = table column dealurl (μερικά άλλα columns: rateid (auto incement), userid (χρήστης που έδωσε το feedback), rateduserid (χρήστης που το δέχτηκε), dateline (χρόνος που δόθηκε το feedback), sc_reminder_sent (= παίρνει τιμή 1 αν το script έχει προσσεσσάρει τα συγκεκριμένα feedbacks, ώστε να μην ξανά στείλει reminder).- θέλω να στέλνω υπενθύμιση σε έναν χρήση που του δόθηκε feedback αλλά αυτός δεν ανταποκρίθηκε (= έστειλε κι αυτός feedback για το συγκεκριμένο dealurl, εντός 5 ημερών. Έχω γράψει το εξής query... (sorry που το παραθέτω σε pastebin αλλά εδώ ο server του insomnia με μπλοκάρει όταν κάνω προεπισκόπηση μηνύματος επειδή θεωρεί ότι κάνω attack) ...το οποίο λειτουργεί σωστά, όμως υπάρχει η εξής ιδιομορφία: - Τα καθαρά thread urls έχουν τη μορφή: www.mydomain.com/threads/12345 (όπου 12345 το threadid). - Όμως λόγω μηχανής forum, αυτά τα urls μπορεί να έχουν και extra χαρακτήρες όπως: www.mydomain.com/threads/12345-lalalala ... με αποτέλεσμα το query να μην λειτουργεί σωστά αφού δεν μπορεί να οριστεί itrader2.dealurl = itrader1.dealurl και itrader1.dealurl = itrader3.dealurl, ενώ θα έπρεπε (ώστε να πετύχω αυτό που θέλω). Μιας που ο πίνακας έχει ήδη data, υπάρχει κάποια λύση ώστε να ταιριάξω τα ακόλουθα urls; www.mydomain.com/threads/12345 www.mydomain.com/threads/12345-lalalala (ουσιαστικά ό,τι ακολουθεί μετά την πρώτη παύλα από τα αριστερά, είναι άχρηστο) Ουσιαστικά ψάχνω αρχικά για μια λύση σε MySQL (πχ με τίποτα κανονικές παραστάσεις), αντί να αρχίσω την επεξεργασία με php. ΥΓ: Ξέρω ότι θα ήταν το ιδανικό να αποθηκεύω το threadid κτλ, αλλά μιλάμε για ένα σύστημα που δεν έχω σχεδιάσει εγώ και είναι έτοιμο κι εγώ απλά του προσθέτω αυτή τη λειτουργία. Οπότε αρχικά ψάχνω για μια λύση με τη χρήση του υπάρχοντα column "dealurl". Αυτά
mad-proffessor Δημοσ. 1 Σεπτεμβρίου 2017 Δημοσ. 1 Σεπτεμβρίου 2017 Με καποια συναρτηση της php θα το κανεις (πιθανοτατα με regex) αν δε βγαίνει με καποια απο τις http://php.net/manual/en/ref.strings.php σε συνδυασμο με trim.
tsofras Δημοσ. 1 Σεπτεμβρίου 2017 Δημοσ. 1 Σεπτεμβρίου 2017 Θες απλά να φάς ότι έχει απο την παύλα και μετά ή κατάλαβα λάθος? Αν δεν κατάλαβα λάθος μπορείς να δοκιμάσεις SELECT * FROM itrader WHERE dealurl REGEXP '^[0-9]+$'; Υ.Γ. Είμαι στη δουλεία και κόβει το pastebin δεν μπορώ να δώ το query που έχεις βάλει
guardian21 Δημοσ. 1 Σεπτεμβρίου 2017 Δημοσ. 1 Σεπτεμβρίου 2017 Αν έχεις πάντα πχ το 1ο url, και θες να τσεκάρεις για το 2ο, και επίσης έχεις στάνταρ αριθμό χαρακτήρων για το id (πχ δεν μπορεί να έχεις www.mydomain.com/threads/12345 και www.mydomain.com/threads/1234567 ) τότε μπορείς να δοκιμάσεις και με το LIKE. Πχ αν itrader1.dealurl = www.mydomain.com/threads/12345 , itrader2.dealurl = www.mydomain.com/threads/12345-lalala το Select * from itrader1, itrader2 where itrader2.dealurl LIKE itrader1.dealurl || '%' Edit: (το % είναι wildcard 0,1 ή περισσότερων χαρακτήρων, οπότε θα βρει όλα τα itrader2.dealurl που αρχίζουν με το itrader1.dealurl) Μπορείς να δεις εδώ λίγο για το LIKE https://www.w3schools.com/sql/sql_like.asp
warlock9_0 Δημοσ. 4 Σεπτεμβρίου 2017 Δημοσ. 4 Σεπτεμβρίου 2017 αν απλά θες να πετάξεις από την παύλα και μετά μπορείς να χρησιμοποιήσεις κάτι τέτοιο https://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_substring-index
mad-proffessor Δημοσ. 4 Σεπτεμβρίου 2017 Δημοσ. 4 Σεπτεμβρίου 2017 Αυτα τα queries όμως θα είναι subject σε sql attacks και σίγουρα θα χρειάζονται prepared statements αν είναι να γίνουν έτσι. Just for the record, όχι οτι δεν είναι σωστά.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα