Moteur de recherche presque fini :

Bonjour,
J'ai programmé avec quelques tutoriels un système de connexion a ma base de données tout est bon (fin, je pense), mais chaque fois que je fais une requête aucun élément ne s'affiche + je me demande s'il n'y a pas un moyen d'afficher les résultats sur une page différentes que celle en php car il y aura mes identifiants dedans.

CODE HTML :
<form method="post" action="connection.php">
</br><input type="text" name="titre" id="titre" size="20" maxlength="50" />
<input type="submit" value="Valider"/>
</form>


CODE PHP :
<?php
//La si j'ai bien compris je créer ma variable $requete
$requete = "SELECT id, titre from 'Pages'";
//je me connecte a mon serveur MySQL
$serveur = "serveur";
$utilisateur = "user";
$passe = "password";
$base = "base"
$connexion = MySQL_connect($serveur, $utilisateur, $passe);
//Je vérifie s'il n'y a pas d'erreur(s)
}
else
{
echo 'Erreur';
}
//Je choisi ma base de donnée
mysql_select_db($base);

//Et la normalement ca devrai afficher les informations reçu
while ($row = mysql_fetch_row($res)) {
echo '<tr>';

for ($j = 0; $j < count($row); $j++) {
echo '<td>';
echo ($row[$j] == NULL) ? '<i>NULL</i>' : $row[$j];
echo '</td>';
}

echo '</tr>';
}
?>





Merci d'avance, Herozine

5 réponses

  1. Modérateur
    Bonjour,

    1 - Tu peux séparer la page contenant la connexion à ta BDD du reste de ta page.
    Il te suffit ensuite d'en faire un INCLUDE lorsque tu en as besoin

    2 - Tu es passé par mysql .... hors .. avec les futurs versions de mysql il est conseillé de passer à mysqli ou à la PDO (encore mieux)

    3 - TU créés ta requête... ok
    .. tu te connectes à ta BDD ok
    .. tu choisis la base .. ok
    .. mais à quelle moment LANCES TU la requête ?

    Il te manque le $res = mysql_query($requete)

    0
    1. A merci pour ta réponse jordane45, peut tu me faire un exemple de connexion avec Mysqli, car je veux pas trop me re-tapé les 10 H de recherche sur internet si tu vois ce quie je veux dire.

      Merci encore, Herozine
      0
      1. Modérateur
        voici un tuto tout fait : https://codular.com/php-mysqli

        Sachant que tu peux utiliser deux syntaxes différentes :
        La forme objet :
        
        <?php
        $mysqli = @new mysqli('localhost', 'fake_user', 'my_password', 'my_db');
        
        // Fonctionne depuis PHP 5.2.9 et 5.3.0.
        if ($mysqli->connect_error) {
            die('Erreur de connexion : ' . $mysqli->connect_error);
        }else{
         echo " connexion OK !!";
        }
        ?>
        
        

        La forme procédurale :
        
        <?php
        $link = @mysqli_connect('localhost', 'fake_user', 'my_password', 'my_db');
        
        if (!$link) {
            die('Erreur de connexion : ' . mysqli_connect_error());
        }else{
           echo " connexion OK !!";
        }
        ?>
        
        
        0
      2. @jordane45Vraiment merci, je vais regardez ça demain et voir ce que ça donne, je garde la question active, et je posterai le code complet sur cet page.
        0
    2. J'ai fais tout comme il faut mais rien ne marche. pourrait tu aussi m'expliquer le système "include" merci d'avance.

      CODE HTML : (recherche.html)
      <form method="post" action="connection.php">
      </br><input type="text" name="requete" id="requete"  size="20" maxlength="50" />
      <input type="submit" value="Valider"/>
      </form>


      CODE PHP : (connection.php)
      <?php
      $bdd = mysqli_connect('serveur', 'user', 'pass', 'db');
      
      if($bdd = mysqli_connect('serveur', 'user', 'pass', 'db'))
      {
      	
      }
      else 
      {
      	echo 'Erreur'; 
      }
      
      $req_pre = mysqli_prepare($bdd, 'SELECT * FROM Pages WHERE titre = ?');
      
      mysqli_stmt_bind_param($req_pre, "s", $titre);
      
      $req_pre = mysqli_prepare($bdd, 'INSERT INTO page"s (titre, id, contenu) VALUES ( ?, ?, ?)');
      mysqli_stmt_bind_param($req_pre, "sid", $titre, $id, $contenu);
      
      mysqli_stmt_execute($req_pre); 
      
      
      mysqli_stmt_bind_result($req_pre, $donnees['titre'], $donnees['id'], $donnees['contenu']);
      
      mysqli_stmt_fetch($req_pre);
      
      while(mysqli_stmt_fetch($req_pre))
      {
            echo $donnees['titre'] . ", " . $donnees['id'] . " id," . $donnees['contenu'];
      }
      
      ?>
      




      Herozin
      0
      1. Modérateur
        Tu te fais une page connexion.php ( elle ne contiendra QUE les infos de connexion à ta BDD)
        <?php
        // Variables à remplacer par LES TIENNES 
        $hostname = 'localhost';
        $user = 'user';
        $pwd = 'pass';
        $dataBase = 'ma_database';
        
        // Connexion au serveur :
        $bdd= @new mysqli($hostname , $user , $pwd, $dataBase );
        
        // Fonctionne depuis PHP 5.2.9 et 5.3.0.
        if ($bdd->connect_error) {
            die('Erreur de connexion : ' . $mysqli->connect_error);
        }
        ?>
        


        Puis dans TES autres pages .. tu peux les INCLURE sans avoir à réécrire à chaque fois le code.

        recherche.html :
        <form method="post" action="pagederecherche.php">
        </br><input type="text" name="requete" id="requete"  size="20" maxlength="50" />
        <input type="submit" value="Valider"/>
        </form>
        


        pagederecherche.php :
        <?php
        session_start();
        
        // on inclus la page de connexion à la BDD:
        require_once('connexion.php'); 
        
        //Ensuite on peut utiliser la BDD pour faire des requêtes
        //-----------------------------------------------------------------------
        
        //on récupère les données venant de la page html...
        $titre = isset($_POST['requete'])?$_POST['requete']:NULL;
        
        $sql = "SELECT * FROM Pages WHERE titre = '?'";
        $req_pre = mysqli_prepare($bdd,$sql);
        //etc...
        ?>
        
        


        Après... si ça ne fonctionne toujours pas... penche toi sur l'utilisation des ECHO .. PRINT_R ... sur tes variables pour voir ce qu'elles contiennent.

        Penses aussi à tester tes requêtes directement dans ta BDD pour savoir si elles fonctionnent.
        0
        1. Merci je vais tester cela.
          0