Ci risiamo___Array su intero codice

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

Monital

Utente Attivo
15 Apr 2009
778
2
18
Allora qua la faccenda è molto complessa

cerco di spiegarmi in maniera più chiara possibile, preciso che può essere facile che la cosa sia impossibile però a ragioanmento credo sia fattibile anche se non ho la minima idea di come si possa risolvere, passo alla spiegazione

Ho una tabella nel database che contiene l'id e il nome dell'utente, ed altre due tabelle una per le entrate una epr le uscite dove l'utente ciene identificato tramite l'id della tabella menzioanto rpecedentemente

Ora ho creato uno script di circa 7 pagine dove si cerca l'utente con id x e tramite le altre due tabelle entrate / uscite fa visioanre tutti i movimenti dell'utente x. e poi c'è una pagina avente tot tasti quanti sono gli utenti che permette ad ognuno di visioanre i movimenti degli altri

però il problema sarebbe questo per ogni utente ho creato la sua cartella ad esempio se ci sono 10 utenti c'è la cartella 1 la 2 la 3 fino la 10, cartella avente nome uguale all'id utente. Queste 10 cartelle contengono tutte gli stessi medesimi script cambiando solo l'id dell'utente

ora dato cha a volte potrebbe aggiungersi un utente sono costretto a creare una cartella nuova con le 7 pagine modificandogli l'id a quella nuova, perdipiù se voglio fare un aggiunta di codice mi tocca farlo per ogni cartella e finchè sono 4-5 ok niente di che ma al momento gli utenti in questione sono 25 e possono arrivare anche a 40

Prima di postare del codice volevo sapere se è possibile php parlando creare un array che estrae tutti gli id e che sviluppa il codice epr ogni id il tutto avente una cartella sola e che però contemporaneamente faccia visionare a tutti i movimenti degli altri

così nel caso dovessi itnervenire sul codice mi basterebbe entrare solo in quella cartella

In parole povere servirebbe un array che ripete il codice di una cartella per x volte quanti sono gli id presenti nella tabella principale

Io credo o perlomeno spero di essermi spiegato bene ma da un certo punto di vista mi viene il dubbio che ancora una volta faticherete a capire

:p

Buona domenica
Grazie cmq a chi saprà darmi indicazioni
 
Ho capito perfettamente, e hai fatto un errore molto comune tra i nuovi sviluppatori PHP. Ti ricordo che PHP è un linguaggio dinamico. Questo significa che non è necessario scrivere ogni volta lo stesso codice. Nel tuo caso avresti dovuto fare così: prendere un parametro GET con l'ID dell'utente (es. http://www.miosito.com/movimenti.php?id=1) e passarlo allo script (puoi recuperarlo con $_GET['id']), quindi recuperare i dati di quell'utente. Ad esempio:
PHP:
<?php
// recuperi l'ID
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

// controlli che l'ID sia impostato
if(!$id)
    die('Nessun ID impostato!');

// controlli che l'utente con quell'ID esista
// [...]

// visualizzi i movimenti dell'utente
// [...]
?>
Se qualcosa non ti è chiaro fammi sapere.
 
Ciao ale magari so io che nont i ho capito

io la variabile dell'id l'ho passata con post però ho 20 id e per ogni id devo usare los tesso identico script dove cambia solo il numero dell'id

poi ho una pagina princiaple che mi incolonna tutti gli id(sotto forma di tasto) così che se uno preme il tasto 1 vede tutte le operazione dell'id 1(che sono registarte nel databse)

soloc he ho dovuto copincollare lo script dell'id 1 per tutti gli altri 20 rinominando solo l'id

mentre pensavo si potesse fare una cartella unica con un solo codice ma con un array che estrae tutti gli id e compone il codice per ogni id

scusami am il tuo script non l'ho proprio capito anche eprchè a me (credo) che anche estraendo tutti gli id sotto forma di array non saprei come permettere al codice di ricalcolare per ogni elmento dell'array

madò scusami io non sono molto bravo a spiegare
 
Allora dato che ora ho più tempo riprendo questa discussione dato che nell'altra ho risolto.

Adesso ho i button incolonnati e su ognuno è presente l'id dell'utente però ora non mi riesce di inviare l'id scelto alla apgina successiva :incazz2:

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>";
}  
?>


suggerimenti?
 
Si dice "Morto un Papa se ne fa un altro".

Dettociò


ho risolto il problema dell'array così

PHP:
    $sqlquery = "SELECT * FROM Utenti";
	$dati=array();
$result = mysql_query($sqlquery);
while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)){
$dati[]= $linea['i_utente'];

	}
	 	 // ottiene i valori del record
    $res = "'".implode("','", $dati)."'"; 
	
echo $res;

poi

PHP:
    $query = "SELECT SUM(Uscite) as tot_usc FROM Tabella WHERE id IN ($res)";
    $dati2=array();
	$result = mysql_query($query);
	  while ($linea3 = mysql_fetch_array($result, MYSQL_ASSOC))
{
$dati2[]= $linea3['tot_ing'];
 
}
  
   // ottiene i valori del record
    $totusc = "'".implode("','", $dati2)."'"; 
  
  
echo $totusc;

Nel moemntod i contententezza più assoluta per aver risolto una cossa che ci giro da mesi e che oggi mi ha sottratto 4 ore di tempo, ci casca l'asino

ora devo aggiornare una seconda tabella che contiene il totale delle uscite

provo con

PHP:
$sqlquery = "UPDATE mon_prova SET entrate = '$totusc' WHERE id IN ($res)";
$query=mysql_query($sqlquery);

ovviamente essendo anche $totusc un array non me lo prende come valore.

Come si fa?

:confused:
 
provato a ciclare il valore dell'array e ad eseguire un update per ogni valore estratto?
 
provato a ciclare il valore dell'array e ad eseguire un update per ogni valore estratto?

potresti farmi un esempio pratico? non ho capito molto bene cosa intendi, cioè dovrei fare un ciclo di $totusc? e non avrei los tesso problema con l'UPDATE?
 
sto facendo una marea di prove
PHP:
$sqlquery = "UPDATE mon_prova SET entrate = '$totusc' WHERE id IN ($res)";
$query=mysql_query($sqlquery);
$res è uguale a "1","2","3","4", etc.mentre $totusc è uguale a "100","200","300", etc....

ho provato di tutte le maniere presumo che $res funzioni perchè se faccio

PHP:
$sqlquery = "UPDATE mon_prova SET entrate = '100' WHERE id IN ($res)";
$query=mysql_query($sqlquery);

incrementa il valore a 100 in tutti le righe incluse in $res

ma in entrate non prende ne '100','200','300' etc nè '100,200,300' non funziona

come posso mettere in entrate l'array $totusc ?:crying: sto vedendo nell'impossibile ma non trovo nessun caso simile

mi viene il dubbio che non si possa fare e questo renderebbe inutile tutto sto lavoro :dipser:
 
Nulla è impossibile. L'impossibile richiede solo più tempo (cit.)

In ogni caso, prova a fare un var_dump della query per vedere come viene costruita:
PHP:
var_dump($sqlquery);

:mavieni:

string(334) "UPDATE mon_prova SET entrate = ''292','318','423','312','433','456','548','443','761','328','339','481','542','246','390','850','468','422','254','254','293','487','412','271','373','278'' WHERE id IN ('1','6','9','5','13','12','8','10','7','24','16','2','4','25','19','14','20','11','3','23','26','15','17','18','22','21')ORDER by id"

mi restituisce questo
 
Credo che dovrai eseguire tante query quanti sono gli ID. Prova così:
PHP:
foreach($dati as $key => $id)
{
	$value = $dati2[$key];
	
	$sql = "UPDATE mon_prova SET entrate = '{$value}' WHERE id = '{$id}'";
	mysql_query($sql) or die(mysql_error());
}
E vedi se funziona.
 
Credo che dovrai eseguire tante query quanti sono gli ID. Prova così:
PHP:
foreach($dati as $key => $id)
{
	$value = $dati2[$key];
	
	$sql = "UPDATE mon_prova SET entrate = '{$value}' WHERE id = '{$id}'";
	mysql_query($sql) or die(mysql_error());
}
E vedi se funziona.

scusami ma sto un pò fuso seguendo la mia queey

PHP:
$sqlquery = "UPDATE mon_prova SET entrate = '$totusc' WHERE id IN ($res)";
$query=mysql_query($sqlquery);

$id sarebbe il mio $res
$dati dovrebbe esse il mio $totusc
e
$dati2 sarebbe?
 
PHP:
foreach($res as $key => $id)
{
    $value = $totusc[$key];
    
    $sql = "UPDATE mon_prova SET entrate = '{$value}' WHERE id = '{$id}'";
    mysql_query($sql) or die(mysql_error());
}

non va :crying::crying: ma dopo WHERE non andrebbe id IN

perchè perlomeno $res me lo prendeva difatti facendo delle prove inserendo un unico numero al posto di $totusc mi aggiornava la cifra in tutti gli id
 
Forse ho capito male io cosa devi fare. Tu quali record devi aggiornare e con quali valori?


devo aggiornare il campo entrate di tutti gli id con i valori risultanti da $totusc

in $totusc ci sono dei totali inq uesto formato "100","200","300" tanti quanti sono gli ID_UTENTI(che sono contenuti in $res)
 

Discussioni simili