Fonction php
Résolu
                    
        
     
             
                    crazyghandi
    
        
    
                    Messages postés
            
                
     
             
            323
        
            
                                    Statut
            Membre
                    
                -
                                     
crazyghandi Messages postés 323 Statut Membre -
        crazyghandi Messages postés 323 Statut Membre -
        Bonjour, 
Je voudrais charger une structure depuis un fichier texte a l'aide d'une fonction :
la fonction :
function load_bdd() {
$tab = file("data.txt");
$offre_nb = 0;
$i = 0;
while(!empty($tab[$i])) {
$bdd[$offre_nb]['ref'] = $tab[$i];$i++;
$bdd[$offre_nb]['ville'] = $tab[$i];$i++;
$bdd[$offre_nb]['categorie'] = $tab[$i];$i++;
$bdd[$offre_nb]['activite'] = $tab[$i];$i++;
$bdd[$offre_nb]['prix'] = $tab[$i];$i++;
$bdd[$offre_nb]['date'] = $tab[$i];$i++;
$bdd[$offre_nb]['type'] = $tab[$i];$i++;
$offre_nb++;
}
return $offre_nb;
}
et l'appel :
<?php
include "fonctions.php";
$offre_nb = load_bdd();
echo $offre_nb;
echo $bdd[0]['ref'];
?>
il me sort bien 3 offres, ce qui est juste, mais bien evidemment l'erreur unidentified index : bdd
alors comment renvoyer la structure bdd chargee avec les infos ?
Pour ceux qui se posent la question, la structure a charger est si petite qu'elle ne vaut pas la peine qu'on s'embete avec du SQL (tout au plus une 20aine d'entrees avec 6 ou 7 champs par entree)
Merci d'avance
                
            
                
    
    
    
        Je voudrais charger une structure depuis un fichier texte a l'aide d'une fonction :
la fonction :
function load_bdd() {
$tab = file("data.txt");
$offre_nb = 0;
$i = 0;
while(!empty($tab[$i])) {
$bdd[$offre_nb]['ref'] = $tab[$i];$i++;
$bdd[$offre_nb]['ville'] = $tab[$i];$i++;
$bdd[$offre_nb]['categorie'] = $tab[$i];$i++;
$bdd[$offre_nb]['activite'] = $tab[$i];$i++;
$bdd[$offre_nb]['prix'] = $tab[$i];$i++;
$bdd[$offre_nb]['date'] = $tab[$i];$i++;
$bdd[$offre_nb]['type'] = $tab[$i];$i++;
$offre_nb++;
}
return $offre_nb;
}
et l'appel :
<?php
include "fonctions.php";
$offre_nb = load_bdd();
echo $offre_nb;
echo $bdd[0]['ref'];
?>
il me sort bien 3 offres, ce qui est juste, mais bien evidemment l'erreur unidentified index : bdd
alors comment renvoyer la structure bdd chargee avec les infos ?
Pour ceux qui se posent la question, la structure a charger est si petite qu'elle ne vaut pas la peine qu'on s'embete avec du SQL (tout au plus une 20aine d'entrees avec 6 ou 7 champs par entree)
Merci d'avance
        A voir également:         
- Fonction php
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Expert php pinterest - Télécharger - Langages
5 réponses
                        
                    Bonsoir,
des erreurs d eprincipe:
esayes comme ça:
@lain
    
                des erreurs d eprincipe:
esayes comme ça:
<?php
function load_bdd($fichier) {
	$tab = file($fichier);
	$offre_nb = 0;
	$i = 0;
	while(!empty($tab[$i])) {
		$bdd[$offre_nb]['ref'] = $tab[$i];$i++;
		$bdd[$offre_nb]['ville'] = $tab[$i];$i++;
		$bdd[$offre_nb]['categorie'] = $tab[$i];$i++;
		$bdd[$offre_nb]['activite'] = $tab[$i];$i++;
		$bdd[$offre_nb]['prix'] = $tab[$i];$i++;
		$bdd[$offre_nb]['date'] = $tab[$i];$i++;
		$bdd[$offre_nb]['type'] = $tab[$i];$i++;
		$offre_nb++;
	}
	return $bdd; //tu retournais un index de l'array
}
?>
et l'appel :
<?php
include "fonctions.php";
$bdd_retourne = load_bdd("data.txt");
//pour afficher u array il faut faire comme ça (en phase de TEST)
echo "<pre">;
print_r($bdd_retourne);
echo "</pre">;
// echo $bdd[0]['ref']; tu veux afficher une variable qui n'existe pas , car dans la fonction, donc  tu ne la "vois" pas en dehors
//apres pour parcourir ton array tu peux faire une boucle foreach
foreach($bdd_retourne as $cle=>$sous_array){
	//lu tu vas parcourir tous les sous array de $bdd avec $cle= les diff valeurs de $offre_nb et les sousarray correspondants 
	foreach($sous_array as $index=>$value){
	//la tu vas parcourir chacun des sous array avec $index= ref, ville etc et $value= leur valeurs correspondantes
		echo $index."  ".$value;"<br /">; //un exemple d'affichage
	}
}
?>
@lain
                        
                    Ok super merci beaucoup j'arrive a recuperer la structure
maintenant comment je recupere offre_nb? ya til un count ou sizeof en php ?
En revanche je n'ai pas tres bien compris votre maniere de recherche indexee, et en realite je ne connais pas l'instruction foreach.
Pouvez vous fournir une petite explication?
encore merci
    
                maintenant comment je recupere offre_nb? ya til un count ou sizeof en php ?
En revanche je n'ai pas tres bien compris votre maniere de recherche indexee, et en realite je ne connais pas l'instruction foreach.
Pouvez vous fournir une petite explication?
encore merci
    he bien la boucle foreach te permet de parcourir un array 
foreach ($array as $cle=>$value)
parcourt tout l'array et pour chaque cle de ton de ton array tu as la cle dans la variable $cle et la valeur dans la variable $value
donc pas besoin de sizeof
sinon sizeof($bdd) te donne le nombre se sous array $bdd[$offre_nb]
et sizeof($bdd[$offre_nb]) te donnes le nombre de valeurs en dessous dans ton cas ce sera 7 (ref, ville,categorie etc...)
@lain
    foreach ($array as $cle=>$value)
parcourt tout l'array et pour chaque cle de ton de ton array tu as la cle dans la variable $cle et la valeur dans la variable $value
donc pas besoin de sizeof
sinon sizeof($bdd) te donne le nombre se sous array $bdd[$offre_nb]
et sizeof($bdd[$offre_nb]) te donnes le nombre de valeurs en dessous dans ton cas ce sera 7 (ref, ville,categorie etc...)
@lain
                        
                    ok ca marche une derniere chose : j'ai bien fait attention de ne mettre aucun espace dans data.txt
toutefois
echo "|",$bdd[0]['categorie'],"|";
me donne : |valeur |
et kan je compare ca a par exemple une variable du moteur de recherche (post) qui fait :
|valeur|
forcement le moteur ne trouve rien
connaissant un peu de C j'ai essaye :
$l = strlen($bdd[0]['categorie']);
$bdd[0]['categorie'][$l-1] = "\0";
mais je n'ai pas l'impression que php compren "\0" comme caractere nul pour refermer une chaine de caracteres
des idees ?
encore merci
    
                toutefois
echo "|",$bdd[0]['categorie'],"|";
me donne : |valeur |
et kan je compare ca a par exemple une variable du moteur de recherche (post) qui fait :
|valeur|
forcement le moteur ne trouve rien
connaissant un peu de C j'ai essaye :
$l = strlen($bdd[0]['categorie']);
$bdd[0]['categorie'][$l-1] = "\0";
mais je n'ai pas l'impression que php compren "\0" comme caractere nul pour refermer une chaine de caracteres
des idees ?
encore merci
                        
                    trim($bdd[0]['categorie']);
echo "|".$bdd[0]['categorie']."|";
ca me donne toujours |valeur | donc fausse toujours le moteur de recherche
    
                echo "|".$bdd[0]['categorie']."|";
ca me donne toujours |valeur | donc fausse toujours le moteur de recherche
    regardes ce que tu fais:
trim($bdd[0]['categorie']);
echo "|".$bdd[0]['categorie']."|";
tu enleves les espaces de debut et fin par trim et tu utilises ensuite l'ancienne valeur avec les esapce, c'est pas bon!
si tu veux en deux ligne tu fais trim et tu utilises le resultat dans ton echo
    trim($bdd[0]['categorie']);
echo "|".$bdd[0]['categorie']."|";
tu enleves les espaces de debut et fin par trim et tu utilises ensuite l'ancienne valeur avec les esapce, c'est pas bon!
si tu veux en deux ligne tu fais trim et tu utilises le resultat dans ton echo
$valeur_affich=trim($bdd[0]['categorie']); echo "|".$valeur_affich."|";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question