- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problema form php
-
Ciao Mirko, purtroppo ho commesso un errore nel postare il codice, perché avevo fatto un tentativo con le dritte che mi avevi dato tu la prima volta e poi l'ho lasciato... il SELECT attuale è questo:
$search = mysql_query ("
SELECT rif, descrizione FROM dbimmobili WHERE
tipologia='$tipologia'
AND zona='$zona'
AND distanza='$distanza'
AND mq='$mq'
AND camere='$camere'
AND bagni='$bagni'
AND giardino='$giardino'
AND postiauto='$postiauto'
AND prezzo='$prezzo'
") or die ("Errore di query: " . mysql_error());posso comunque modificare SELECT con il codice che mi hai dato tu?
E per andare sul sicuro: i miei campi del form sono tutti "select"... per essere "empty" basta che ci sia un campo con value="", giusto?
Grazie ancora!
-
Ciao,
per correttezza la riscrivo,
in realtà la differenza sta nel valutare anche la tipologia.[php]
//Per capire se è stata trovata la prima condizione
$firstTest = false;$sql = "SELECT rif, descrizione FROM dbimmobili WHERE";
if(isset($tipologia) && !empty($tipologia)){
sql .= ($firstTest) ? " AND tipologia='$tipologia'" : " tipologia='$tipologia'";
$firstTest = true;
}if(isset($zona) && ! empty($zona)){
sql .= ($firstTest) ? " AND zona='$zona'" : " zona='$zona'";
$firstTest = true;
}if(isset($distanza) && ! empty($distanza)){
sql .= ($firstTest) ? " AND distanza='$distanza'" : " distanza='$distanza'";
$firstTest = true;
}if(isset($mq) && ! empty($mq)){
sql .= ($firstTest) ? " AND mq='$mq'" : " mq='$mq'";
$firstTest = true;
}if(isset($camere) && ! empty($camere)){
sql .= ($firstTest) ? " AND camere='$camere'" : " camere='$camere'";
$firstTest = true;
}if(isset($bagni) && ! empty($bagni)){
sql .= ($firstTest) ? " AND bagni='$bagni'" : " bagni='$bagni'";
$firstTest = true;
}if(isset($giardino) && ! empty($giardino)){
sql .= ($firstTest) ? " AND giardino='$giardino'" : " giardino='$giardino'";
$firstTest = true;
}if(isset($postiauto) && ! empty($postiauto)){
sql .= ($firstTest) ? " AND postiauto='$postiauto'" : " postiauto='$postiauto'";
$firstTest = true;
}if(isset($prezzo) && ! empty($prezzo))
sql .= ($firstTest) ? " AND prezzo='$prezzo'" : " prezzo='$prezzo'";[/php]Si, empty() considera anche "" .
Provala.
-
Ciao Mirko,
ho sostituito il mio SELECT con il tuo senza cambiare una virgola, però adesso mi da un problema il ciclo while successivo:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in **nomesito **on line 72
ti posto il codice da SELECT fino alla fine (in grassetto ti metto la linea 72 dell'errore):
$firstTest = false;
$sql = "SELECT rif, descrizione FROM dbimmobili WHERE";
if(isset($tipologia) && !empty($tipologia)){
$sql .= ($firstTest) ? " AND tipologia='$tipologia'" : " tipologia='$tipologia'";
$firstTest = true;
}
if(isset($zona) && ! empty($zona)){
$sql .= ($firstTest) ? " AND zona='$zona'" : " zona='$zona'";
$firstTest = true;
}
if(isset($distanza) && ! empty($distanza)){
$sql .= ($firstTest) ? " AND distanza='$distanza'" : " distanza='$distanza'";
$firstTest = true;
}
if(isset($mq) && ! empty($mq)){
$sql .= ($firstTest) ? " AND mq='$mq'" : " mq='$mq'";
$firstTest = true;
}
if(isset($camere) && ! empty($camere)){
$sql .= ($firstTest) ? " AND camere='$camere'" : " camere='$camere'";
$firstTest = true;
}
if(isset($bagni) && ! empty($bagni)){
$sql .= ($firstTest) ? " AND bagni='$bagni'" : " bagni='$bagni'";
$firstTest = true;
}if(isset($giardino) && ! empty($giardino)){
$sql .= ($firstTest) ? " AND giardino='$giardino'" : " giardino='$giardino'";
$firstTest = true;
}if(isset($postiauto) && ! empty($postiauto)){
$sql .= ($firstTest) ? " AND postiauto='$postiauto'" : " postiauto='$postiauto'";
$firstTest = true;
}if(isset($prezzo) && ! empty($prezzo))
$sql .= ($firstTest) ? " AND prezzo='$prezzo'" : " prezzo='$prezzo'";
echo "
<table border>
<tr><th colspan='3'>Immobili trovati:</tr>
<tr><th>RIF<th>Descrizione<th></tr>
";
while ($riga = mysql_fetch_row($sql)){
echo "<tr><td>$riga[0]<td>$riga[1]<td>$riga[2]";}
echo "</table>";
mysql_close($link);
?>
-
Ciao,
il problema è dovuto al fatto che estrai 2 campi con la SELECT,
ma poi nel ciclo vai a prendere anche il terzo valore, che invece non estrai.Ciao
-
Ok Mirko grazie... ma temo che risulti un po' troppo complicato...
Ti disturbo un'ultima volta... potrebbe esserci la possibilità, quando vengono definite le variabili, di fare questo:
$var = $_POST['nomecampo']
if (empty($var) {
$var = XXX; }
else {
$var = $_POST['nomecampo'] }$var2... etc.
Al posto di XXX c'è una formula di php, oppure usando AND/OR, che permette di poter assegnare alla variabile tutti i valori conenuti nel campo del form 'nomecampo', di modo che se uno lo lascia vuoto vuol dire che gli vanno bene tutti i valori??
Ulima volta che ti disturbo promesso
-
Ciao Sebastian84,
se ho capito bene,
ti basta inizializzare le variabili in questo modo:[php]
$var1="";
$var2="";$var1 = (empty($_POST['nomecampo'])) ? FORMULA() : $_POST['nomecampo'];
$var2 = (empty($_POST['nomecampo'])) ? FORMULA() : $_POST['nomecampo'];
[/php]$var1 e $var2 conterranno il valore in POST se e solo se non risulteranno essere empty, altrimenti saranno valorizzate con FORMULA() .Buona giornata
-
Buongiorno Mirko,
ho fatto come mi hai detto, copiato ed incollato, cambiando solo il nome della variabile e 'nome campo', ma se lascio tutto su "seleziona", quindi con il valore "", mi da questo errore:
Fatal error: Call to undefined function FORMULA() in /home/.../search.php on line 11
sto per commettere un omicidio... del pc!!
-
Ciao,
bhè: non sempre il copia ed incolla fa al caso proprio.FORMULA() è in generale la formula che devi inserire te.
Dovresti sostituire FORMULA() con la formula (o XXX) che avevi introdotto te 2 post indietro.
FORMULA() non esiste: non è una funzione PHP.
-
Ahhhhhh ok ok
pensavo che fosse una formula predefinita di php
Però il problema è che al posto di XXX non ho idea di cosa metterci... credo che la soluzione finale sia questa: se ad esempio in un campo di un form "select" ho questi valori:
- qualsiasi -
a
b
c
Selezionando "- qualsiasi -" ecco che la variabile accetta tutti i valori a, b e c contenuti all'interno del form, di conseguenza il campo non è più obbligatorio...
Io ho bisogno che tutti i miei campi non siano obbligatori, ma non so come inserire questa istruzione...
- qualsiasi -
-
Dovrebbe essere quello che già abbiamo fatto.
L'unica differenza è che se non scegli niente nella select anzicchè "qualsiasi"
deve arrivare in POST ''.Questo lo puoi fare così:
[php]
<select>
<option value="">Qualsiasi</option>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
[/php]Nella soluzione finale che ti ho postato,
la query viene completata solo con i campi che sono stati valorizzati nel FORM, quindi in questo caso, non arrivando niente di diverso da "" la query estrarrà qualunque campo.La soluzione PHP è già pronta; devi solo adeguare il tuo HTML al codice PHP.
Ciao