Dividere array multidimensionale in altri array multidimensionali

  • Creatore Discussione Creatore Discussione andspi
  • Data di inizio Data di inizio

andspi

Nuovo Utente
27 Mar 2013
14
0
0
Ciao a tutti !

Premetto che sono nuovo del forum e spero di aver posato la discussione nella sessione giusta.

Il mio problema è quello di riuscire a dividere un'array multidimensionale , estratto con una query da mysql , in altri array multidimensionali in base a un criterio.

Mi spiego meglio facendo l'esempio :

Io ho questo array estratto da mysql
$risultati= mysql_query("SELECT circuito , posizione FROM $table WHERE zona LIKE '%L%' AND corsia LIKE '%5%'");

(ovviamente l'array ha più righe dove ogni riga è un record)

A questo punto io dovrei dividere il tutto in due array, diciamo $pari e $ dispari , in base che il valore posizione sia pari o dispari.

Il risultato dovrebbe essere che io mi ritrovo con due array , uno con valori dipendenti dalla posizione pari e uno con valori dipendenti dalla posizione dispari.

Spero di essere stato chiaro nella spiegazione.

Ringrazio tutti anticipatamente per l'aiuto.

Ciao
 
ciao
questo non è un array ma solo la query alla tabella

PHP:
$risultati= mysql_query("SELECT circuito , posizione FROM $table WHERE zona LIKE '%L%' AND corsia LIKE '%5%'");
posta come leggi i record, e un'indicazione di come vorresti la suddivisione
 
Ciao, io ho capito piu o meno cosi
PHP:
<?php

$risultati = mysql_query("SELECT circuito , posizione FROM $table WHERE zona LIKE '%L%' AND corsia LIKE '%5%'");

$array_pari = array();
$array_dispari = array();
$i = 0;
while ($row = mysql_fetch_assoc($risultati)) {
    // verifica se pari
    if ($row['posizione'] % 2 == 0) {
        $array_pari[$i]['posizione'] = $row['posizione'];
        $array_pari[$i]['circuito'] = $row['circuito'];
    } else {
        $array_dispari[$i]['posizione'] = $row['posizione'];
        $array_dispari[$i]['circuito'] = $row['circuito'];
    }
    $i++;
}
?>
considera cmounque che l'estensione mysql è deprecata e prima o poi verrà rimossa
 
Grazie a tutti inanzi tutto per le risposte!

ho provato comi mi hai detto criric ma non riesco a stampare poi nella tabella i risultati mi da errore del server :incazz2:.

io ho fatto cosi :
PHP:
$array_pari =array();
$array_dispari=array();
$i=0;

while ($row = mysql_fetch_assoc($risultati)) {


    // verifica se pari
    if ($row['posizione'] % 2 == 0) {
        $array_pari[$i]['posizione'] = $row['posizione'];
        $array_pari[$i]['circuito'] = $row['circuito'];
    } else {
        $array_dispari[$i]['posizione'] = $row['posizione'];
        $array_dispari[$i]['circuito'] = $row['circuito'];
    }
    $i++;

	echo '<TABLE border=1>';
	echo '<tr>';
	echo '<TD>' .$array_pari['circuito'] . '</TD>';
        echo '<TD>' .$array_dispari['circuito'] . '</TD>';
	echo '</TR>';
	echo '</TABLE>';

}

Spero di non aver fatto tantissimi errori in due righe di codice :D.
 
Ultima modifica di un moderatore:
è un array bidimensionale quindi non
PHP:
$array_pari['circuito']
ma
PHP:
$array_pari[$i]['circuito']

edit
la tabella inoltre è meglio se la apri prima del while e la chiudi dopo
edi edit
forse è meglio se li stampi dopo ora ti preparo un esempio
 
Ultima modifica:
eccolo
PHP:
<?php
$array_pari = array();
$array_dispari = array();
$i = 0;

while ($row = mysql_fetch_assoc($risultati)) {
    // verifica se pari
    if ($row['posizione'] % 2 == 0) {
        $array_pari[$i]['posizione'] = $row['posizione'];
        $array_pari[$i]['circuito'] = $row['circuito'];
    } else {
        $array_dispari[$i]['posizione'] = $row['posizione'];
        $array_dispari[$i]['circuito'] = $row['circuito'];
    }
    $i++;
}
echo "<table>";
foreach ($array_pari as $value) {
    echo "<tr>";
    echo "<td>" . $value["posizione"] . "</td>";
    echo "<td>" . $value["circuito"] . "</td>";
    echo "</tr>";
}
echo "</table>";

echo "<table>";
foreach ($array_dispari as $value) {
    echo "<tr>";
    echo "<td>" . $value["posizione"] . "</td>";
    echo "<td>" . $value["circuito"] . "</td>";
    echo "</tr>";
}
echo "</table>";
?>
se dividi tra pari e dispari è inutile che poi metti tutto nella stessa tabella o forse non ho capito cosa devi fare
ovviamente non ho testato
 
Grazie ancora di tutto, ma continua ad uscirmi errore del server.

A me servirebbe che alla fine avessi come risultato una tabella dove in ogni colonna ho : i circuiti con posizione dispari e nell'altra i circuiti con posizione pari.

ti posto il codice completo che ho scritto :
PHP:
<html>
<head></head>
<body>

<?php
$host="host";
$user="user";
$pas="pas";
$data="percorsi50";


$con=mysql_connect($host,$user,$pas) or die (mysql_error());

$db=mysql_select_db($data,$con);

$elim = "DROP TABLE IF EXISTS percorsi";

$ok = mysql_query($elim); 

$query = "CREATE TABLE percorsi (
zonpic text,
allpic text,
dplpic text,
nivpic text,
codpro text,
valpro text,
ds1pro text,
cirpic text,
fampro text,
libfam text,
indpro02 text,
colcou2 text,
coupal2 text,
haucol text,
lngcol text,
lrgcol text,
minniv text,
maxniv text,
pdbcol text,
pdbpal text,
volcol text,
volpal text,
spcpro text,
pcbpro text,
nbjdlv text,
secdlv text,
coecol text,
codalc text,
degalc text,
volalc text,
foupro text,
edipro text,
codmds text,
indpro03 text,
indpro04 text,
indpro05 text,
indpro06 text,
indpro08 text,
coupal text,
id int NOT NULL auto_increment,
PRIMARY KEY (id)
)";

$result = mysql_query($query); 
 

$file="c:/desktop/percorsi.CSV";
$table="percorsi";

   mysql_query("LOAD DATA LOCAL INFILE '$file' INTO TABLE $table
		FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'");

$l5=mysql_query("SELECT cirpic , dplpic FROM $table WHERE zonpic LIKE '%L%' AND allpic LIKE '%5%'");

$array_pari = array(); 
$array_dispari = array(); 
$i = 0; 

while ($row = mysql_fetch_assoc($l5)) { 
    // verifica se pari 
    if ($row['dplpic'] % 2 == 0) { 
        $array_pari[$i]['dplpic'] = $row['dplpic']; 
        $array_pari[$i]['cirpic'] = $row['cirpic']; 
    } else { 
        $array_dispari[$i]['dplpic'] = $row['dplpic']; 
        $array_dispari[$i]['cirpic'] = $row['cirpic']; 
    } 
    $i++; 
} 
echo "<table>"; 
foreach ($array_pari as $value) { 
    echo "<tr>"; 
    echo "<td>" . $value["dplpic"] . "</td>"; 
    echo "<td>" . $value["cirpic"] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 

echo "<table>"; 
foreach ($array_dispari as $value) { 
    echo "<tr>"; 
    echo "<td>" . $value["dplpic"] . "</td>"; 
    echo "<td>" . $value["cirpic"] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 



echo mysql_error();


mysql_close($con);
?>
Grazie ancora per il tuo aiuto.
 
Ultima modifica di un moderatore:
ma continua ad uscirmi errore del server.
che errore?
ps
racchiudi il codice che posti trai i tag presenti sulla barra di formattazione ( seconda linea ultime 3 icone )
 
Quando apro la pagina php con il browser mi da errore server : si è verificato un errore nel soddisfare la tua richiesta
 
Ho risolto dando la condizione : where , nella query mysql .
Grazie a tutti per il vostro aiuto e contributo , alla prossima.
 

Discussioni simili