PDA

View Full Version : Query a un DB MySQL


marc78
25-03-2013, 14:28
Salve a tutti
Sara un po complicato per me spiegarmvi il mio problema, ma ci provo.

Sto creando un sito in Wordpress, ho dedicato una pagina alla ricerca nel DB, di alcune aziende e il loro dettaglio.

Il DB è cosi costruito:

CLIENTI
- ID
- ragione-sociale
- piva
ecc ecc
CERTIFICATI
- ID
- id_cliente
- standard
ecc ecc


la pagina che ho dedicato alla ricerca, ha anche un richiamo ad AJAX.
Io ho scritto, attraverso tante guide trovate in internet questo codice...

Pagina di wordpress

<div id="ricercaclienti">
<form id="add-elemento" action="#">
<div class="grid_6 "><label><strong>Ragione Sociale </strong>*</label></div>
<div class="grid_6 "><label><strong>Partita IVA *</strong></label></div>
<div class="grid_6 "><input id="sociale" type="text" name="sociale" class="grid_6"/></div>
<div class="grid_6 "><input id="iva" type="text" name="iva" class="grid_6" /></div>
<div class="grid_6 ">
<input id="bottone" type="button" value="Invia" class="inviacl" />
<input class="inviacl" type="reset" value="Reset" />
</div>
<div class="clear"></div>
</form>
<!-- Script Ajax -->
<script>
$("#bottone").click(function() {
var dati = $("#add-elemento").serialize();

$.ajax({
type:"POST",
url: "http://localhost/wordpress/wp-content/themes/DASItalia/prova_ajax.php",
data: dati,
dataType:"html",
success: function(msg)
{
$("#risultato").html(msg);
},
error: function()
{
allert("Chiamata fallita, si prega di riprovare...");
}
});
});
</script>
<!-- Script Ajax -->
</div>
<p class="leggenda">* Sei obbligato a inserire tutte e due i campi (attenti alle lettere maiuscole)</p>
</div>

<div id="risultato"></div>

</div>


Pagina dedicata al motore di ricerca

<?php
/* Variabili per il recupero info */

$DBhost = "localhost";
$DBuser = "root";
$DBpass = "";
$DBName = "clientidas";

$sociale = $_POST['sociale'];
$iva = $_POST['iva'];




/* Connessione al DataBase*/
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");

$sqlquery = "SELECT *
FROM clienti
INNER JOIN certificati ON certificati.id_cliente = clienti.id
WHERE ragione_sociale LIKE '$sociale";

$result = mysql_query($sqlquery);
$number = mysql_numrows($result);



$i = 0;



if ($number < 1) {

print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
}

else {

while ($number > $i) {


$TBcertificazione = mysql_result($result,$i,"numero_certificato");
$TBsociale = mysql_result($result,$i,"ragione_sociale");
$TBindirizzo = mysql_result($result,$i,"indirizzo");
$TBstandard = mysql_result($result,$i,"standard");
$TBsettore = mysql_result($result,$i,"settore");
$TBemissione = mysql_result($result,$i,"data_emissione");
$TBscadenza = mysql_result($result,$i,"data_scadenza");
$TBstatus = mysql_result($result,$i,"status");
$TBente = mysql_result($result,$i,"ente_accreditamento");
$TBscopo = mysql_result($result,$i,"campo_di_applicazione");

echo "
<table border=",'1'," style=",'margin-bottom:20px',">
<tr>
<td>Codice</td>
<td>Ragione Sociale</td>
<td>Città</td>
<td>Standard</td>
<td>Settore</td>
</tr>
<tr>
<td>$TBcertificazione</td>
<td>$TBsociale</td>
<td>$TBindirizzo</td>
<td>$TBstandard</td>
<td>$TBsettore </td>
</tr>
</table>
";
echo "
<table border=",'1'," style=",'margin-bottom:20px',">
<tr>
<td>Data emissione</td>
<td>Data Scadenza</td>
<td>Status</td>
<td>Ente</td>
<td>Applicazione</td>
</tr>
<tr>
<td>$TBemissione</td>
<td>$TBscadenza</td>
<td>$TBstatus</td>
<td>$TBente</td>
<td>$TBscopo</td>
</tr>
</table> ";
/*
print "<p><b>Nome:</b> $thename<br><b>E-Mail:</b>
$theemail</p><p><b>Nome:</b> $thesociale"; */
$i++;
}
}


?>


Lanci il tutto e......

Warning: mysql_numrows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\wordpress\wp-content\themes\DASItalia\prova_ajax.php on line 37

La line 37 è
$number = mysql_numrows($result);

Perchè ? Dove sbaglio?
Grazie mille.

VICIUS
26-03-2013, 06:24
Se mysql_query non riesce a completare l'esecuzione ritorna false. Devi controllare ogni volta che la chiami.
if (!$result) {
die('Errore: ' . mysql_error());
}

Andrea_RBRW
27-03-2013, 11:54
manca un ' nella query...


....
$sqlquery = "SELECT *
FROM clienti
INNER JOIN certificati ON certificati.id_cliente = clienti.id
WHERE ragione_sociale LIKE '$sociale'";
...

'$sociale' e non '$sociale come avevi scritto te...