problema con visualizzazione campo in una tabella

skate84

Utente Attivo
16 Mag 2009
83
0
0
Ho un problemino...praticamente ho una tabella da visualizzare, al suo interno ho un campo che prendo da una tabella ponte, in locale mi funziona perfettamente ma sul server i dati mi vengono spostati verso sinistra..

Per intenderci

in locale:
id - gruppo - email - cognome ....
1 - 4 - [email protected] - Pinco

sul server:
id - gruppo - email - cognome ....
1 - [email protected] - Pinco

Il campo in questione è gruppo..l'id che vorrei stampare lo prendo dalla tabella ponte.

Posto il codice:
PHP:
<?php
	
	
	$sql= "select DISTINCT(id_nl), email_nl, cognome_nl, nome_nl, domicilio_nl FROM newsletter ORDER BY id_nl ASC";
	$result = mysql_query($sql, $db);
	//$AffectedRows = mysql_affected_rows($db);
	
//creazione navigazione tra le pagine
	//controllo che la variabile pagina passata in get esista		
	$pagina = $_GET['page'];
	//quanti record per ogni pagina
	$risultati_per_pagina = 25;
	if (isset($pagina) == false || is_numeric($pagina) == false || $pagina < 1)
    {
        $pagina = 1;
    }
	$numero_colonne = mysql_num_rows($result);
	//$numero_pagine = ceil($numero_colonne / $risultato_per_pagina);
	//calcolo il numero di pagine
	$numero_pagine = $numero_colonne/$risultati_per_pagina + (($numero_colonne % $risultati_per_pagina != 0)? 1 : 0);
	$start = ($pagina - 1) * $risultati_per_pagina;
	$fine = $start + $risultati_per_pagina;
	echo "Pagina ";
	for($i = 0; $i <= $numero_pagine; $i++) {
		if($i == $pagina - 1) echo $pagina . " ";
		else echo "<a href=\"?indice=177&page=" . ($i+1) ."\">" . ($i+1) ."</a>";
	}
	for($i = 0; $i < $start; $i++) 
	$row=mysql_fetch_row($result);
	
	echo "<table border=\"1\">\n";
		for ($index=$start; $index<$fine && $index < $numero_colonne; $index++)
		{
			$row=mysql_fetch_row($result);
			if ($index==$start)
			{
				echo "<tr>\n";
			//estrazione campi nomi	
				
				echo "<td><b>Id</b></td>";
				echo "<td><b>Gruppo</b></td>";
				echo "<td><b>Email</b></td>";
				echo "<td><b>Cognome</b></td>";
				echo "<td><b>Nome</b></td>";
				echo "<td><b>Domicilio</b></td>";
				echo "</tr>\n";
			}
			echo "<tr>";
			foreach ($row as $k => $v)
			{
				echo "<td>$v&nbsp;";
				if ($k==0)
				{
					echo "<br><a href=\"?indice=302&id_nl=$v\">Cancella</a>";
					echo "<br><a href=\"?indice=301&id_nl=$v\">Modifica</a>";
				}
				echo "</td>";		
				$myfield = mysql_fetch_field($result,$k);
			//inserisco gli id del/dei gruppo/i nella tabella
				if($myfield->primary_key==true){
				$que= "select * FROM news_gruppo WHERE id_nl = ".$v;
						$res = mysql_query($que, $db);
						$conta = count($res);
						print("<td>");
						while($row2=mysql_fetch_assoc($res))
						{
								print($row2['id_gruppo']);
		
								
						}
						print("</td>");
						}
				
				
			}
			echo "</tr>\n";
		}
		echo "</table>\n";
		
		
	
	mysql_free_result($result);
	mysql_close($db);
	
	
	
?>

Qualcuno sa dirmi il motivo? c'è un altro modo per poter prendere dei dati dalla tabella ponte?


Grazieeee
 
La prima cosa che mi viene in mente è che non superi questo controllo:

PHP:
if($myfield->primary_key==true)

e che quindi il campo non sia impostato come PRIMARY KEY sul DB
 
Tanto per essere sicuri che passi il controllo, prova a cambiare così:

PHP:
var_dump($myfield->primary_key);
if($myfield->primary_key==true) {
  $que= "select * FROM news_gruppo WHERE id_nl = ".$v;
  $res = mysql_query($que, $db);
  $conta = count($res);
  print("<td>entrato");
  while($row2=mysql_fetch_assoc($res)) {
    print($row2['id_gruppo']);
  }
  print("</td>");
}
 
mi esce
int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0) int(0)

Quindi c'è un problema... come posso risolverlo? :confused:
 
e con:
PHP:
while($row2=mysql_fetch_object($res)) {
    echo $row2->id_gruppo; 
}
?
 
vai con:
PHP:
$res = mysql_query($que, $db) or die(mysql_error());
e vedi se ti stampa qualche errore
 
Ciao ho provato..ma non mi stampa nessun errore.. e questo non so se possa essere un buon segno.. magari sapendo che errore dava si poteva sapere qualcosa di più

Che gabola!!!!
 
Mi sembra che dato il risultato di var_dump($myfield->primary_key);
sempre uguale a zero, nessun campo sia impostato o comunque riconosciuto come chiave primaria nella tabella. Il problema è tutto lì.

Sei proprio sicuro che il campo sia impostato correttamente come PRIMARY_KEY???
 
ho risolto mettendo
if(is_numeric($v)){
e togliendo $myfield..quindi uscirebbe cosi

PHP:
//inserisco gli id del/dei gruppo/i nella tabella
				if(is_numeric($v)){
				$selNewsGruppo= "select * FROM news_gruppo WHERE id_nl = ".$v;
						$res = mysql_query($selNewsGruppo, $db) or die(mysql_error());
						$conta = count($res);
						print("<td>");
						$c = 0;
						while($row=mysql_fetch_assoc($res))
						{
								if($c!=0){
									print(" - ");
								}
								print($row['id_gruppo']);
								
		
							$c = $c + 1;	
						}
						print("</td>");
				}
 
Nel caso specifico funziona, ma se avessi un altro campo numerico nella tabella non sarebbe efficiente... Piuttosto credo sarebbe meglio usare il controllo che hai già usato qui:
PHP:
if ($k==0)
{
  echo "<br><a href=\"?indice=302&id_nl=$v\">Cancella</a>";
  echo "<br><a href=\"?indice=301&id_nl=$v\">Modifica</a>";
}

Quando $k == 0 $v contiene il valore di id_nl e quindi puoi fare la query dei gruppi.
PHP:
if($k==0){
  $selNewsGruppo= "select * FROM news_gruppo WHERE id_nl = ".$v;
  $res = mysql_query($selNewsGruppo, $db) or die(mysql_error());
  $conta = count($res);
  print("<td>");
  $c = 0;
  while($row=mysql_fetch_assoc($res)) {
    if($c!=0){
      print(" - ");
    }
    print($row['id_gruppo']);
                                
    $c = $c + 1;    
  }
  print("</td>");
}
[/PHP]
 

Discussioni simili