Buongiorno a tutti,
mi sto cimentando nello sviluppo di un programma web in php-sql.
Ho un problema nella verifica di due stringhe "numeriche".. provo a spiegarmi meglio:
ho due db creati su phpMyadmin :
uno, di nome f12 dove all'interno c'è un campo "PLT" di tipo varchar(12) con codifica utf8_general_ci, dove all'interno di sono importi (in stringa) di questo tipo : "€ 2.500,00" oppure " 339,00" (occhio che c'è lo spazio all'inizio)
un altro db, di nome ag2020 dove all'interno vi è un campo "importo" di tipo varchar(15) e codifica utf8_general_ci , all'interno ci possono essere dati di questo tipo: "1282.43" oppure " 3026.87 " (spazio avanti e indietro)
tramite una funzione vorrei estrarre i dati per poterli confrontare, andando poi ad alimentare un campo "check" all'interno del db "f12" dove dovra essere "" se non sono uguali, "OK" se i numeri sono gli stessi.
Detto questo (spero di essere stato chiaro e di avervi dato tutte le informazioni utili):
vi evidenzio la parte che mi da problemi
ipotizziamo che nel db ag2020 ci sia tra i dati, importo = " 2764.57 "
e che nel db f12 ci sia tra i dati, PLT = " 2764,57 "
vorrei che il programma capisse che ci troviamo davanti allo stesso "numero"
se faccio così, pur avendo svuotato gli spazi e cambiato la virgola con il punto , non mi restituisce risultati (pur essendoci).. ho provato anche la funzione trim($incPLT) in aggiunta, ma neanche funziona
se invece utilizzo la funzione LIKE al posto dell' = , allora mi trova il risultato
$sql20 = "SELECT * FROM $ag2020 WHERE num LIKE '%$incnumero%' AND datainizio = '$incdata' AND importo LIKE '%$incPLT%';
il problema è che se importo fosse = " 12764.57 " e PLT = " 2764,57 " mi darebbe comunque OK - pur non essendo lo stesso numero - perchè la stringa è contenuto all'interno dell'altra
come posso fare senza cambiare tutte le strutture dei db?
Vi ringrazio in anticipo
buona giornata a tutti
mi sto cimentando nello sviluppo di un programma web in php-sql.
Ho un problema nella verifica di due stringhe "numeriche".. provo a spiegarmi meglio:
ho due db creati su phpMyadmin :
uno, di nome f12 dove all'interno c'è un campo "PLT" di tipo varchar(12) con codifica utf8_general_ci, dove all'interno di sono importi (in stringa) di questo tipo : "€ 2.500,00" oppure " 339,00" (occhio che c'è lo spazio all'inizio)
un altro db, di nome ag2020 dove all'interno vi è un campo "importo" di tipo varchar(15) e codifica utf8_general_ci , all'interno ci possono essere dati di questo tipo: "1282.43" oppure " 3026.87 " (spazio avanti e indietro)
tramite una funzione vorrei estrarre i dati per poterli confrontare, andando poi ad alimentare un campo "check" all'interno del db "f12" dove dovra essere "" se non sono uguali, "OK" se i numeri sono gli stessi.
Detto questo (spero di essere stato chiaro e di avervi dato tutte le informazioni utili):
vi evidenzio la parte che mi da problemi
ipotizziamo che nel db ag2020 ci sia tra i dati, importo = " 2764.57 "
e che nel db f12 ci sia tra i dati, PLT = " 2764,57 "
PHP:
$sql1 = "SELECT numero, data, nome, PLT FROM f12";
$res1 = $conage->query($sql1);
if (@$res1->num_rows > 0) { ?>
<table><?php
while ($rig1 = mysqli_fetch_array($res1, MYSQLI_BOTH)) {
$incnumero = $rig1['numero'];
$incdata = $rig1['data'];
$incnome = $rig1['nome'];
$incPLT = $rig1['PLT'];
$incPLT = str_replace(",", ".", $incPLT);
$incPLT = str_replace(" ", "", $incPLT);
$sql20 = "SELECT * FROM $ag2020 WHERE num LIKE '%$incnumero%' AND datainizio = '$incdata' AND TRIM(importo) = '$incPLT';
$res20 = $conins->query($sql20);
if ($res20->num_rows > 0) {
while ($rig20 = mysqli_fetch_array($res20, MYSQLI_BOTH)) {
$check= 'OK';
.....ecc
}
vorrei che il programma capisse che ci troviamo davanti allo stesso "numero"
se faccio così, pur avendo svuotato gli spazi e cambiato la virgola con il punto , non mi restituisce risultati (pur essendoci).. ho provato anche la funzione trim($incPLT) in aggiunta, ma neanche funziona
se invece utilizzo la funzione LIKE al posto dell' = , allora mi trova il risultato
$sql20 = "SELECT * FROM $ag2020 WHERE num LIKE '%$incnumero%' AND datainizio = '$incdata' AND importo LIKE '%$incPLT%';
il problema è che se importo fosse = " 12764.57 " e PLT = " 2764,57 " mi darebbe comunque OK - pur non essendo lo stesso numero - perchè la stringa è contenuto all'interno dell'altra
come posso fare senza cambiare tutte le strutture dei db?
Vi ringrazio in anticipo
buona giornata a tutti
Ultima modifica di un moderatore: