Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2008, 16h09   #1
Membre actif
 
Inscription : mars 2008
Messages : 211
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 211
Points : 165
Points : 165
Envoyer un message via MSN à Enhide
Par défaut [SQL] Insertion données dans SQL

Bonjour,

Comme vous vous en doutez surement, j'ai un problème. Je suis débutant donc j'attends plus des explications qu'un résultat.

Après avoir récupéré un fichier, l'avoir parsé, je récupère des données "brutes" ue j'aimerais insérer dans ma base sql.

Mon code qui récupère et parse le HTML :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
	Function recup_code($url_log){
        $file = fopen($url_log,"r");
        if(!$url_log){
			exit ('marche po');
		}
 
		$line ="";
        while(!feof($file)){
			$line .= fgets($file);
		}
		fclose($file);
        return $line;
	}
        if(isset($_POST['stats'])){
 
		$url = $_POST['url'];
		$login = $_POST['nom'];
		$mdp = $_POST['mdp'];
 
		$url = str_replace("http://","",$url);
		$url_log = substr_replace($url,'http://'.$login.':'.$mdp.'@', 0, 0);
 
		//ajout un / si répertoire à ouvrir
		//$url_log = $url_log."/";
 
		$code = recup_code($url_log);
 
		if(empty($code)){
			echo "<p>Impossible d'ouvrir le fichier</p>.\n";
			exit;
		}
		else{
			$code = explode ('<A NAME="TOPREFS"></A>', $code);
			$code = explode ('<A NAME="TOPSEARCH"></A>', $code[1]);
			$code = explode ('</TH>',$code[0]);
 
			//insertion du caractère qui servira de séparateur pour le prochain explode
			$code2  = str_replace ('<TD','¤<TD',$code[count($code)-2]);
 
			//Supprime les balises HTML
			$code2 = strip_tags($code2);
			$code = explode ('¤',$code2);
 
			for($i=0;$i<count($code);$i++){
				if($i%2==0){
					echo $code[$i]."¤";
				}
			}
 
		}
Les données :
Code :
1
2
3
4
5
6
 
14534
http://www.google.fr/search
 
5024
http://www.leguide.com/sb/leguide/recherche/str_MotCle/Surjeteuse/org/3/t/1/5050803.htm
J'aimerai les classer par couple hits:url pour pouvoir les insérer dans ma table.

Merci d'avance.

PS : si possible, ne donnez pas de script tout fait, j'ai cherché sans trouver mais je souhaite comprendre. merci
Enhide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 16h15   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 034
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 034
Points : 18 324
Points : 18 324
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par Enhide Voir le message
J'aimerai les classer par couple hits:url pour pouvoir les insérer dans ma table.
Classer des données dans une table n'a pas vraiment de sens.
En plus, si tu ajoutes des données plus tard, ton classement est fichu donc en gros ça ne sert à rien.

Ce sont les index sur la table qui te permettront d'extraire des données classées.

Donc ne t'embête pas à classer avant d'envoyer les données vers la table.
Envoie-les brut, l'index se fera tout seul.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 16h21   #3
Membre actif
 
Inscription : mars 2008
Messages : 211
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 211
Points : 165
Points : 165
Envoyer un message via MSN à Enhide
Par classer je n'entendais pas classer dans un quelconque ordre.

J'ai une table avec deux colonne, je veux simplement rentrer mes données dans cette table.

Code :
1
2
3
4
CREATE TABLE `stats_ref` (
  `hits` int(11) NOT NULL default '0',
  `url` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`url`)
Où bien sûr :

hits =>14534
url =>http://www.google.fr/search

Merci pour cette réponse si rapide.
Enhide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 16h32   #4
Membre du Club
 
Avatar de MikeV
 
Webmaster
Inscription : mai 2007
Messages : 93
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Canada

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : mai 2007
Messages : 93
Points : 57
Points : 57
Est-ce que tu as un message d'erreur ?
MikeV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 16h38   #5
Membre actif
 
Inscription : mars 2008
Messages : 211
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 211
Points : 165
Points : 165
Envoyer un message via MSN à Enhide
Je n'ai pas de message d'erreur puisque je cherche encore comment le faire.

Tout le code que j'ai fournis fonctionne parfaitement.
Enhide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2008, 17h48   #6
Membre actif
 
Inscription : mars 2008
Messages : 211
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 211
Points : 165
Points : 165
Envoyer un message via MSN à Enhide
Merci à ceux qui ont répondu mais j'ai fini par trouver : disons que mon colocataire m'énerve un peu, il a le don pour prendre le code que je galère à faire et à me le remplacer par deux lignes qui fonctionnent mieux que toute ma fonction

Mais ça va, il m'explique en même temps

Bon, sinon, voilà la solution :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
	if(isset($_POST['stats'])){
 
		$url = $_POST['url'];
		$login = $_POST['nom'];
		$mdp = $_POST['mdp'];
 
		$url = str_replace("http://","",$url);
		$url_log = substr_replace($url,'http://'.$login.':'.$mdp.'@', 0, 0);
 
		//ajout un / si répertoire à ouvrir
		//$url_log = $url_log."/";
 
		$code = recup_code($url_log);
 
		if(empty($code)){
			echo "<p>Impossible d'ouvrir le fichier</p>.\n";
			exit;
		}
		else{
			$code = explode ('<A NAME="TOPREFS"></A>', $code);
			$code = explode ('<A NAME="TOPSEARCH"></A>', $code[1]);
			$code = explode ('</TH>',$code[0]);
 
			//insertion du caractère qui servira de séparateur pour le prochaine explode
			$code2  = str_replace ('<TD','¤<TD',$code[count($code)-2]);
 
			//Supprime les balises HTML
			$code2 = strip_tags($code2);
			$code = explode ('¤',$code2);
			print_r ($code);
			for($i=2;$i<count($code);$i=$i+4){
				mysql_query("INSERT INTO stats_ref VALUES('".$code[$i-1]."','".$code[$i+2]."','".$code[$i]."') ON DUPLICATE KEY UPDATE hits=".$code[$i].",url='".$code[$i+2]."'");
				echo mysql_error();
	        }
		}
 
	}
Enhide est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h33.


 
 
 
 
Partenaires

Hébergement Web