Erori Uninitialized string offset

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Erori Uninitialized string offset

Am selectat cam ce am crezut ca e nevoie pentru problema mea:

Cod: Selectaţi tot

<?php  // Setarea pentru format UTF-8
// Afla cate linii sunt in tabel (MODIFICATI 'nume_tb') din baza de date  
$online = "SELECT COUNT(*) FROM `online`"; 
$result = mysql_query($online, $connect) or trigger_error(E_USER_ERROR);  
$r = mysql_fetch_row($result);  
$numrows = $r[0];  

// Stabileste numarul de linii din tabel afisate in pagina 
$rowsperpage = 20;  

// afla numarul total necesar de pagini 
$totalpages = ceil($numrows / $rowsperpage);        // ceil face rotunjire la int. maxim

// Obtine pagina curenta sau seteaza default 
if (isset($_GET['pagina']) && is_numeric($_GET['pagina'])) 
{  

  // seteaza variabila ca int 
  $pagina = (int) $_GET['pagina'];  
} else {  
  // pagina care este initial afisata (pagina default) 
  $pagina = 1;  

}
// daca pagina curenta e mai mare decat total pagini...
if ($pagina > $totalpages) {  

  // seteaza pagina curenta la ultima pagina  
  $pagina = $totalpages;  
} 

// daca pagina curenta e mai mica decat prima pagina...  
if ($pagina < 1) {  

  // seteaza pagina curenta la prima pagina   
  $pagina = 1;  
} 

// lista cu pagini, in functie de pagina curenta   
$offset = ($pagina - 1) * $rowsperpage;  

// obtine datele din tabel (MODIFICATI 'nume_tb') din baza de date  
$online = "SELECT * FROM `online` ORDER  BY  `onid` DESC LIMIT $offset, $rowsperpage";  
$result = mysql_query($online, $connect) or trigger_error(E_USER_ERROR);

// parcurgerea matricei cu datele obtinute 
while ($list = mysql_fetch_assoc($result)) {  
  // - MODIFICATI numele coloanelor tabelului ('id' si 'texte')
  // Stocheaza datele returnate de MySQL in variabile array pt. fiecare coloana
$onid[] = $list['onid'];
$nume[] = $list['nume'];
}

/*** Afisarea datelor obtinute ***/
    // Parcurge variabilele array setate in bucla WHILE
      echo '<table CELLSPACING=0><tr CELLSPACING=0>';
    $j=0;
    for($i=0; $i<count($onid); $i++) {
$nume = $nume[$i];
$on = mysql_query("SELECT * FROM `membri` WHERE `nume` = '$nume'");
$ron = mysql_fetch_array($on);
      // Aici puteti adauga cod HTML pentru aspectul grafic al afisarii
      echo '<td CELLSPACING=0>';
echo ' interior celula tabel, cum arata in sine';
     echo '</td>';
      $j++;
      if($j % 4 == 0 && $j !=20)
         echo '</tr><tr>';
    }
      echo '</tr>';
      echo '</table>';

.... restul e crearea adreselor paginilor ?>
Daca am o singura inregistrare in tabelul online, totul e ok afiseaza cum trebuie, daca am mai mult de o inregistrare imi afiseaza prima inregistrare perfect, dar restu eroare :

Cod: Selectaţi tot

Notice: Uninitialized string offset: 2 in /online.php on line 102 
Notice: Uninitialized string offset: 3 in /online.php on line 102
Notice: Uninitialized string offset: 4 in /online.php on line 102
Notice: Uninitialized string offset: 5 in /online.php on line 102
Am facut acest test avand 6 inregistrari in tabel, linia 102 fiind:

Cod: Selectaţi tot

$nume = $nume[$i];

MarPlo Mesaje:4343
Salut
Problema e de logica a codului. Rescrii variabila array $nume cu o valoare (din ea insasi) care nu mai e array, si, la urmatoarea parcurgere cu for() nu mai exista element cu index $i in $nume .
Ar trebui sa folosesti alt nume de variabila pt datele luuate cu for() din array, ca sa ramana variabila $nume cu datele ei.
Cam asa:

Cod: Selectaţi tot

for($i=0; $i<count($nume); $i++) {
  $unnume = $nume[$i];
  $on = mysql_query("SELECT * FROM `membri` WHERE `nume` = '$unnume'");
  // ...
} 

Subiecte similare