Mysql problema di sintassi

giusalvo

Nuovo Utente
14 Ago 2012
25
1
3
MS
Ciao,
ho un problema nella visualizzazione di dati di due tabelle.
La prima è print_ass ( formata dai campi [id_ass, lufficio, ilmodello, e altri che al momento non servono];
la seconda è print ( fatta da [ id_print, assign, ilmodello]

Nella prima ci sono dei beni presi in carico dagli uffici, nella seconda a chi sono stati destinati (utenti finali).

Il mio codice è questo
PHP:
<?php
include "../conn.php";
include "../aut_utente_inc.php";
include "../tuttefunzioni.php";
ini_set('include_path', '../');
if(!isset($_SESSION)){
session_start();
}
$qmod = $_GET['id_mod'];
$sql_mod = "SELECT * FROM print_modello WHERE id_mod=$qmod";
$result_mod = mysql_query($sql_mod);
while ($row =mysql_fetch_assoc($result_mod))
  {
    $ilmod = $row['modello'];
}
$countp = mysql_query("SELECT COUNT(*) FROM print_ass WHERE ilmodello=$qmod");
$res_countp = mysql_fetch_row($countp);
$tot_records = $res_countp[0];
$per_page = 10;
$tot_pages = ceil($tot_records / $per_page);
if(isset($_GET['page']))
$current_page =$_GET['page'];
else
$current_page= 1;
$primo = ($current_page - 1) * $per_page;
include "../_headp.php";
include "../_body.php";
?>
<div id="nav1">
<div id="nav">
<ul>
<li><a href="http://forum.mrwebmaster.it/logged_user.php">Home</a></li>
<li><a href="gestioneh.php">Gestione Tabelle</a></li>
<li id="activelink"><a href="stampanti_scanner.php">Stampanti - Scanner</a></li>
<li><a href="fotocopiatori.php">Fotocopiatori</a></li>
<li><a href="ricerche.php">Ricerche</a></li>
<li><a href="http://forum.mrwebmaster.it/user_logout.php">Esci</a></li>
</ul>
</div>
<div id="sottomenu">
<ul>
<li id="activelink"><a href="modp.php">Modelli</a></li>
<?php if($_SESSION['livello'] < 3) {?>
<li><a href="assp.php">Assegnazioni</a></li><?php }?>
</ul>
</div>
</div>
<p>
<table border="0" width="850" cellspacing="1" cellpadding="3" align="center" bgcolor="#353535">
<tr>
    <td bgcolor="#2D4E6C" colspan="6" align="center"><font color="#FFFFFF"><b>Uffici assegnatari di: <?php echo $ilmod ; ?></b></fonb>
    </td>
</tr>
<tr>
    <td width="325" bgcolor="#2D4E6C" align="center"><font color="#FFFFFF">Stato Garanzia</td>
    <td width="125" bgcolor="#2D4E6C" align="center"><font color="#FFFFFF"><b>Data arrivo</b></font></td>
    <td width="250" bgcolor="#2D4E6C" align="center"><font color="#FFFFFF"><b>Ufficio</b></font></td>
    <td width="75" bgcolor="#2D4E6C" align="center"><font color="#FFFFFF"><b>Quanti</b></font></td>
    <td width="75" bgcolor="#2D4E6C" align="center"><font color="#FFFFFF"><b>Assegnati</b></font></td>
    <td width="100" bgcolor="#2D4E6C"></td>
</tr>
<?php
$sqlpr = "SELECT *,count(*)as tanti FROM print_ass, print WHERE print_ass.ilmodello=$qmod AND assign=id_ass GROUP BY print_ass.lufficio";

$resultpr = mysql_query($sqlpr);
while ($row = mysql_fetch_array($resultpr)){
$arrivo = $row ['dataarrivo'];
$quanti = $row['quanti'];
$ufficio = $row['lufficio'];
$garanzia = $row['garanzia'];
$tanti = $row['tanti'];
prendi_ufficio();

$adesso = date('Y/m/d', strtotime("now"));
$arr = strtotime($arrivo);
//echo $arrivo;
$scadenza = date('Y/m/d', strtotime("$arrivo +$garanzia year"));
//echo $scadenza;

if (empty($arrivo)){
$gar ="<font color=#D76120>Garanzia non calcolabile!</font>";
}else if ($scadenza <= $adesso){
$gar = "<font color=#FF0000>garanzia scaduta</font>";
}else {
$gar = "<font color=#009900>in garanzia</font>";
}
?>
<td bgcolor="#FFFFFF" width="100"><?php  echo strtoupper($gar)?></td>
<td bgcolor="#FFFFFF" width="100"><?php
if (empty($arrivo)){
echo "";
}else{
echo date('d-m-Y',strtotime("$arrivo"));}?></td>
<td bgcolor="#FFFFFF" width="350"><?php echo($uff)?></td>
  <td bgcolor="#FFFFFF" width="50"><?php echo strtoupper($quanti)?>
  </td>
  <td bgcolor="#FFFFFF" width="50"><a href="dovesonop.php?assign=<?php echo $row['assign'];?>&ilmodello=<?php echo $row['ilmodello'];?>">
  <?php echo ($tanti)?></td>
   <td bgcolor="#FFFFFF" width="100" align="right">
<?php if($_SESSION['livello']< 3){?>
  <a href="moddettmodp.php?action=edit&id=<?php
  echo $row['id_ass']; ?>"><img src="http://forum.mrwebmaster.it/img/edit.gif" border="0"/></a> &nbsp; &nbsp;<?php }?>
<?php if($_SESSION['livello']< 2) {?>
   <a href="deldettmodp.php?type=print_modello&id=<?php
  echo $row['id_mod']?>"><img src="http://forum.mrwebmaster.it/img/elimina.gif" border="0"/></a><?php }?>
  </td>
</tr>
<?php
}
include ("paginazione.php");
?>
<tr>
    <td bgcolor="FFFFFF" colspan="8" valign="bottom" align="center"><?php echo $paginazione; ?></td>
</tr>
</table>
<?php
include "../_footer.php";
?>

Se lascio così: se nella seconda tabella c'è almeno un record che soddisfa la SELECT allora va tutto bene, altrimenti non vedo neanche i dati della prima tabella.
Ho anche provato a fare:
PHP:
if (($tanti) = 0) {
echo " ";
}else{
echo $tanti}
ma no c'è verso e non so come poter fare per continuare.
Grazie in anticipo a chi può aiutarmi.
Ciao
 
Ultima modifica:
Ho provato a cambiare questo:
...
$sqlpr = "SELECT *,count(*)as tanti FROM print_ass, print WHERE print_ass.ilmodello=$qmod AND assign=id_ass GROUP BY print_ass.lufficio";
...
con questo:
PHP:
$sqlpr = "SELECT *, count(*) as tanti FROM print_ass LEFT JOIN print ON print.assign=print_ass.id_ass WHERE print_ass.ilmodello=$qmod GROUP BY print_ass.lufficio";
Leggendo in giro facendo una left join dovrebbe funzionare invece no.
Il problema è che, se non c'è un riferimento nella seconda tabella, non mi fa vedere neanche i dati della stampante della prima.
Grazie.
 

Discussioni simili