ordinare in una tabella risultati query

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve a tutti e buone feste inanzitutto,

ho un piccolo dubbio

io estraggo 30 elementi dal database e li incolonna in una tabella con il seguente codice
PHP:
$query = "SELECT * FROM $table WHERE Societa='$thename'  ORDER BY Nome";
    $risultato = mysql_query($query) or die("Query fallita: " . mysql_error() );

    /* Stampa dei risultati in HTML */
    echo "<table border=\"1\">\n";


	<td width=\"200\"bgcolor=\"DARKBLUE\" ><b><font face=\"Tahoma\" size=\"2\" color=\"WHITE\">&nbsp;&nbsp;Nome</td>";

$i=0;
    while ($linea = mysql_fetch_array($risultato, MYSQL_ASSOC)) {
	$i++;

                 echo "\t\t
							   <td height=\"22\" width=\"250\" $evidenzia><font face=\"Tahoma\" size=\"2\" color=\"$color\">&nbsp;&nbsp;$linea</td>\n";
		     
        echo "\t</tr>\n";

    }

fin qui tutto ok

ma se volessi dividere tutti i 30 non in una sola colonna ma su una tabella divisa per 3?

del tipo

123
456
789
101112

e cosi via?
 
Un piccolo esempio da adattare:
PHP:
$colonne = 3;
$sql = "SELECT dato FROM tb";

$res = mysql_query($sql);
if(($righe = mysql_num_rows($res))>0)
  {
  echo "<table>\n";

  for($i = 0; $i < $righe; $i++) {
  $r = mysql_fetch_array($res);
  if($i % $colonne == 0) {
  echo "<tr>\n";
  }

  echo "<td>" . $r['dato'] . "</td>\n";
  if(($i % $colonne) == ($colonne - 1) || ($i + 1) == $righe) {
  echo "</tr>\n";
  }
  
 }
  echo "</table>\n";
}
 
Se noti bene questa condizione:
PHP:
if(($righe = mysql_num_rows($res))>0)
Noterai che la variabile $righe corrisponde al numero totale delle righe estratte dalla tabella. Avresti anche potuto scriverla così:
PHP:
$righe = mysql_num_rows($res);
if($righe > 0)
Ma per comodità si può abbreviare, eseguendo l'assegnazione della variabile direttamente nell'if, in modo da poterla poi usare successivamente.
 
Se noti bene questa condizione:
PHP:
if(($righe = mysql_num_rows($res))>0)
Noterai che la variabile $righe corrisponde al numero totale delle righe estratte dalla tabella. Avresti anche potuto scriverla così:
PHP:
$righe = mysql_num_rows($res);
if($righe > 0)
Ma per comodità si può abbreviare, eseguendo l'assegnazione della variabile direttamente nell'if, in modo da poterla poi usare successivamente.

mamma mia che ignorante che so :hammer: mica la sapevvo sta cosa. dopo provo e vediamo che ne esce

grazie del suggerimento
 
allora il codice in se funziona però e c'è sempre un però

io nellos cript che voglio modificare come al primo post per ogni riga in base all'id inserivo un include nella fattispecie
PHP:
include(./1/file1.php);
include(./2/file2.php);
etc.

quindi quando dovevo aggiungere un id mi toccava riaprire il file manualmente ed aggiungere riga/colonna e il nuovo include
invece con questo script volevo fare tutto in automatico

quindi ho riadatatto il tuo codice
PHP:
$colonne = 3;
$sql = "SELECT id FROM tb";

$res = mysql_query($sql);
if(($righe = mysql_num_rows($res))>0)
  {
  echo "<table>\n";

  for($i = 0; $i < $righe; $i++) {
  $r = mysql_fetch_array($res);
  if($i % $colonne == 0) {
  echo "<tr>\n";
  }

  echo "<td>" . $r['id'] . "</td>\n";
  if(($i % $colonne) == ($colonne - 1) || ($i + 1) == $righe) {
  echo "</tr>\n";
  }
  
 }
  echo "</table>\n";
}

fin qui ci siamo ordina gli id per 3 e se nella tabella aggiungo un id lo aggiunge in automatico alla pagina di questo script
ma non riesco ad include l'include
PHP:
$colonne = 3;
$sql = "SELECT id FROM tb";

$res = mysql_query($sql);
if(($righe = mysql_num_rows($res))>0)
  {
  echo "<table>\n";

  for($i = 0; $i < $righe; $i++) {
  $r = mysql_fetch_array($res);
  if($i % $colonne == 0) {
  echo "<tr>\n";
  }
$x=$r['id'];
  echo "<td>"; 
include(./$x/file$x');
echo "</td>\n";
  if(($i % $colonne) == ($colonne - 1) || ($i + 1) == $righe) {
  echo "</tr>\n";
  }
  
 }
  echo "</table>\n";
}

così mi va in tilt lo script e mi blocca il browser

gli id sono al moemnto 26 e nel file include altro non è che un button a cui è associato l'id e che rimanda, se cliccato ad altre funzioni

forse sono troppo complicato io :crying:
 
Ho sbagliato io, avendo capito male quello che volevi fare. Comunque è piuttosto curioso che il browser vada in tilt. Vuol dire che PHP entra in un ciclo infinito, ed io non ne vedo in quel file. Intanto prova a migliorarne la leggibilità modificandolo così:
PHP:
<?php
$colonne = 3;

$res = mysql_query('SELECT id FROM tb') or die(mysql_error());
$righe = mysql_num_rows($res);

if($righe > 0)
{
	echo "<table>\n";

	for($i = 0; $i < $righe; $i++)
	{
		$r = mysql_fetch_array($res);
		
		if($i % $colonne == 0)
			echo "<tr>\n";
		
		echo '<td>';
		require "{$r['id']}/{$r['id']}.php";
		echo "</td>\n";
		
		if(($i % $colonne) == ($colonne - 1) || ($i + 1) == $righe)
			echo "</tr>\n";
	}

	echo "</table>\n";
}
?>
E poi mi potresti dire cosa c'è, ad esempio, nel file 1/1.php?
 
nel file 1.php c'è semplicemente un button collegato ad un altro file

però spetta ale magari sprechi del tempo inutile perchè alla fine questo è un ripiego perche non riusciov a fare una cosa guia chiesta al tempo qui ma stamane ragionandoci su forse riesco

http://forum.mrwebmaster.it/php/23906-ci-risiamo___array-intero-codice.html

or ami è venuta un illuminazione

alla fine credo si possa parlare anche in questo topo

cerco di mettertela semplice

inizio.php
fa decidere tramite 3 button all'utente di quale sessione si tratta, Inizio_metà_Fine
poi ci sono tre cartelle inziio meta prossima
in base alla scelta apre la cartella, in ogni delle 3 cartelle c'è il file di cui stiamo rgionado sopra oltre a tante cartelle quanti sono i manager
cartella inizio/start.php
in questo file c'è il seguente codice

HTML:
 <tr>
<td colspan="3"  bgcolor="CRIMSON"><center><b><font face="Tahoma" size="2" color="WHITE">
Seleziona la Società</font></b></center>
</td>
</tr>
<!--Società 1-->
<tr>
<td width="100"><center>
<?php
$gb=$_POST['gb'];
$gbp=$gb+1;
echo "<form method=\"post\" action=\"./1/principale.php\">\n";
echo "<input type=\"hidden\" name=\"gb\" value=\"$gb\">\n";
include ("./1/start1.php");
?>
</center>
</td>
<!--Società 2-->
<td width="100"><center>
<?php
$gb=$_POST['gb'];
$gbp=$gb+1;
echo "<form method=\"post\" action=\"./2/principale.php\">\n";
echo "<input type=\"hidden\" name=\"gb\" value=\"$gb\">\n";
include ('./2/start2.php');
?>
</center>
</td>

quelli sono i file include di cui ti parlavo sopra e la tabella è composta da tante righe/colonne in base alle cartelle(che so i manager) presenti in inizio

Nel file che voglio includere ho inserito questo codice

PHP:
<html>
<meta content="text/html; charset=ISO-8859-1 " http-equiv="content-type">
<body bgcolor="#F0F8FF"  text="#000000">
<head><link rel=stylesheet  href="http://fpmleague.altervista.org/Script/amon.css" type="text/css"></head>
<center>
<form name="form1" method="post" action="./1/principale.php" >
<?php
include ('/membri/fpmleague/connect.php');
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");
    $sqlquery = "SELECT NomeManager FROM Manager WHERE ID_Manager='1'";
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
$i = 0;
while ($number > $i) {
$managername1 = mysql_result($result,$i,"NomeManager");
$i++;
}

echo "<form method=\"post\" action=\"manager.php\">\n";
echo "<input type=\"hidden\" name=\"managername1\" value=\"$managername1\">\n";
echo "<form method=\"post\" action=\"manager2.php\">\n";
echo "<input type=\"hidden\" name=\"managername1\" value=\"$managername1\">\n";
echo "<form method=\"post\" action=\"entrate.php\">\n";
echo "<input type=\"hidden\" name=\"managername1\" value=\"$managername1\">\n";
echo "<form method=\"post\" action=\"uscite.php\">\n";
echo "<input type=\"hidden\" name=\"managername1\" value=\"$managername1\">\n";
echo "<form method=\"post\" action=\"finanze.php\">\n";
echo "<input type=\"hidden\" name=\"managername1\" value=\"$managername1\">\n";


mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");
    $sqlquery = "SELECT ID_Squadra FROM Manager WHERE NomeManager='$managername1'";
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
$i = 0;
while ($number > $i) {
$teamname = mysql_result($result,$i,"ID_Squadra");
$i++;
}
?>


  <button  name="invia"  type="submit" style="width:200px;" >
   
   <img src="../loghi/<? echo $teamname;?>.gif" width="25" height="25" title=""  vspace="5"
alt="invia adesso" align="absmiddle">    
   <b><font class="rif" face="Tahoma" size="2" color="#282828"><?  echo $teamname;?></b>
 </button> 
 


</form>


</center>
</body>
</meta>
</html>
Ora io volevo sistemare questo file perlomeno epr non intervenire manualmente all'aggiunta di un nuovo manager

però nel link che ti ho postato su invece volevo evitare di avere tutte ste cartelle(che contengono lo stesso dientico codice (ma con la sostituzione manuale dell'id del manager) con una sola.

Io penso si possa fare con una select che mi tiri fuori tutti gli id manager e poi inserire l'array in

PHP:
 $sqlquery = "SELECT NomeManager FROM Manager WHERE ID_Manager='[B]$array[/B]'";

Ora in pratica ho 3 sessioni ogni sessione contiene 9 file di base quindi 27 file
se ho 30 utenti e devo modificare il codice mi tocca muovermi su 810 file mentre io vorrei ridurre i 9 file per sessione e basta quindi 27 file

se secondo te sta cosa si può fare è inutile perdere la vita sull'oggetto di questo topic, se la cosa invece risulta difficile perlomeno mi serve un aiuto su quanto chiesto nel topic

Cosa ne dici ale?

p.s.

immagino troverai diversi errori di identazione ma conta che sono un vero autodidatta, ho imparato anche sensa manuali ma solo girando nel web e con molto intuito


p.s.2 è possibile inviarti in mp un immagine della pagina in questione o il link dello script?
 
ok ci sono riuscito :mavieni::mavieni::mavieni::mavieni:

PHP:
<?php

 $colonne = 3;
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");


$sql = "SELECT * FROM Manager";
$res = mysql_query($sql);
  
if(($righe = mysql_num_rows($res))>0)
  {
  echo "  <form name=\"soc\" method=\"post\" action=\"principale.php\" >";

  echo "<table>\n";

  for($i = 0; $i < $righe; $i++) {
  $r = mysql_fetch_array($res);
  if($i % $colonne == 0) {
  echo "<tr>\n";
  }

  echo "<td>
    <button  name=\"soc\"  type=\"submit\" style=\"width:200px;\" >
      <img src=\"../loghi/". $r['ID_Squadra'].".gif\" width=\"25\" height=\"25\" title=\"\"  vspace=\"5\"
alt=\"invia adesso\" align=\"absmiddle\">    
   <b><font class=\"rif\" face=\"Tahoma\" size=\"2\" color=\"#282828\">".$r['ID_Squadra']."</b>
 </button> 
 
  
</td>\n";

  if(($i % $colonne) == ($colonne - 1) || ($i + 1) == $righe) {
  echo "</tr>\n";
  }
  
 }
  echo "</table>\n";
  echo "</form>";
}  
?>


ora mi incolonna per 3 i button quanti sono i manager


GRAZIE

GRAZIE

GRAZIE
però non riesco a inviare l'id scelto dal button alla pagina successiva :incazz2:


scrivo nel topo apposito
 

Discussioni simili