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

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

Δημοσ.

Καλησπέρα σε όλους! :-)
 
Λοιπόν, ο στόχος προς επίτευξη είναι ο εξής:
- έχουμε έναν πίνακα με όνομα 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".

 

Αυτά :-)

Δημοσ.

Θες απλά να φάς ότι έχει απο την παύλα και μετά ή κατάλαβα λάθος?

Αν δεν κατάλαβα λάθος μπορείς να δοκιμάσεις


SELECT *
FROM itrader
WHERE dealurl REGEXP '^[0-9]+$';

Υ.Γ. Είμαι στη δουλεία και κόβει το pastebin δεν μπορώ να δώ το query που έχεις βάλει

Δημοσ.

Αν έχεις πάντα πχ το 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

Δημοσ.

Αυτα τα queries όμως θα είναι subject σε sql attacks και σίγουρα θα χρειάζονται prepared statements αν είναι να γίνουν έτσι. Just for the record, όχι οτι δεν είναι σωστά.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...