problema con mysql_fetch_array

ciao ragazzi sono nuovo del forum e ho questo problema:

come faccio ad avere nel vettore

$riga = mysql_fetch_array($result1); tutti gli id lista

cioè vi spiego meglio, io ho

idlista idutente

162       522

162        520

163      521

allora ad ogni idlista corrispondono uno o piu idutente, pero non riesco ad ottenere tutti gli idutente.

io devo riuscire a ottenere gli idutente 522 5221 523 e cosi via se ce ne fossero altri, sempre però in base all'idlista

dove sbaglio?

<?php
//Includo i file per la connessione
//e per la verifica Utente
require_once('connessione.php');
require_once('verificalogin.php');

?>

<html>
<head>
</head>

<body>
<?php

if(!isset($_SESSION['utenteM'])){
         echo 'errore';
      }else{
         $user=$_SESSION['utenteM'][0];
      }





    $query1 = "SELECT * FROM utente WHERE username = '$user'"; 
     $result1 = mysql_query($query1) or die("Errore nella query1:".mysql_error());  
      $row = mysql_fetch_array($result1); 
     $idutente = $row['idutente'];
     
     //echo $idutente ;


      $query1 = "SELECT idlista FROM definisce WHERE idutente = '$idutente'"; 
     $result1 = mysql_query($query1) or die("Errore nella query1:".mysql_error()); 
     $numerorighe = mysql_num_rows($result1);
     
    //echo $numerorighe;
     
for($x=0; $x<$numerorighe; $x++){
                                
     $riga = mysql_fetch_row($result1); 
    
    //$riga = array('','',''); 
     
     

foreach ($riga as $value) {

    $query2 = "SELECT idutente FROM include WHERE idlista = '$value'"; 
     $result1 = mysql_query($query2) or die("Errore nella query2:".mysql_error()); 
    $numerorighe = mysql_num_rows($result1);
    
    echo "<br>$numerorighe";
    
    for($i=0; $i<=$numerorighe; $i++){
                            
     $resrow = mysql_fetch_row($result1);
     $idutente=$resrow['1'];
     
     echo  "$idutente";
    
    
     
     }
    
}}


?>


</body>
</html>
inviato 10 anni fa
riga1
X 0 X

le funzioni mysql_fetch_* utilizzano un puntatore interno sull'insieme dei risultati che viene incrementato ad ogni chiamata.

Detta in parole povere mysql_fetch_array preleva UNA riga dal record...

se tu facessi

...

$row = mysql_fetch_array($result1);

echo $row['idutente'];

$row = mysql_fetch_array($result1);

echo $row['idutente'];

...

otterresti, con il tuo esempio, questo:

522 520

naturalemnte non sapendo quanti record hai non puoi affidarti ad un numero fisso di chiamate, ma sfruttare il fatto che la funzione restituisce false quando non ci sono più record da prelevare e quindi creare un ciclo:

while($riga = mysql_fetch_array($result1))

{

echo $row['idutente'];

}

così li hai tutti.. ^_^

Da quanto vedo tu vuoi utilizzare l'idutente così ottenuto per fare un'altra query... la cosa potrebbe essere sbagliata alla base, nel senso che se vuoi usare idutente per accedere ai record corrispondenti in una altra tabella, la cosa migliore è fare un join tra le due tabelle ed avere quindi un solo risultato che comprende i dati di entrambe le tabelle, cuciti opportunamente assieme. Ma non so come è fatto il tuo database, nè cosa deve fare lo script.. quindi non so dirtinula di più specifico.

risposto 10 anni fa
}gu|do[z]{®©
X 0 X

allora grazie mille per l'aiuto e la risposta.ma non ho ben capito dove mettere quel ciclo while...

e gli altri cicli for e forach devo lasciarli???

ciao e garzie ancora

scusa se vedi degli ORRORI ma ho iniziato da poco con php

risposto 10 anni fa
riga1
X 0 X

più che dirti dove evi mettere un certo codice, preferisco farti capire come funziona così capirai d asolo come fare :)

la sostanza è quella.. se tu operare in qualunque modo (stampa o manipolazione di qualsiasi tipo) su tutte le tuple (righe) restituite da un'interrogazione del dtabase, devi fare un ciclo di mysql_fetch_array (o mysql_fetch_row o mysql_fetch_assoc... diciamo mysql_fetch_* per intendere tutta la famiglia).

$res = mysql_query('Select * From `tabella`');

while($riga = mysql_fetch_array($res))

{

 //fai qualcosa con $riga

}

scusami.. prima ho scritto $riga in un posto e $row in un altro eprchè copiavo il tuo codice.. forse ti ho fatto confusione..

comunque con un ciclo come quello sopra ottieni ad ogni iterazione del ciclo una riga dai risultati della query... cosa farci dipende da quello che devi farci tu, ma in generale per operare in qualsiasi modo su ogni riga, devi fare un ciclo che opera una alla volta su tutte le righe

risposto 10 anni fa
}gu|do[z]{®©
X 0 X

ciao e scusa ma sto ancora un pò confuno :D :D

questo è il codice ma non mi funziona non riesco a stampare gli idutente

<?php
//Includo i file per la connessione
//e per la verifica Utente
require_once('connessione.php');
require_once('verificalogin.php');

?>

<html>
<head>
</head>

<body>
<?php

if(!isset($_SESSION['utenteM'])){
         echo 'errore';
      }else{
         $user=$_SESSION['utenteM'][0];
      }

    $query1 = "SELECT * FROM utente WHERE username = '$user'"; 
     $result1 = mysql_query($query1) or die("Errore nella query1:".mysql_error());  
      $row = mysql_fetch_array($result1); 
     $idutente = $row['idutente'];
     

     $query1 = "SELECT idlista FROM definisce WHERE idutente = '$idutente'"; 
     $result2 = mysql_query($query1) or die("Errore nella query1:".mysql_error()); 
     $numerorighe = mysql_num_rows($result2);
     
for($x=0; $x<=$numerorighe; $x++){
                                
    $res = mysql_fetch_array($result2); 
     $idlista = $res['idlista'];
    echo $idlista;
    
    
while($riga = mysql_fetch_array($result2))
{
 //fai qualcosa con $riga


   
foreach ($riga as $value) {

     $query2 = "SELECT idutente FROM include WHERE idlista = '$value'"; 
     $result1 = mysql_query($query2) or die("Errore nella query2:".mysql_error()); 
     $numerorighe = mysql_num_rows($result1);
    
     echo "<br>$numerorighe";
    
    for($i=0; $i<=$numerorighe; $i++){
                            
     $resrow = mysql_fetch_row($result1);
     $idutente=$resrow['1'];
     
     
    
    echo $resrow['idutente'];
}
}

     
}}
    



?>


</body>
</html>
risposto 10 anni fa
riga1
X 0 X

se mi fermo qui a questo codice riesco a stamapare gli idlista che mi servono però poi da codice di sopra non va piu bene

if(!isset($_SESSION['utenteM'])){
         echo 'errore';
      }else{
         $user=$_SESSION['utenteM'][0];
      }

    $query1 = "SELECT * FROM utente WHERE username = '$user'"; 
     $result1 = mysql_query($query1) or die("Errore nella query1:".mysql_error());  
      $row = mysql_fetch_array($result1); 
     $idutente = $row['idutente'];
     

     $query1 = "SELECT idlista FROM definisce WHERE idutente = '$idutente'"; 
     $result2 = mysql_query($query1) or die("Errore nella query1:".mysql_error()); 
     $numerorighe = mysql_num_rows($result2);
     
for($x=0; $x<=$numerorighe; $x++){
                                
    $res = mysql_fetch_array($result2); 
     $idlista = $res['idlista'];
    echo $idlista;
}
risposto 10 anni fa
riga1
X 0 X

Abituati ad andare per gradi per fare il debugging...

f(!isset($_SESSION['utenteM'])){

echo 'errore';

}else{

$user=$_SESSION['utenteM'][0];

}

    $query1 = "SELECT * FROM utente WHERE username = '$user'";

     $result1 = mysql_query($query1) or die("Errore nella query1:".mysql_error()); 

     while($row = mysql_fetch_array($result1))

 echo $row['idutente'].'<br />';

}

comincia d aquesto.. poi aggiungi il resto

comunque per la cronaca, questo:

f(!isset($_SESSION['utenteM'])){

echo 'errore';

}else{

$user=$_SESSION['utenteM'][0];

}

non è che ti protegga molto.. non so cosa vuoi fare, ma con questo non è che fai molto...

risposto 10 anni fa
}gu|do[z]{®©
X 0 X

allora ti scrivo dove sn arrivato e ti dico che non và.guarda sto impazzendo!!

come sta adesso x ogni idlista mi stampa solo un idutente, se un idlista ha piu idutente ne stampa solo uno

<?php
//Includo i file per la connessione
//e per la verifica Utente
require_once('connessione.php');
require_once('verificalogin.php');

?>

<html>
<head>
</head>

<body>
<?php

if(!isset($_SESSION['utenteM'])){
         echo 'errore';
      }else{
         $user=$_SESSION['utenteM'][0];
      }

    $query1 = "SELECT * FROM utente WHERE username = '$user'"; 
     $result1 = mysql_query($query1) or die("Errore nella query1:".mysql_error());  
      $row = mysql_fetch_array($result1); 
     $idutente = $row['idutente'];
    
   

     

     $query1 = "SELECT idlista FROM definisce WHERE idutente = '$idutente'"; 
     $result2 = mysql_query($query1) or die("Errore nella query1:".mysql_error()); 
     $numerorighe = mysql_num_rows($result2);
     
for($x=0; $x<=$numerorighe; $x++){
                                
    $res = mysql_fetch_array($result2); 
    
    $idlista = $res['idlista'];
   //echo $idlista;
   
    
    $query2 = "SELECT idutente FROM include WHERE idlista = '$idlista'"; 
     $result1 = mysql_query($query2) or die("Errore nella query2:".mysql_error()); 
    $ris = mysql_fetch_array($result1); 
     $idutente = $ris['idutente'];
     echo $idutente;
   
     
}
    



?>


</body>
</html>
risposto 10 anni fa
riga1
X 0 X

ciao ho risolto, grazie mille di cuore. una cosa ti vorrei chiedere mi dici a parole in modo dettagliato come opera il ciclo while che ho messo per vedere se ho ragionato bene.

ti ringrazio ancora tanto

<?php
//Includo i file per la connessione
//e per la verifica Utente
require_once('connessione.php');
require_once('verificalogin.php');

?>

<html>
<head>
</head>

<body>
<?php

if(!isset($_SESSION['utenteM'])){
         echo 'errore';
      }else{
         $user=$_SESSION['utenteM'][0];
      }

    $query1 = "SELECT * FROM utente WHERE username = '$user'"; 
     $result1 = mysql_query($query1) or die("Errore nella query1:".mysql_error());  
      $row = mysql_fetch_array($result1); 
     $idutente = $row['idutente'];


     $query1 = "SELECT idlista FROM definisce WHERE idutente = '$idutente'"; 
     $result2 = mysql_query($query1) or die("Errore nella query1:".mysql_error()); 
     $numerorighe = mysql_num_rows($result2);
     
for($x=0; $x<=$numerorighe; $x++){
                                
 $res = mysql_fetch_array($result2); 
 $idlista = $res['idlista'];
//echo $idlista;

 $query2 = "SELECT idutente FROM include WHERE idlista = '$idlista'"; 
 $result1 = mysql_query($query2) or die("Errore nella query2:".mysql_error()); 

    
while($riga = mysql_fetch_array($result1))
{
  $idutente = $riga['idutente'];
     echo $idutente.'<br />';

   
}



 //fai qualcosa con $riga

}

?>


</body>
</html>
risposto 10 anni fa
riga1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda