variabili globali.......

lorenzo.211

Utente Attivo
28 Set 2009
41
0
0
Salve ragazzi,
ho fatto questo codice ceh prende i link da una pagina e gli salva in un database , la pagina da cui prendere i link è contenuta nalla variabile "url" e dopo che la funzione è eseguita l'url dovrebbe combiare in base ad un contatore, ma sembra che ogni volta che si esegue la funzione il contatore ritorni a 0 !!
ecco il codice
PHP:
<?php 

$contatore = 0;
global $contatore;

function ins(){

echo $contatore;

if ($contatore == 0){
	$url = "http://localhost:8888/prova.html";

}elseif ($contatore == 1){
	echo "ciao";
}




$input = @file_get_contents($url) or die('Could not access file: $url');

$regexp = '/<a([a-zA-Z0-9=" ]*)href="([A-Z:\/a-z0-9._-]*)"([a-zA-Z0-9=" ]*)>([a-zA-Z0-9., :;\/-_()<>!?]*)<\/a>/i';
preg_match_all($regexp, $input, $matches);
foreach($matches[2] as $match) 
{
    
$db_host = "localhost";
$db_user = "root";
$db_password = "root";
$db_name = "prova";


$db = mysql_connect($db_host, $db_user, $db_password);
  if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

  mysql_select_db($db_name, $db)
     or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$nome=$match;
global $nome;
$query="insert into utenti(nome) VALUES ('$nome')";
if (mysql_query($query, $db))
    echo "Inserimento corretto";
  else
    echo "Errore durante l'inserimento";
  

mysql_close($db); 
}
$contatore++;
echo $contatore;
ins();


}



ins();




?>

Grazie a tutti!
 
se ho capito bene quello che vuoi fare il contatore dovrebbe incrementarsi solo nel caso in cui la query viene eseguita, quindi dovresti mettere $contatore++ prima di mysql_close().
 
Credo che tu non abbia capito a che cosa serve rendere una variabile globale. Praticamente la rende visibile all'interno di una funzione oppure a un metodo di una classe. Esempio:
PHP:
<?php
$contatore = 15;

function stampa()
{
  // non visualizza niente
  echo $contatore;
}

stampa();
?>
Questa porzione di codice non visualizzerà a video proprio un bel niente, perché la variabile $contatore ha necessario di essere resa visibile così:
PHP:
<?php
$contatore = 15;

function stampa()
{
  global $contatore;

  // visualizza 15
  echo $contatore;
}

stampa();
?>
Hai capito adesso come si usano?
 
Un altro problema -.-"

Ho modificato un po il codice
PHP:
$contatore = 0;


function ins(){
global $contatore;
echo $contatore;

if ($contatore == 0){
	$url = "http://localhost:8888/prova.html";

}

if ($contatore >= 1){
	$ide=fopen("nome.txt","r");
	$ide=fread($ide,filesize("nome.txt"));
	$url = $ide;

}

echo $url;


$input = @file_get_contents($url) or die('Could not access file: $url');

$regexp = '/<a([a-zA-Z0-9=" ]*)href="([A-Z:\/a-z0-9._-]*)"([a-zA-Z0-9=" ]*)>([a-zA-Z0-9., :;\/-_()<>!?]*)<\/a>/i';
preg_match_all($regexp, $input, $matches);
foreach($matches[2] as $match) 
{
    
$db_host = "localhost";
$db_user = "root";
$db_password = "root";
$db_name = "prova";


$db = mysql_connect($db_host, $db_user, $db_password);
  if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

  mysql_select_db($db_name, $db)
     or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$nome=$match;

$identificatore = fopen("nome.txt", "w");

// Scrivo i dati nel file
fwrite($identificatore, $nome);

// Chiudo il file
fclose($identificatore);
echo $ide;
$query="insert into utenti(nome) VALUES ('$nome')";
if (mysql_query($query, $db))
    echo "Inserimento corretto";
  else
    echo "Errore durante l'inserimento";
  

mysql_close($db); 
}
$contatore++;

ins();

}



ins();




?>

Perchè qui:
PHP:
if ($contatore >= 1){
	$ide=fopen("nome.txt","r");
	$ide=fread($ide,filesize("nome.txt"));
	$url = $ide;

dopo che assegno $url a $ide non riesce più a trovarmi l'url con l'errore "Could not access file: $url'".
Anche se assegno $url a un altro nome tipo "www.google.it " non funziona :(
 
Il file è nella stessa directory del file .php che ho postato sopra...
 
Ultima modifica:
Aluorrraaa...
quando $contatore è uguale ad 0 $url è uguale al link "http://localhost..."
quando $contatore è uguale ad 1 $url deve essere uguale al link contenuto nel file "nome.txt"
 

Discussioni simili