Ricevere i dati tramite MySQL: non funzionaaaa

the_boss

Utente Attivo
21 Feb 2010
53
0
0
Io in index ho messo un semplice form:
HTML:
<form action="trova.php">
Marca: <input type="text" name="marca"><br>
Modello: <input type="text" name="modello"><br>
Colore: <input type="text" name="colore"><br>
<input type="submit" value="Invia!">
</form>

E in trova.php ho scritto:

PHP:
<?php
$marca=$_POST['marca'];
$modello=$_POST['modello'];
$colore=$_POST['colore'];
$host = "localhost";
$user = "avmavm";
$pass = "narutovskiba";
$connessione = mysql_connect($host,$user,$pass);

$prova=mysql_db_query('my_avmavm',"SELECT * FROM `Veicoli` WHERE `Marca`=`".$marca."` and `Modello`=`".$modello."` and `colore`=`".$colore."` ",$connessione);
$scrmarca=mysql_result($prova,0,"Marca");
$scrmodello=mysql_result($prova,0,"Modello");
$scrcolore=mysql_result($prova,0,"Colore");
$scrkilometri=mysql_result($prova,0,"Kilometri");
$scrcosto=mysql_result($prova,0,"Costo");
echo "<table border=\"1\"><tr><td>Marca</td><td>Modello</td><td>Colore</td><td><Kilometri</td><td>Costo</td></tr><tr><td>".$scrmarca."</td><td>".$scrmodello."</td><td>".$scrcolore."</td><td>".$scrkilometri."</td><td>".$scrcostr."</td></tr></table>";
?>


non vedo alcun errore nel codice eppure la tabella mi appare con scritto "marca modello ecc..." ma non mi esce fiat punto ecc...
sapete dirmi dov'è l'errore??
 
Scusa, ma perché usi dei campi di testo per la selezione? Dovresti usare una lista drop-down, magari qualcosa che si aggiorni automaticamente tramite AJAX. Così non rischi di inserire una marca, un modello o un colore che non esiste...
 
Non so, forse è perché usi mysql_result o mysql_db_query. In ogni caso il tuo è un gran bell'esempio di spaghetti code. Usi una funzione deprecata di una libreria ancora più deprecata. Prova a riscrivere lo script con PDO, così:
PHP:
<?php
// configurazione database
$dbhost = 'localhost';
$dbuser = 'avmavm';
$dbpass = 'narutovskiba';
$dbname = 'my_avmavm';

// blocco per la gestione delle eccezioni
try
{
	// tento la connessione
	$db = new PDO("mysql:host={$dbhost};dbname={$dbname}", $dbuser, $dbpass);
}
// catturo un'eventuale PDOException
catch(PDOException $e)
{
	// visualizzo l'errore
	echo '<p>Impossibile connettersi al database.</p>';
	
	// interrompo l'esecuzione
	exit();
}

// recupero i dati del form
$marca = isset($_POST['marca']) ? trim($_POST['marca']) : '';
$modello = isset($_POST['modello']) ? trim($_POST['modello']) : '';
$colore = isset($_POST['colore']) ? trim($_POST['colore']) : '';

// tento di recuperare i dati
$sth = $db->prepare("SELECT * FROM veicoli WHERE marca = ? AND modello = ? AND colore = ?");
$sth->execute(array($marca, $modello, $colore));

// visualizzo errore se non ci sono veicoli
if($sth->rowCount() == 0)
	die('Nessun veicolo corrisponde ai criteri selezionati.');

// visualizzo l'header della tabella
echo <<<EOF
<table border="1">
	<tr>
		<th>Marca</th>
		<th>Modello</th>
		<th>Colore</th>
		<th>Costo</th>
		<th>Chilometri</th>
	</tr>
EOF;

// recupero tutte le auto
$vehicles = $sth->fetchAll();

// ciclo tutte le auto
foreach($vehicles as $v)
{
	// visualizzo i dati sulla macchina
	echo <<<EOF
	<tr>
		<td>{$v['marca']}</td>
		<td>{$v['modello']}</td>
		<td>{$v['colore']}</td>
		<td>{$v['costo']}</td>
		<td>{$v['kilometri']}</td>
	</tr>
EOF;
}

// chiudo la tabella
echo <<<EOF
</table>
EOF;
?>
Ti consiglio di imparare a scrivere software più puliti.
 
errore:
Parse error: syntax error, unexpected '{' in /membri/avmavm/mysql/trova.php on line 10
 
non è che hai dimenticato di copiare la graffa dopo il try?:
PHP:
try
{
la riga è quella
 
ha funzionato il codice iniziale, quello mio, l'errore era nella query, perchè i database, le tabelle, e le colonne, non vanno messi fra gli apici singoli normali, ma degli apici speciali,
che sono questi:
`` diversamente da quelli normali che sono questi ' '

grazie comunque ^^
 
Veramente il problema non è quello, perché io nei miei script ho sempre usato gli apici singoli e ha sempre funzionato a meraviglia. Ti ripeto che di sicuro è un problema dell'interprete PHP sul tuo host. Probabilmente è una versione vecchia (ed essendo su Altervista ti ridomando: hai abilitato PHP5?).
 

Discussioni simili