Solito dannato ciclo

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve a tutti,
chiedo venia per l'ennesimo quesito su di un ciclo,è una cosa che proprio fatica ad entrarmi nel cervello.

vengo al sodo

PHP:
$file = 'ciao.txt';
    

$data = file($file);
$chiave="Ciao";

foreach($data as $i => $riga)
{
if (strstr($riga,$chiave)){
 	
        $d1= $data[$i +1];
		$d2 = $data[$i + 2];
        $d3 = $data[$i + 3];
        $d4 = $data[$i + 4];
        $d5 = $data[$i + 5];
        $d6 = $data[$i + 6];
        $d7 = $data[$i + 7];
        $d8 = $data[$i + 8];
    }

}

con questo script cerco una determinata parola e leggo le 8 righe successive all parola cercata.
Come avete notato le righe lette sono 8 ma se invece dell'8 vorrei isnerire una variabile che può esse pure 50

com posso fare a creare un ciclo?

Cortesemente potete anche spiegarmi in modo terra,terra, sta cosa del ciclo?ù

Grazie
 
ciao
puoi provare così

PHP:
<?php
$file = 'ciao.txt';
$data = file($file);
$chiave="Ciao";
$d=array();//per prima cosa creerei un array $d al posto di $d1, $d2 ecc...
$quanti=50; //o quello che ti serve
foreach($data as $i => $riga){
	if (strstr($riga,$chiave)){
		for($k=1; $k <= $quanti; $k++){//se vuoi partire da 1 sino, in questo caso, a 50
        	$indice=$i+$k
			$d[$indice]= $data[$indice]; //questo per mantenere la corrispondenza es. $d[33]=$data[33]
		}
    }
}
?>

se $quanti si riferisce alla lunghezza della stringa testo
$quanti=strlen($data);
 
Geniale

devo tenere a mente i commenti anche perchè alla fine dovrebbe essere smpre quello il concetto

Grazie :beer:

Sopratutto della rapidità

sono che ci sono

se il risultato di quest'array vorrei inserirlo nel database Mysql?
 
ciao

PHP:
<?php
//....
//$d[$indice]
foreach($d as $valore){
	$query="INSERT INTO tabella(pinco) VALUE('".$valore."')";
	mysql_query($query);
}
//....
?>
 
sei un grande :cool:

dato che mi servirà ancora una mano su questo file txt posso postare sempre qui o apro un altro thread?
 
ciao

PHP:
<?php
//....
//$d[$indice]
foreach($d as $valore){
	$query="INSERT INTO tabella(pinco) VALUE('".$valore."')";
	mysql_query($query);
}
//....
?>

c'è una cosa che non capisco non inserisce

allora dopo il codice da te gentilmente modificato ho aggiunto una stringa

PHP:
			$sq=trim(str_replace($k."=","",$d[$indice])); //toglie il numeretto davanti il nome della squadra


echo $sq." <br />";

perchè in $d c'era 1=parola (fino a $qaunti) e voglio togliere quel '1='

quando vado ad inserire nel database però mi inserisce ovviamente tuta la stringa ma lavorando fuori dal foreach non mi riconosce più $sq

PHP:
foreach($sq as $valore){

mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");

    $query="INSERT INTO tabella VALUE('','".$valore."','".$k."','eastern')";
    mysql_query($query);
} 	
}

in rpatica usando foreach($das $valore){ mi inserisce tutta la stringa e $k mi da l'ultimo valore +1 cm più di k il problema è la stringa. Avevo già affrontato questo problema ne sono sicuro(quasi).

Difatti sono sciuro che dipende dal foreach precedente che una volta chiusa la prentesi del foreach il dato resta lì.

0:)
 
Risolto inserendo dopo

PHP:
 $sq=trim(str_replace($k."=","",$d[$indice]));

l'inserimento
PHP:
  $query="INSERT INTO tabella VALUE('','{$sq}','{$k}','$comp')";
    mysql_query($query);

e sopratutto aprendo la connessione al databse prima del foreach. Già una volta mi fece sto scherzo.

:beer:
 

Discussioni simili