Newsgroup: it.comp.www.php
Titolo: array nella quey o ciclo for incasinato

Salve ragazzi!
allora: sto creando un sistema rudimentale di invio/ricezione messaggi
interni al mio sito.
questo è il codice:
<?
if(!isset($user)){
  print("<p>: : Utente Non Riconosciuto : :</p>
  <p>Procedi al Log-In per Accedere a Questa Pagina</p>");
}else{
  $query="SELECT CodSeller, Titolo, CodBuyer,
DATE_FORMAT(Data,'%d/%m/%Y') AS Date FROM tell WHERE CodSeller=$user";
  $result = mysql_query("$query")or die(mysql_error());
    while ($row = mysql_fetch_array($result)){
      $count = count($row['CodSeller']);
	  $titolo[] = $row['Titolo'];
      $codbuyer[] = $row['CodBuyer'];
      $data[] = $row['Date'];
    }
  if(!isset($count)){
    print("<p>:: Nessun Messaggio Presente :: <p>");
  }else{
    print("<tr><td width='55%' class='SfondoAdv p Bold
Center'>Oggetto</td><td width='30%' class='SfondoAdv p Bold
Center'>Venditore</td><td width='15%' class='SfondoAdv p Bold
Center'>Data Invio</td></tr>");
      $query="SELECT Username FROM users WHERE IDUser='$codbuyer'";
      $result = mysql_query("$query")or die(mysql_error());
        while ($row = mysql_fetch_array($result)){
          $buyer[] = $row['Username'];
		  print("<tr><td class='p'>$titolo[$i]</td><td
class='p'>$buyer[$i]</td><td class='p'>$data[$i]</td></tr>");
	}
  }
}
?>
quando vado a visualizzare la pagina mi viene fuori questa serie di
errori:
Notice: Undefined offset: 16 in
c:\programmi\easyphp1-8\www\wtn3\sendbox.php on line 22
Notice: Undefined offset: 16 in
c:\programmi\easyphp1-8\www\wtn3\sendbox.php on line 29
dove il numero 16 va avanti....cioè ci sono 2000righe con numerazione
crescente da 10 a 478, ma solo perchè ho stoppato la pagina,
altrimenti si blocca il browser.
dove riga 22 è $codseller=$venditore[$i];
e riga 29 è print("<tr><td class='p'>$titolo[$i]</td><td
class='p'>$seller[$i]</td><td class='p'>$data[$i]</td></tr>");
mi sapete dire cosa c'è che non va? il problema secondo me è nel
ciclo for e nella query dove inserisco l'array, ma non saprei fare
altrimenti.
mi sapete aiutare?
praticamente nella pagina si devono visualizzare nome, titolo e data
del messagigo inviato. dopo tutta la serie di errori l'elenco dei
messaggi viene comunque visualizzato...
grazie!

 class='p'>$seller[$i]</td><td class='p'>$data[$i]</td></tr>");
Dove valorizzi $i?
Per quale motivo non fai il print direttamente nel primo ciclo?
Per quale motivo non fai un join per estrarre direttamente il nome
dell'utente invece di eseguire una query per ogni messggio?
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

 dell'utente invece di eseguire una query per ogni messggio?
non ci avevo pensato

ho modificato la query con il join. gli errori non compaiono più, ma
ora mi fa l'elenco esatto dei messagi, ma username titolo e data sono
sempre uguali (e li ho inseriti diversi)
cosa ho sbagliato?
ho inizializzato  $i fuori dal ciclo while a 0 e prima della fine del
ciclo lo incremento. credevo funzionasse, ma a quanto pare....
grazie!
$query="SELECT CodBuyer, CodSeller, Titolo,
DATE_FORMAT(Data,'%d/%m/%Y') AS Date, Username FROM tell INNER JOIN
users ON IDUser=CodSeller WHERE CodBuyer=$user";
  $result = mysql_query("$query")or die(mysql_error());
    $i=0;
	while ($row = mysql_fetch_array($result)){
          $titolo[] = $row['Titolo'];
          $data[] = $row['Date'];
          $seller[] = $row['Username'];
          print("<tr><td class='p'>$titolo[$i]</td><td
class='p'>$seller[$i]</td><td class='p'>$data[$i]</td></tr>");
          $i=$i++;
        }

 direttamente nel for senza fare prima $i=0;
Quale for? Nel codice che hai postato NON c'e' alcun ciclo for.


           $i=$i++;
$i = 0;
print($i); // 0
$i=$i++;
print($i); // 0
http://www.php.net/manual/en/language.operators.increment.php


 Quale for? Nel codice che hai postato NON c'e' alcun ciclo for.
c'è stato una incomprensione di post.....
ora funziona, ma un particolare mi sfugge. in teoria $i++ e $i=$i+1
sono la stessa cosa, ma la prima non si incrementa.

 print($i); // 0
è vero...c'hai ragione....m'e l'ero dimenticato..... ++$i

 
http://www.php.net/manual/en/language.variables.predefined.php
un ultima cosa su questo......
mi hai detto di non usare register globals ma nel mio script $user lo
ricavo da $_POST, e poi continuo a lavorare sulla variabile $user. sono
io che ho capito male cosa volevi dire o mi stai dicendo di operare
sempre e comunque con $_POST e non passare i valori ad altre variabili?
grazie!

 sono la stessa cosa, ma la prima non si incrementa.
<?php 
$i = 0;
print($i); //0
$i++;
print($i); //1
$i = $i + 1;
print($i); //2
$i = $i++;
print($i); //2
$i = ++$i;
print($i); //3
?>




Si tratta di sicurezza... prendiamo il tuo pezzo di codice, ma quando non 
inizializzavi $i = 0. Se qualcuno avesse effettuato il POST aggiungendo un 
parametro i=10, la tua variabile i avrebbe avuto un valore iniziale MOLTO 
diverso da 0, il che farebbe saltar fuori una bella mole di notice, oltre a 
non far funzionare per nulla il tuo codice [*].
Se vuoi prendere A MANO una variabile dall'array $_POST (o $_GET) per poi 
usare sempre quella, liberissimo. Ma non fare affidamento su 
register_globals.
[*] qui il problema chiaramente sarebbe solo funzionale; prova perň ad 
immaginare qualcosa di molto piů pericoloso, come il costringere il tuo 
codice a chiamare funzioni come unlink() con dei parametri diversi da quelli 
che hai previsto tu.
-- 
ColdShine
"L'esperienza č un'insegnante severa: prima ci esamina
 e solo dopo ci fa lezione." - legge di Vernon Sanders 

quindi è sempre meglio andare a riprendere i valori con post e npon
trasferirli in una variabile....
bene....grazie!