array foreach e database

  • Creatore Discussione Creatore Discussione ntoflip
  • Data di inizio Data di inizio

ntoflip

Utente Attivo
26 Ago 2008
50
0
0
Ho nuovamente un problema..
Sto litigando con il ciclo foreach e non ne riesco a comprendere bene il funzionamento.. Ho una tabella in un DB con campo "categoria" che ha al massimo 2 valori (categoria1 e categoria2). E vorrei ottenere un array che ha come chiavi o indici le categorie e come valori il numero di volte che le categorie compaiono nella tabella..

Ho scritto questo pezzo di codice ma non mi funziona.. cosa sbaglio :dipser:
Codice:
require_once("db_info.inc");
$categorie = array("categoria1"=>0, "categoria2"=>0);
$connessione = @new mysqli($serv, $me, $mep, $datab);
foreach ($categorie as $key => &$value) {
$qstr = "SELECT * FROM Tabella WHERE categoria ='$key'";
$result = $connessione->query($qstr);
$quante = $result->num_rows;
$value=> $quante;
}
$result->close();
$connessione->close();

foreach ($categorie as $key =>$value) {
echo $key."<br/>";
echo $value."<br/>";
}
 
Ultima modifica:
mi rispondo da solo

Dopo essere impazzito sono riuscito a capire..
Posto il codice se può servire a qualcuno..

Codice:
<?php
require_once("db_info.inc");
$categorie = array("categoria1" => 0, "categoria2" => 0);
$connessione = @new mysqli($serv, $me, $mep, $datab);

foreach ($categorie as $key => &$value) {
$qstr = "SELECT * FROM Immagini WHERE categoria ='$key'";
$result = $connessione->query($qstr);
$quante = $result->num_rows;
$value = $quante;
$result->close();
unset($value);
}

$connessione->close();

foreach ($categorie as $key => $value) {
echo $key."<br/>";
echo $value."<br/>";
}
?>

Mancava il pezzo
Codice:
unset($value);
che pulisce il risultato, infatti mi dava per tutte le categorie lo stesso valore della prima.
 
continuando a monologare

mi è subito sorto un altro problema.. e non so se aprire una nuova discussione o no. comunque conservando la stessa impostazione di prima, in cui ho ricavato un array con le categorie come chiavi e il numero di righe nella tabella del DB di quella categoria come valori... adesso vorrei ottenere un altro array (multidimensionale) delle righe per ciascuna categoria di un altro campo della tabella.. è difficile da spiegare..

Allora ho questa Tabella (id, categoria, campo)

Prima ho ottenuto un Array("categoria1" =>n°volte, "categoria2" =>n°volte, ..)

Adesso nello stesso blocco foreach vorrei ottenere un
Multidimensionale ("categoria1" => $campo1(c1, c2, c3..), "categoria2"..)

esiste un metodo tipo "fetch" che mi da come risultato un array contenente tutti i valori di campo quando categoria è uguale a "categoria1"?? spero si capisca..
 
una soluzione

così sono riuscito nel mio intento anche se probabilmente esistono tecniche più idonee..

Codice:
<?php
require_once("db_info.inc");
$categorie = array("categoria1" => 0, "categoria2" => 0);
$connessione = @new mysqli($serv, $me, $mep, $datab);

foreach ($categorie as $key => &$value) {
$qstr = "SELECT * FROM Tabella WHERE categoria ='$key'";
$result = $connessione->query($qstr);
$quante = $result->num_rows;
$value = $quante;
$i= 0;
while (($row = @$result->fetch_assoc()) !== NULL) {
$multidimensionale[$key][$i] = $row['campo'];
$i++;
}
$result->close();
unset($value);
}

$connessione->close();

foreach ($categorie as $key => $value) {
echo $key."<br/>";
echo $value."<br/>";
}
echo "stop<br/>";
print_r($multidimensionale);
?>
 

Discussioni simili