Recupero dati Database tramite form richiesta

  • Creatore Discussione Creatore Discussione mila11
  • Data di inizio Data di inizio

mila11

Nuovo Utente
15 Gen 2011
8
0
0
Buongiorno a tutti, vi serei moto grata se aiutaste una neofita di php come me a uscire dal guaio in cui mi sono cacciata. :incazz2:
Scopo: realizzare una pagina web dove gli utenti compilano un form dal quale parte una ricerca in un db sql di barche che soddisfano i criteri selezionati.
Ora, ho scritto il form e anche il file php a cui il form si riferisce, ma non si carica la pagina con i risultati della ricerca, ovvero quando l'utente clicca su Search, on accade nulla.
Vi posto quello che ho fatto:

DATABASE: Sql403662_1

TABELLA: CHARTER

CAMPI: ID, MODEL, TYPE, LENGHTR, LENGHT, BEDSR, BEDS, LOCATION, BROCHURE

TYPE: Motor Yacht, Sailing Yacht

LENGHTR: >40 mt, 30-40 mt, 20-29 mt, <20 mt

BEDSR: >12 guests, 10-12 guests, 8-9 guests, 6-7 guests, <6 guests

LOCATION: Italy North East Coast, Slovenia, Croatia, Montenegro, Greece



Codice php form:
PHP:
<tbody>
<tr>
<td style="vertical-align: top; color: black;"><?php echo date ('l, F dS Y.');
?><br>
<br>
BOOKING: <br>
<br>
<form action="ric.php" method="post"> </form>
<select name="TypeForm">
<option selected="selected">CHOOSE TYPE: </option>
<option>Sailing Yacht </option>
<option>Motor Yacht </option>
</select>
<br>
<select name="LenghtForm">
<option selected="selected">CHOOSE LENGHT: </option>
<option>&gt;40 mt </option>
<option>30-40 mt </option>
<option>20-30 mt </option>
<option>&lt;20 mt </option>
</select>
<br>
<select name="BedsForm">
<option selected="selected">CHOOSE BEDS: </option>
<option>&gt;12 guests </option>
<option>10-12 guests </option>
<option>8-9 guests </option>
<option>6-7 guests </option>
<option>&lt;6 guests </option>
</select>
<br>
<select name="LocationForm">
<option selected="selected">CHOOSE LOCATION: </option>
<option>Italy North East </option>
<option>Slovenia </option>
<option>Croatia </option>
<option>Montenegro </option>
<option>Greece </option>
</select>
<br>
<br>
<input value="SEARCH" type="submit"> <br>
</td>
<td style="vertical-align: top;"><span style="color: black;"><br>
</span></td>
<td style="vertical-align: top;"><span style="color: black;"><br>
</span></td>
</tr>
</tbody>


e file ric.php:

PHP:
<body>
<br>
<?php include 'db.inc.php'; ?><?php $TypeF=$_POST['TypeForm'];
$LenghtF=$_POST['LenghtForm'];
$BedsF=$_POST['BedsForm'];
$LocationF=$_POST['LocationForm'];
$result = @mysql_query('SELECT MODEL, TYPE, LENGHT, BEDS, LOCATION FROM CHARTER WHERE TYPE=$TypeF and LENGHTR=$LenghtF and BEDSR=$BedsF and LOCATION=$LocationF);
if (!$result){
exit('<p>Error performing query: ' . mysql_error() . '</p>');
}
while ($row = mysql_fetch_array($result)) {
$model = $row['MODEL'];
$type = $row['TYPE'];
$lenght = $row['LENGHT'];
$beds = $row['BEDS'];
$location = $row['LOCATION'];
echo '<p>' . $model, $type, $lenght, $beds, $location . '</p>';
}
?>
<br>
<br>
</body>
 

Ciao ti consiglio di non scivere questi dati (DATABASE: Sql403662_1)

hai detto che no accade nulla, ma non ti da un errore?
 
L'errore non è nella pagina PHP che riceve i dati ma in quella che ospita il form. Modificala così:
PHP:
<form action="ric.php" method="post">
	<tbody>
		<tr>
			<td style="vertical-align: top; color: black;"><?php echo date ('l, F dS Y.');  ?>
				<br />
				<br />
				
				BOOKING:
				<br />
				<br />
				
				<select name="TypeForm">
					<option selected="selected">CHOOSE TYPE: </option>
					<option>Sailing Yacht </option>
					<option>Motor Yacht </option>
				</select>
				
				<br />
				
				<select name="LengthForm">
					<option selected="selected">CHOOSE LENGTH: </option>
					<option>&gt;40 mt </option>
					<option>30-40 mt </option>
					<option>20-30 mt </option>
					<option>&lt;20 mt </option>
				</select>
				
				<br />
				
				<select name="BedsForm">
					<option selected="selected">CHOOSE BEDS: </option>
					<option>&gt;12 guests </option>
					<option>10-12 guests </option>
					<option>8-9 guests </option>
					<option>6-7 guests </option>
					<option>&lt;6 guests </option>
				</select>
				
				<br />
				
				<select name="LocationForm">
					<option selected="selected">CHOOSE LOCATION: </option>
					<option>Italy North East </option>
					<option>Slovenia </option>
					<option>Croatia </option>
					<option>Montenegro </option>
					<option>Greece </option>
				</select>
				
				<br />
				<br />
				
				<input value="SEARCH" type="submit">
				<br />
			</td>
			<td style="vertical-align: top;">
				<span style="color: black;">
					<br />
				</span>
			</td>
			<td style="vertical-align: top;">
				<span style="color: black;">
					<br />
				</span>
			</td>
		</tr>
	</tbody>
</form>
E modifica la pagina di ricerca così:
PHP:
<body>
	<br />
	
	<?php
	require 'db.inc.php';
	
	$TypeF = $_POST['TypeForm'];
	$LengthF = $_POST['LengthForm'];
	$BedsF = $_POST['BedsForm'];
	$LocationF = $_POST['LocationForm'];
	
	$sql = "SELECT model, type, length, beds, location FROM charter WHERE ";
	$sql .= "type = '{$TypeF}' AND length = '{$LengthF}' AND beds = '{$BedsF}' AND location = '{$LocationF}'";
	
	$result = mysql_query($sql) or die('<p>Cannot perform the query: ' . mysql_error() . '</p>');
	
	while($row = mysql_fetch_array($result))
	{
		echo "<p>{$row['model']}, {$row['type']}, {$row['length']}, {$row['beds']}, {$row['location']}</p>";
	}
	?>
	
	<br />
	<br />
</body>
Ti informo inoltre che si scrive length e non lenght. Ho modificato lo script PHP di conseguenza, quindi dovrai anche cambiare il nome del campo della tabella.

Inoltre è molto pericoloso accettare i parametri di input e inserirli direttamente nella query SQL, perché ti espone al pericolo delle SQL injection! Ti consiglio di applicare la funzione mysql_real_escape_string a tutte le variabili che contengono l'input dell'utente.
 
Grazie ragazzi...vi avevo preannunciata che sono impedita... ora prova a mettere a posto e se proprio non ci riesco vi rompo di nuovo!...GGGRRAAAZZZIIIEEE!
:)
 
...

non ci siamo, ho corretto come hai detto e ho visto dove erano gli errori, ma comunque quando clicco su search sulla pagina, non accade nulla, non da errore ne altro, semplicemente rimane visualizzata quella pagina. Che puo' essere?
Guarda puoi provare, e' la pagina prova:
http://www.intermares-megayacht.com/charter copia.php

...ora ho fatto progressi: mi da una pagina nuova ( il problema stava nel nome della tabella scritta in maiuscolo...), pero' la pagina risultato e' totalmente bianca, senza errori...
...non so piu' cosa provare a modificare...avete qualche idea...ve ne sarei infinitamente grata!
 
Ultima modifica:
Veramente io riesco ad inviare correttamente il modulo, però restituisce pagina bianca (probabilmente perché non trova nessun record che corrisponde ai criteri di ricerca). Prova a premere CTRL-F5 per aggiornare la pagina svuotando la cache.
 
Veramente io riesco ad inviare correttamente il modulo, però restituisce pagina bianca (probabilmente perché non trova nessun record che corrisponde ai criteri di ricerca). Prova a premere CTRL-F5 per aggiornare la pagina svuotando la cache.

Allora, sono arrivata anch'io al punto che mi da pagina bianca. I record nel db sono 4 e in realta se metto motor yacht, length 30-40, beds 8, croatia, dovrebbero soddisfare 2.

...scusa la domanda ignorante...non e' che dovrei formattare in qualche modo la pagina...tipo dicendo di scrivere nero su sfondo bianco o altro...?...:confused:...domanda idiota, ma non mi viene in mente altro!
 
ragazzi anche grazie al vostro aiuto ho risolto! :) GRAZIE! :love:

ora ho un altro problema ma lo posto in una nuova discussione.
 
Soluzione problema

Certo Ale, ci mancherebbe:

FILE PRINCIPALE:
PHP:
<?php echo date ('l, F dS Y.'); ?><br>
<span style="color: black;">
<select name="TypeForm">
<option selected="selected">CHOOSE TYPE: </option>
<option>Motor Yacht </option>
<option>Sailing Yacht </option>
</select>
<br>
<select name="LengthForm">
<option selected="selected">CHOOSE LENGTH: </option>
<option>&gt;40 mt </option>
<option>30-39 mt </option>
<option>20-29 mt </option>
<option>&lt;20 mt </option>
</select>
<br>
<select name="BedsForm">
<option selected="selected">CHOOSE BEDS: </option>
<option>&gt;12 guests </option>
<option>10-12 guests </option>
<option>8-9 guests </option>
<option>6-7 guests </option>
<option>&lt;6 guests </option>
</select>
<br>
<select name="LocationForm">
<option selected="selected">CHOOSE LOCATION: </option>
<option>Italy North East </option>
<option>Slovenia </option>
<option>Croatia </option>
<option>Montenegro </option>
<option>Greece </option>
</select>
<br>
<br>
<input value="SEARCH" type="submit"> <br>
<span style="color: black;"> <br>
<form action="ric.php" method="post"></form>

FILE RIC.PHP:

PHP:
<?php require 'db.inc.php';

$TypeF = $_POST['TypeForm'];
$LengthF = $_POST['LengthForm'];
$BedsF = $_POST['BedsForm'];
$LocationF = $_POST['LocationForm'];


$sql = "SELECT MODEL, PHOTO, TYPE, YEAR, LENGTH, BEDS, LOCATION, PRICES FROM CHARTER WHERE ";
$sql .= "TYPE = '{$TypeF}' AND LENGTHR = '{$LengthF}' AND BEDSR = '{$BedsF}' AND LOCATION = '{$LocationF}'";

$result = mysql_query($sql) or die('<p>Cannot perform the query: ' . mysql_error() . '</p>');

echo "<table border='1'>
<tr>
<th>MODEL</th>
<th>PHOTO</th>
<th>TYPE</th>
<th>YEAR</th>
<th>LENGTH</th>
<th>BEDS</th>
<th>LOCATION</th>
<th>PRICE</th>
<th>BROCHURE</th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['MODEL'] . "</td>";
echo "<td>" . $row['PHOTO'] . "</td>";
echo "<td>" . $row['TYPE'] . "</td>";
echo "<td>" . $row['YEAR'] . "</td>";
echo "<td>" . $row['LENGTH'] . "</td>";
echo "<td>" . $row['BEDS'] . "</td>";
echo "<td>" . $row['LOCATION'] . "</td>";
echo "<td>" . $row['PRICES'] . "</td>";
echo "<td>" . $row['BROCHURE'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
 
Ultima modifica di un moderatore:

Discussioni simili