Condividi:        

[PHP+MySql] Ricerca dati attraverso un campo di ricerca

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi archimede » 16/11/09 15:59

Non conosco bene PHP, ma a occhio direi di sì.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Sponsor
 

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi gahan » 16/11/09 17:41

Codice: Seleziona tutto
<?php
include("connessione.php");
$stringa=$_POST[stringa];
if (!$stringa or $stringa==""){
echo "<font face=\"arial\" size=\"2\">E' necessario specificare la/le parola/parole da cercare<br><a href=\"javascript:history.back()\">indietro</a></font>";
exit();
}
$cn=mysql_connect($host,$uid,$pw);
mysql_select_db($db,$cn);
$sql="SELECT*FROM $tabella WHERE ";
$lista_parole=explode(" ",$stringa);
for($i=0;$i<count($lista_parole);$i++)
{
$str.="titolo LIKE '%$lista_parole[$i]%' OR ";
}
$str=substr($str,0,(strlen($str)-3));
$sql.=$str;

$prezzoDA = (preg_match( "/^(\d+),?(\d{1,2})?$/" , $_POST['prezzoDA'] )) ? $_POST['prezzoDA'] : 0;
$prezzoA = (preg_match( "/^(\d+),?(\d{1,2})?$/" , $_POST['prezzoA'] )) ? $_POST['prezzoA'] : 0;
if ($prezzoA > $prezzoDA) {
    $prezzoA = $prezzoDA;
}
if ($prezzoDA > 0 && $prezzoA > 0) {
    $sql .= " AND prezzo BETWEEN {$prezzoDA} AND {$prezzoA}";
} else if ($prezzoDA > 0 && $prezzoA <= 0) {
    $sql .= " AND prezzo >= {$prezzoDA}";
} else if ($prezzoDA <= 0 && $prezzoA > 0) {
    $sql .= " AND prezzo <= {$prezzoA}";
}

$mqu=$_POST[mquadri];
if ($mqu=="max"){
$sql.="mq >150";
}
elseif ($mqu=="min")
{
$sql.="AND mq <150";
}
$sql.=" ORDER BY id";
$query=mysql_db_query($db,$sql);
$num=mysql_num_rows($query);

$query=mysql_db_query($db,$sql);
$num=mysql_num_rows($query);
echo $sql;
?>
quando clicco su "cerca" la pagina di risposta mi visualizza questo:

SELECT*FROM pagine WHERE titolo LIKE '%villa%' AND prezzo BETWEEN 100000 AND 100000 ORDER BY id

che sembrerebbe corretto se non fosse per il prezzo per il quale l'ho messo da 100.000 a 200.000...qui invece mi visualizza da 100.000 a 200.000
words like violence, break the silence
Avatar utente
gahan
Moderatore
 
Post: 1397
Iscritto il: 23/01/08 16:09

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi archimede » 16/11/09 17:48

gahan ha scritto:sembrerebbe corretto se non fosse
...che intorno a * ci vanno gli spazi.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi gahan » 16/11/09 18:20

Allora ho sistemato un po ed ora funziona solo che:
Codice: Seleziona tutto
<?php
include("connessione.php");
$stringa=$_POST[stringa];
if (!$stringa or $stringa==""){
echo "<font face=\"arial\" size=\"2\">E' necessario specificare la/le parola/parole da cercare<br><a href=\"javascript:history.back()\">indietro</a></font>";
exit();
}
$cn=mysql_connect($host,$uid,$pw);
mysql_select_db($db,$cn);
$sql="SELECT * FROM $tabella WHERE ";
$lista_parole=explode(" ",$stringa);
for($i=0;$i<count($lista_parole);$i++)
{
$str.="titolo LIKE '%$lista_parole[$i]%' OR ";
}
$str=substr($str,0,(strlen($str)-3));
$sql.=$str;

$prezzoDA = (preg_match( "/^(\d+),?(\d{1,2})?$/" , $_POST['prezzoDA'] )) ? $_POST['prezzoDA'] : 0;
$prezzoA = (preg_match( "/^(\d+),?(\d{1,2})?$/" , $_POST['prezzoA'] )) ? $_POST['prezzoA'] : 0;
if ($prezzoA > $prezzoDA) {
    $prezzoA = $prezzoDA;
}
if ($prezzoDA > 0 && $prezzoA > 0) {
    $sql .= " AND prezzo BETWEEN {$prezzoA} AND {$prezzoDA}"; <--[b]qui ho dovuto invertire prezzoDA con prezzoA[/b]
} else if ($prezzoDA > 0 && $prezzoA <= 0) {
    $sql .= " AND prezzo >= {$prezzoDA}";
} else if ($prezzoDA <= 0 && $prezzoA > 0) {
    $sql .= " AND prezzo <= {$prezzoA}";
}

$mqu=$_POST[mquadri];
if ($mqu=="max"){
$sql.="mq >150";
}
elseif ($mqu=="min")
{
$sql.="AND mq <150";
}
$sql.=" ORDER BY id";
$query=mysql_db_query($db,$sql);
$num=mysql_num_rows($query);

$query=mysql_db_query($db,$sql);
$num=mysql_num_rows($query);
echo $sql;
?>
e gli ho invertiti anche nei campi di testo nella pagina html.

Adesso funziona..ho però un'altradomanda se posso: se io volessi far visualizzare il prezzo con il puntino separatore e quindi 150.000 invece che 100.000 come potrei fare?
grazie ancora.
words like violence, break the silence
Avatar utente
gahan
Moderatore
 
Post: 1397
Iscritto il: 23/01/08 16:09

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi Triumph Of Steel » 16/11/09 23:00

Codice: Seleziona tutto
number_format( $numero , 2 , "," , "." );
parametri:
- numero
- quanti decimali
- separatore decimali
- separatore migliaia

dovrebbe visualizzare numeri nel formato
100.000,00
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi gahan » 17/11/09 10:01

Triumph Of Steel ha scritto:
Codice: Seleziona tutto
number_format( $numero , 2 , "," , "." );
parametri:
- numero
- quanti decimali
- separatore decimali
- separatore migliaia

dovrebbe visualizzare numeri nel formato
100.000,00



Ok funziona...grazie ancora.
words like violence, break the silence
Avatar utente
gahan
Moderatore
 
Post: 1397
Iscritto il: 23/01/08 16:09

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi gahan » 17/11/09 10:12

ho un altro quesito:

dopo lo script che mi visualizza gli immobili ho scritto queste righe:
Codice: Seleziona tutto
<div style="position:relative;top:10px;padding:0;">
<?php
$num_page = (!isset($_GET[pag]) || empty($_GET[pag]) ? 1 : $_GET[pag]);
$perpage = 8;

$num_articoli_totali = 80;
$next = $prev = false;
$prev = ( $num_page > 1 );
$next = ( $num_articoli_totali > ( $num_page * $perpage ) );

$indietro=($num_page-1);
$avanti=($num_page+1);

if ($prev) echo "&nbsp<a style=\"color:#BC040E;text-decoration:none\" href=articoli.php?pag=$indietro>Prev</a>&nbsp&nbsp";

if (next) echo "&nbsp<a style=\"color:#BC040E;text-decoration:none\" href=articoli.php?pag=$avanti>Next</a>";

?>
</div>
per far si che dopo 8 immobili mi visualizzi il pulsante "next" nella prima pagina, e "next" e "prev" nelle pagine successive.
La cosa che non capisco è perchè il pulsante "next" compaia anche se ci sono meno di 8 immobili nonostante abbia impostato il limite di 8.

Grazie ancora.
words like violence, break the silence
Avatar utente
gahan
Moderatore
 
Post: 1397
Iscritto il: 23/01/08 16:09

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi archimede » 17/11/09 12:36

Per favore usa il tag code nei tuoi messaggi, grazie.

Ti sei dimenticato un $.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi gahan » 17/11/09 13:10

Non funge lo stesso
words like violence, break the silence
Avatar utente
gahan
Moderatore
 
Post: 1397
Iscritto il: 23/01/08 16:09

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi archimede » 17/11/09 13:44

E $num_articoli_totali = 80; cosa significherebbe?

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi gahan » 17/11/09 14:30

è il numero totale degli articoli che si possono creare (il limite)
words like violence, break the silence
Avatar utente
gahan
Moderatore
 
Post: 1397
Iscritto il: 23/01/08 16:09

Re: [PHP+MySql] Ricerca dati attraverso un campo di ricerca

Postdi Triumph Of Steel » 19/11/09 20:19

scusa... magari vedo male.. ma

Codice: Seleziona tutto
$next = ( $num_articoli_totali > ( $num_page * $perpage ) );

tradotto dovrebbe essere
Codice: Seleziona tutto
$next = ( 80 > ( 1 * 8 ) );

che è sempre vero

quindi
Codice: Seleziona tutto
if (next) echo "&nbsp<a style=\"color:#BC040E;text-decoration:none\" href=articoli.php?pag=$avanti>Next</a>";

verrà sempre eseguita .. fino ad arrivare a pagina 11

forse dovresti fare

Codice: Seleziona tutto
$next = ( NUMERO_IMMOBILI_TROVATI > $perpage );


così ad occhio.. non vedendo altro codice...
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Precedente

Torna a Programmazione


Topic correlati a "[PHP+MySql] Ricerca dati attraverso un campo di ricerca":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti