- Home
- Categorie
- Coding e Sistemistica
- PHP
- Trovare specifici elementi in un ciclo for
-
posta come è ora il tuo codice
-
Ecco il codice:
[PHP]<?php
$voti = file("MCC02.txt");
$num_voti = count($voti);
$ruolo3=array();
for($num1 = 0 ; $num1 < $num_voti ; $num1++){
$prova=($voti[$num1]);
$prova1=$prova;
$dati=array();
$dati[]= $prova1;
$prova4=implode($dati);
$prova5=explode('|',$prova4);
if($ruolo==3) $ruolo3[] = $prova5;
$codicegiocatore= $prova5[0];
$nome=$prova5[2];
$squadra=$prova5[3];
$ruolo=$prova[5];
$vototot=$prova5[7];
$voto=$prova5[10];
$goal=$prova5[11];
$assist=$prova5[15];
$goalsubiti=$prova5[12];
$prezzo=$prova5[27];}
echo"$nome";
?>
</table>
</body>
</html>[/PHP]Grazie per l'aiuto, ma sono ancora alle prime armi con il php..
-
Figurati. Il $dati=array(); lo devi uscire dal ciclo, se no ad ogni iterazione lo re-inizializzi!
Capisci cosa voglio dire? In pratica fai questo:
-
Crei l'array
-
Scrivi un valore
-
Ri-crei l'array ( cancellando quello che c'era prima )
-
Inserisci un altro valore
-
Ri-ricrei l'array ( cancellando ancora )
...
Invece uscendo la definizione dell'array risovleresti il problema!
-
-
Non funziona nemmeno così, mi restituisce il nome solo del primo giocatore, il problema è forse del fatto di questo script non lo so, io im poche parole con la funzione file estraggo dal file ogni riga all'interno di un array, con il ciclo seleziono man mano ogni elemento dell'array e lo inserisco in un altro array, che ritrasformo in una stringa e che poi ritrasformo in un array con la funzione explode, in modo che ad ogni numero corrisponda un valore riguardante il giocatore, per esempio l'ultimo è il prezzo, c'è un modo se strutturato in questo modo per selezionare solo quelli che hanno $ruolo=3?
-
Scusami ho detto una cavolata, il dati =array() era giusto dov'era. Ho letto male...
Prova con questo codice:
[php]
<?php
$voti = file("MCC02.txt");
$ruolo3=array();
foreach($voti AS $riga) {
// Spezzi la riga in un array
$prova5=explode('|',$riga);// Non so a cosa ti servano, comunque nomini delle variabili per l'array list($codicegiocatore,,$nome,$squadra,,$ruolo,,$vototot,,,$voto,$goal,$goalsubiti,,,$assist) = $prova5; $prezzo=$prova5[27]; // Se il giocatore ha ruolo 3, lo aggiungi nell'altro array if($ruolo==3) $ruolo3[] = $prova5;
}
printr($ruolo3);
?>
[/php]Ho cercato di ridurtelo all'osso e di sistemarlo in modo più pulito... Il problema del codice di prima è che facevi il controllo con $ruolo, ancora prima che definessi $ruolo!
-
Grazie.. questo codice sembra funzionare e mi stampa a schermo questo
Array ( [0] => Array ( [0] => 101 [1] => 2 [2] => "ABBIATI Christian" [3] => "MILAN" [4] => 1 [5] => 0 [6] => 0 [7] => 0.0 [8] => 0 [9] => 0 [10] => 0.0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 [15] => 0 [16] => 0 [17] => 0 [18] => 0 [19] => 0 [20] => 0 [21] => 0 [22] => 0 [23] => 0 [24] => 0 [25] => 0 [26] => 0 [27] => 12 ) [1] => Array ( [0] => 102 [1] => 2 [2] => "AMELIA Marco" [3] => "GENOA" [4] => 1 [5].....
Però poi come faccio selezionare gli elementi che voglio?
-
Si, il printr alla fine mostra i contenuti dell'array.
Se aggiungi un tag html <pre> prima ed un </pre> dopo lo script, lo vedrai ben formattato.
Quali sarebbero gli elementi che vuoi? Quell'array che ti mostra èl'array $ruolo3, che contiene tutti i giocatori di ruolo 3.
-
Ok ho risolto quel problema, ma ora ho fatto un sistema di selezione con menu, che permette di far uscire per esempio i portieri di una determinata squadra, ecco il codice:
[PHP]<?php
$ruolo2=$_POST["Ruolo"];
$squadra2=$_POST["Squadra"];
$voti = file("MCC02.txt");
$ruolo3=array();
foreach($voti AS $riga) {
// Spezzi la riga in un array
$prova5=explode('|',$riga);// Non so a cosa ti servano, comunque nomini delle variabili per l'array list($codicegiocatore,,$nome,$squadra,,$ruolo,,$vototot,,,$voto,$goal,$goalsubiti,,,$assist) = $prova5; $prezzo=$prova5[27]; // Se il giocatore ha ruolo 3, lo aggiungi nell'altro array $nulla='nulla'; if($squadra2==$nulla){ if($ruolo==$ruolo2) $ruolo3[]=$prova5; } if($squadra2!=$nulla){if($squadra==$squadra2 and $ruolo==$ruolo2) $ruolo3[]=$prova5;}
}
$num_cal=count($ruolo3);
echo"$num_cal";
for($num1=0;$num1 < $num_cal;$num1++){
$nome=$ruolo3[$num1][2];
$nome=str_replace('"','',$nome);
$squadra=$ruolo3[$num1][3];
$squadra=str_replace('"','',$squadra);
echo"<tr>";
echo"<td>$nome</td>";
echo"<td>$squadra</td>";
echo"</tr>";} ?> [/PHP]
Se non seleziono la squadra e quindi $squadra2=='nulla' mi esce la lista invece se è diverso e quindi seleziono una squadra non mi appra nessun giocatore, come mai??
P.S.:grazie ancora per l'aiuto..
-
Potresti ottimizzare le cose raggruppando le condizioni:
[php]
// Se il giocatore ha ruolo 3, lo aggiungi nell'altro array
if( ($squadra2=='nulla' OR $squadra2==$squadra) AND $ruolo==$ruolo2)
$ruolo3[]=$prova5;
[/php]Vedi se così risolve, non ho controllato se ci fossero altri errori logici nel tuo codice. Altrimenti, prova a fare un bel:
[php]echo "Hai scritto $squadra2 mentre questo giocatore è della squadra $squadra";[/php]
E mettilo subito dopo il list() all'interno del ciclo! Così puoi "debuggare" un pò la situazione!
-
Continua a non funzionare, purtroppo.. Ora sto provando ad inserire tutti i giocatori in un database mysql, in modo da fare una ricerca da lì
lo sto facendo con un ciclio for però non va la query all'interno del ciclo mentre fuori funziona, ecco:[PHP]<?php
$connessione=mysql_connect("localhost","root","");
$selezione=mysql_select_db("prova",$connessione);
if($selezione==1){echo"sele ok";}
$voti = file("MCC02.txt");
$num_voti = count($voti);
echo"$num_voti";
for($num1 = 0 ; $num1 < $num_voti ; $num1++){
$prova=($voti[$num1]);
$prova1=$prova;
$dati=array();
$dati[]= $prova1;
$prova4=implode($dati);
$prova5=explode('|',$prova4);
$prova5=str_replace('"','',$prova5);
$codicegiocatore= $prova5[0];
$nome=$prova5[2];
$squadra=$prova5[3];
$ruolo=$prova[5];
$vototot=$prova5[7];
$voto=$prova5[10];
$goal=$prova5[11];
$assist=$prova5[15];
$goalsubiti=$prova5[12];
$prezzo=$prova5[27];}
$query=mysql_query("INSERT INTO giocatori (Nome,Squadra,Ruolo) VALUES('$nome','$squadra','$ruolo')");
?>
[/PHP]
-
Ho risolto questo problema, ma ora non so come fare delle ricerche all'interno della tabella, come si fa?
-
Devi usare le SELECT
-
ok, come posso dire di creare una tabella mysql che deve massimo 23 record?
-
LIMIT
( guarda nel sito officiale di mysql )
-
Ok grazie mille, ora devo cercare di creare un menù da dove poter comprare dei giocatori, come faccio a trasformare ciò che c'è scritto in una cella di una tabella html in uan variabile utilizzabile in php?