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??
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
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.
 

the_boss

Utente Attivo
21 Feb 2010
53
0
0
errore:
Parse error: syntax error, unexpected '{' in /membri/avmavm/mysql/trova.php on line 10
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
non è che hai dimenticato di copiare la graffa dopo il try?:
PHP:
try
{
la riga è quella
 

the_boss

Utente Attivo
21 Feb 2010
53
0
0
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 ^^
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
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?).