Afficher résultat sous forme de lien [Résolu]

Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
- - Dernière réponse : erdoganak
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
- 19 oct. 2009 à 09:18
Bonjour, a tous je dispose de ce code qui me permet d'effectuer une recherche dans les tables mysql.

Je souhaiterai l'adapter pour rechercher des fichiers, et afficher les résultats trouvés sous forme de lien.

Comment puis je procéder?


<?php

$hostname_logon =  "localhost" ;   

$username_logon = "bob";  

$password_logon = "eponge";

$database_logon = "entreprise" ;  





   

//connexion base de donnée

 $connections = mysql_connect($hostname_logon, $username_logon, $password_logon) or die ( "Impossible de se connecter a la base de donnée" );

 //selection de la base de donnée

 mysql_select_db($database_logon) or die ( "Impossible de selectionner la base!" );





//nombre de resultat par page

$limit = 10;



// variable de recherche obtenue par url

  $Mot = $_POST['Mot'] ;

//trim whitespace from the stored variable

  $trimmed = trim($Mot ); 

//separation des mots-clés

  $trimmed_array = explode(" ",$trimmed);



// vérification, si vide affichage message

if ($trimmed == "") {

  $resultmsg =  "Search Error

Veuillez remplir le champ pour effectuer la recherche...

" ;

  }



// verification pour la recherche 

if (!isset($Mot )){

  $resultmsg =  "Search Error

Aucun paramètre! 

" ;

  }



  // Build SQL Query for each keyword entered

foreach ($trimmed_array as $trimm){

     

 // EDIT HERE and specify your table and field names for the SQL query

     $query = "SELECT * FROM pieces_jointes WHERE numero LIKE '%$trimm%' OR filename like '%$trimm%' OR description like '%$trimm%' ORDER BY numero  DESC" ; 

    

// Execute the query to  get number of rows that contain search kewords

     $numresults=mysql_query ($query);

     $row_num_links_main =mysql_num_rows ($numresults);



     // next determine if 's' has been passed to script, if not use 0.

     // 's' is a variable that gets set as we navigate the search result pages.

     if (empty($s)) {

         $s=0;

     }



      // now let's get results.

      $query .= " LIMIT $s,$limit" ;

      $numresults =mysql_query ($query) or die ( "Impossible d'executer la requête" );

      $row= mysql_fetch_array ($numresults);



      //store record id of every item that contains the keyword in the array we need to do this to avoid display of duplicate search result.

      do{

          $adid_array[] = $row[ 'numero' ];

      }while( $row= mysql_fetch_array($numresults));

 } 

 //end foreach





 

if($row_num_links_main 0 && $row_set_num 0){

   $resultmsg = "Résultat de la recherche pour : ". $trimmed."

Aucun résultat pour votre recherche

" ;

}

   //delete duplicate record id's from the array. To do this we will use array_unique function

   $tmparr = array_unique($adid_array);

   $i=0;

   foreach ($tmparr as $v) {

       $newarr[$i] = $v; 

       $i++;

   }



// Vous pouvez maintenant afficher les résultats renvoyés. Mais d'abord, nous allons afficher le formulaire de recherche

?>



<?php





// affiche la recherche de la personne

 if( isset ($resultmsg)){

  echo $resultmsg;

  exit();

 }else{

  echo "Résultat de la recherche pour : " . $Mot ;

 }

 

foreach($newarr as $value){

 

 // Renseignement de la table et du champ pour la requetes sql

$query_value "SELECT * FROM pieces_jointes WHERE numero '$value'";

 $num_value=mysql_query ($query_value);

 $row_linkcat= mysql_fetch_array ($num_value);

 $row_num_links= mysql_num_rows ($num_value);



//Nous allons mettre les mots retrouvé en gras pour cela nous utilisons la fonction preg_replace 

//Remplacement des champs



  $titlehigh = preg_replace ( "'($Mot )'si" , "  /*/ " , $row_linkcat[ 'numero' ] );

  $linkhigh  = preg_replace ( "'($Mot )'si" , " /*/" , $row_linkcat[ 'description' ] );

  $linkdesc =  preg_replace ( "'($Mot )'si" , "  /*/ " , $row_linkcat[ 'filename' ] );



foreach($trimmed_array as $trimm){

    if($trimm ! = 'b' ){

        $titlehigh =  preg_replace( "'($trimm)'si" ,  "  /*/ " , $titlehigh);

        $linkhigh  = preg_replace( "'($trimm)'si" , " /*/" , $linkhigh);

        $linkdesc =  preg_replace( "'($trimm)'si" ,  "  /*/ " , $linkdesc); 

     }

//end highlight



?>

 

<?php echo $titlehigh; ?>


<?php echo $linkhigh; ?>


<?php echo $linkdesc; ?>




 

<?php

}   //end foreach $trimmed_array 

   if($row_num_links_main > $limit){

   // next we need to do the links to other search result pages

      if ($s> =1) { // do not display previous link if 's' is '0'

        $prevs=($s-$limit);

         echo "
Previous " .$limit. "
";

      }

     // check to see if last page

     $slimit =$s+$limit;

       if (!($slimit >= $row_num_links_main) && $row_num_links_main!=1) {

     // not last page so display next link

          $n=$s+$limit;

           echo "
Next " .$limit. "
";

        }

    }

}  //end foreach $newarr

?>
Afficher la suite 

Votre réponse

20 réponses

Meilleure réponse
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
3
Merci
J'ai trouvé une alternative faut utiliser le type blob pour uploader le fichier sur mysql.
Et apres récuperrer la chose Par la suite

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de erdoganak
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Dernière intervention
30 août 2011
3
Merci
Sinon tu parcours tes fichiers un par un à la recherche des mots :

Lire des fichiers

Rechercher un mot (Il y a d'autres fonctions...)


_________________________________
Min iPomme

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Tonio_35
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Euh ouais mais non
Commenter la réponse de erdoganak
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Dernière intervention
30 août 2011
0
Merci
Ah bon... Bien si c'est non c'est non...


_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Je te remercie quand même de t'être intéressé.
Merci
Commenter la réponse de erdoganak
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Dernière intervention
30 août 2011
0
Merci
Mais ca fais pas trop grossir ta DB ton système ?

J'ai jamais oser me lancer dans l'ajout de fichier dans une DB MySQL... Je suis un peut frileux... Je réserve ca pour du oracle ou autre...

T'as des bonnes perf de recherche ?


_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Après réflexion, je me suis dit effectivement que ça pouvait faire lourd, d'envoyer directement les fichiers .
Mais c'est faisable.

J'ai décidé d'envoyer les fichiers dans des répertoires et de stocker seulement les chemins dans la base.

Et maintenant je cherche un moyen d'afficher, le chemin du fichier rechercher, sous forme de lien.
Commenter la réponse de erdoganak
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
[^^huh]
Commenter la réponse de erdoganak
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Dernière intervention
30 août 2011
0
Merci
Il faut que ça affiche le fichier si tu à entré son nom dans la recherche ?


_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Donc je recherche un mot par exemple, puis il m'affiche des résultats parmi ces résultats certains son des chemins de fichier je souhaiterai en fait les afficher sous forme de lien .

Avec un href ?? Nan ?
Commenter la réponse de erdoganak
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
C'est bon j'ai réussi a affiché sous forme de lien mais il n'est pas cliquable.

<?php echo '['.$row_linkcat['chemin'].' '.$row_linkcat['chemin'].']'; ?>
Commenter la réponse de erdoganak
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
help
Commenter la réponse de erdoganak
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Dernière intervention
30 août 2011
0
Merci
Comment ça pas cliquable ?
<?php
echo '['.$row_linkcat['chemin'].' '.$row_linkcat['chemin'].']';
?>

Semble correcte, après faut voir ce que te renvoie $row_linkcat['chemin']... ??? ... Et comment tu remplis cette variable auparavant...

_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Donc il renvoie le chemin du fichier sous forme de lien, mais je ne peux cliquer dessus pour l'ouvrir (clic gauche).
je peux seulement faire un clic droit et enregistrer sous.


Sinon je n'ai pas très bien saisie ta question, $row_linkcat['chemin'] est dans le code qui se trouve page 1.


note : je possède un petit code qui me permet d'uploader des fichiers, je dispose d'un textarea pour la description du fichier, j'envoie la description dans ma base mysql et le chemin du fichier avec...

En espérant avoir répondu a ta question

Merci ton aide,
Commenter la réponse de erdoganak
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
0
Merci
Salut,

Sinon je n'ai pas très bien saisie ta question, $row_linkcat['chemin'] est dans le code qui se trouve page 1


Ah bon ? où ça ?
Tu devrais regarder ce que donne le lien dans la source HTML générée ainsi que les balises qui l'entourent.

Qu'est ce que ça donne ?

Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Bonjour et merci,

Pour vos aides, alors

 $linkdesc = preg_replace ( "'($Mot )'si" , " /*/" , $row_linkcat[ 'filename' ] );


voila le $row_linkcat est a la ligne de $linkdesc
Commenter la réponse de erdoganak
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
0
Merci
Désolé mais $row_linkcat[ 'filename'] n'est pas $row_linkcat['chemin']
Sans savoir comment ce dernier est constitué il est impossible de t'aider.
As tu regardé le lien généré par ton code (via "afficher source") ?

Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Désolé mais $row_linkcat[ 'filename'] n'est pas $row_linkcat['chemin']
Sans savoir comment ce dernier est constitué il est impossible de t'aider.
As tu regardé le lien généré par ton code (via "afficher source") ?

Cordialement,


Kohntark -


Oui tu as raison $row_linkcat['filename'] n'est pas $row_linkcat['chemin']en fait j'ai remplacé le filename par chemin .

Je met les codes:

moteur de recherche qui fait aussi l'affichage mais ce n'est pas tout a fait ca encore.

<?php
$hostname_logon =  "localhost" ;   
$username_logon = "sponge";  
$password_logon = "bob";
$database_logon = "entreprise" ;  


   
//connexion base de donnée
 $connections = mysql_connect($hostname_logon, $username_logon, $password_logon) or die ( "Impossible de se connecter a la base de donnée" );
 //selection de la base de donnée
 mysql_select_db($database_logon) or die ( "Impossible de selectionner la base!" );


//nombre de resultat par page
$limit = 10;

// variable de recherche obtenue par url
  $Mot = $_POST['Mot'] ;
//trim whitespace from the stored variable
  $trimmed = trim($Mot ); 
//separation des mots-clés
  $trimmed_array = explode(" ",$trimmed);

// vérification, si vide affichage message
if ($trimmed == "") {
  $resultmsg =  "Search Error

Veuillez remplir le champ pour effectuer la recherche...

" ;
  }

// verification pour la recherche 
if (!isset($Mot )){
  $resultmsg =  "Search Error

Aucun paramètre! 

" ;
  }

  // Build SQL Query for each keyword entered
foreach ($trimmed_array as $trimm){
     
 // EDIT HERE and specify your table and field names for the SQL query
     $query = "SELECT * FROM pieces_jointes WHERE numero LIKE '%$trimm%' OR chemin like '%$trimm%' OR description like '%$trimm%' ORDER BY numero  DESC" ; 
    
// Execute the query to  get number of rows that contain search kewords
     $numresults=mysql_query ($query);
     $row_num_links_main =mysql_num_rows ($numresults);

     // voyons si 's' a bien été passé, si non 0 est utilisé.
     
 if (empty($s)) {
         $s=0;
     }

      // now let's get results.
      $query .= " LIMIT $s,$limit" ;
      $numresults =mysql_query ($query) or die ( "Impossible d'executer la requête" );
      $row= mysql_fetch_array ($numresults);

      //Ajout d'un id à chaque élément qui contient le mot clé, et ainsi éviter d'afficher les résultats double 
      do{
          $adid_array[] = $row[ 'numero' ];
      }while( $row= mysql_fetch_array($numresults));
 } 
 //end foreach

if($row_num_links_main 0 && $row_set_num 0){
   $resultmsg = "Résultat de la recherche pour : ". $trimmed."

Aucun résultat pour votre recherche

" ;
}
   //delete duplicate record id's from the array. To do this we will use array_unique function
   $tmparr = array_unique($adid_array);
   $i=0;
   foreach ($tmparr as $v) {
       $newarr[$i] = $v; 
       $i++;
   }

// Vous pouvez maintenant afficher les résultats renvoyés. Mais d'abord, nous allons afficher le formulaire de recherche
?>

<?php


// affiche la recherche de la personne
 if( isset ($resultmsg)){
  echo $resultmsg;
  exit();
 }else{
  echo "Résultat de la recherche pour : " . $Mot ;
 }
 
foreach($newarr as $value){
 
 // Renseignement de la table et du champ pour la requetes sql
$query_value "SELECT * FROM pieces_jointes WHERE numero '$value'";
 $num_value=mysql_query ($query_value);
 $row_linkcat= mysql_fetch_array ($num_value);
 $row_num_links= mysql_num_rows ($num_value);


 //Nous allons mettre les mots retrouvés en gras pour cela nous utilisons la fonction preg_replace, Remplacement des champs
  $titlehigh = preg_replace ( "'($Mot )'si" , "  /*/ " , $row_linkcat[ 'numero' ] );
  $linkhigh  =  preg_replace ( "'($Mot )'si" , " /*/" , $row_linkcat[ 'description' ] );
  $linkdesc =   preg_replace ( "'($Mot )'si" , "  /*/ " , $row_linkcat[ 'chemin' ] );

foreach($trimmed_array as $trimm){
    if($trimm ! = 'b' )
{
        $titlehigh =  preg_replace( "'($trimm)'si" ,  "  /*/ " , $titlehigh);
        $linkhigh  = preg_replace( "'($trimm)'si" , " /*/" , $linkhigh);
        $linkdesc =  preg_replace( "'($trimm)'si" ,  "  /*/ " , $linkdesc); 


}
//end highlight

?>
 
<?php echo $row_linkcat[ 'numero' ]; ?>
<?php echo $row_linkcat[ 'description' ]; ?>
<?php echo '['.$row_linkcat['chemin'].' '.$row_linkcat['chemin'].']'; ?>




 
<?php
}   //fin de $trimmed_array 
   if($row_num_links_main > $limit){
   
   // resultat dans une nouvelle page
      if ($s> =1) { // n'affiche rien si 's' vaut '0'
        $prevs=($s-$limit);
         echo "
Previous " .$limit. "
";
      }
     // vérification de la page
     $slimit =$s+$limit;
       if (!($slimit >= $row_num_links_main) && $row_num_links_main!=1) {
     // not last page so display next link
          $n=$s+$limit;
           echo "
Next " .$limit. "
";
        }
    }
} 


et l'upload
<?php
if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = $_POST['rep']; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie l'extension
    $type_file = $_FILES['fichier']['type'];

//si l'extension de fichier ne correspond pas aux critères de sauvegarder , affichage du message ci-dessous. 
    if( !strstr($type_file, 'application/msword') && !strstr($type_file, 'application/pdf') && !strstr($type_file, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') && !strstr($type_file, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') && !strstr($type_file, 'application/vnd.ms-excel') && !strstr($type_file, 'application/vnd.ms-powerpoint')
  )
    {
        exit("Vous devez sauvegarger un fichier de type  : .doc, .docx, .pdf, .ppt, .pptx, .xls, .xlsx) ");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];
    if( move_uploaded_file($tmp_file, $content_dir . $name_file) && isset($_POST['description']) ) //envoie le chemin du lien dans la base
    {
      
$commentaire = $_POST['description'];  
    $chemin=($content_dir . $name_file);


$commentaire=addslashes($commentaire);		
 $chemin=addslashes($chemin);
                if ($chemin!=NULL && $commentaire!=NULL)
                {			
mysql_connect("localhost","sponge","bob");
                        mysql_select_db("entreprise");

mysql_query("INSERT INTO pieces_jointes (description, chemin) VALUES('$commentaire' , '$chemin')") or die('l\'insertion du lien a échoué'.mysql_error());
                        mysql_close();
                }
  	}
else
{
    exit("Impossible de copier le fichier dans $content_dir");
}


}?>

<html>
<form method="post" enctype="multipart/form-data" action="upload.php">



<textarea name="description" id="description"></textarea>



 




<select name="rep">
<option value="file:///c:/wamp/www/test1/"> test1 </option> <!--a remplacer par l'adresse des dossiers -->
<option value="file:///c:/test2/"> test2 </option>
<option value="file:///c:/test3/"> test3 </option>
</select> 



  



</form>
</html>
Commenter la réponse de erdoganak
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
[^^huh]
Commenter la réponse de erdoganak
Messages postés
44
Date d'inscription
mercredi 9 septembre 2009
Dernière intervention
11 avril 2011
0
Merci
Personnes, pour résoudre ce problème ?
Commenter la réponse de erdoganak

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.