2 erreurs

Bonjour,

J'ai ces deux erreurs :

-Warning: require(config/database.php): failed to open stream: No such file or directory in C:\wamp\www\rs\pages\register.php on line 100

-Fatal error: require(): Failed opening required 'config/database.php' (include_path='.;C:\php\pear') in C:\wamp\www\rs\pages\register.php on line 100
Call Stack

Mon register.php :

<h1>Inscription</h1>

<?php	  
if (!isset($_POST['submit']))
{
?>

<form method="POST" action="">

   <label for='sexe'>Sexe</label>
   <select name="sexe">
           <?php echo isset($sexe)?'<option value='.$sexe.'>'.$sexe.'</option>':""; ?>
           <?php echo $sexe != 'Homme' ?'<option value="Homme">Homme</option>':""; ?>
           <?php echo $sexe != 'Femme' ?'<option value="Femme">Femme</option>':""; ?>          
 </select><br /><br/>
 
 <label for="pseudo">Votre pseudo : </label>
 <input type="text" name ="pseudo" value='<?php echo isset($pseudo) ? $pseudo :""; ?>'><br />
 
 <label for="password">Votre password : </label>
 <input type="password" name ="password"><br />
 
 <label for="repeatpassword">Repetez votre password : </label>
 <input type="password" name ="repeatpassword"><br />
 
 <label for="email">Veuillez saisir votre email : </label>
 <input type="text" name ="email" value='<?php echo isset($email) ? $email :""; ?>'><br />
 
 <label for="apropos">A propos de vous </label>
 <textarea rows="6" cols="30" name="apropos"><?php echo isset($apropos) ? $apropos : ""; ?></textarea><br /><br />
 
 <input type="submit" value="S'inscrire" name="submit">
 
</form>

<?php

}
else
{
              
		$sexe = htmlspecialchars(strip_tags($_POST['sexe']));
        $pseudo = htmlspecialchars(strip_tags($_POST['pseudo']));
        $password = htmlspecialchars(strip_tags($_POST['password']));
        $repeatpassword = htmlspecialchars(strip_tags($_POST['repeatpassword']));
        $email = htmlspecialchars(strip_tags($_POST['email']));
        $apropos = htmlspecialchars(strip_tags($_POST['apropos']));       
    
    
    if(empty($pseudo))
       {
      $errors[] ="Veuillez saisir un pseudo";
    }
    
    if (empty($password))
    {
      $errors[] ="Veuillez saisir un password";
    }
    
    if($password != $repeatpassword)
    {
     $errors[] = "Vos deux password doivent être identiques";
    }
    
    if(!filter_var($email,FILTER_VALIDATE_EMAIL))
    {
     $errors[] = "Votre adresse email n'est pas correcte";     
    }
    
    if(empty($apropos))
    {
     $errors[] = "Veuillez vous décrire en quelques lignes"; 	 
    }
	
	if(pseudo_existe($email) == 1)
	{
	 $errors[] = "Ce pseudo n'est pas disponible";
    }
	
	if(email_existe($email) == 1)
	{
	 $errors[] = "Cette adresse email existe déjà <br> avez vous oublié votre <a href='#'>password? </a>";
	}
	
    if(!empty($errors))
    {
     foreach($errors as $error)
     {
      echo "<div class='error'>".$error."</div>";
     }
      } 
	   inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos);
                        die('Inscription terminée, vous pouvez vous <a href=\'index.php?page=login\'>connecter</a>');
}
?>


<?php

require('config/database.php');
require('includes/functions.php');

 
 //si le formulaire a été soumis
 if(isset($_POST['register'])) {

  // si tous les champs sont remplis
  if(not_empty(['name', 'pseudo', 'email', 'password', 'password_confirm'])) {

   $errors = []; //tableau contenant l'ensemble des erreurs

   extract($_POST);

  

   //si le pseudo est deja dans la bdd
   if(is_already_in_use('pseudo', $pseudo, 'users')) {
    $errors[] = "Le pseudonyme est déja utilisé.";
   }

   //si l'adresse mail est deja dans la bdd
   if(is_already_in_use('email', $email, 'users')) {
    $errors[] = "L'adresse e-mail est déja utilisée.";
   }


   //si il y a 0 erreur
   if(count($errors) == 0) {

    
        //enregistrement du membre dans la base de donnée
        $q = $db->prepare('INSERT INTO users(name, pseudo, email, password)
                  VALUES(:name, :pseudo, :email, :password)');
        $q->execute([

         'name' => $name,
         'pseudo' => $pseudo,
         'email' => $email,
         'password' => ($password)

        ]);

        redirect('index.php');

   } else {
    save_input_data();
   }

  } else {

   //si tous les champs ne sont pas remplis
   $errors[] = "Veuillez remplir s'il vous plaît tous les champs";
   save_input_data();


  }

 } else {
  clear_input_data();
 }


?>


<?php require('views/register.views.php'); ?>


Mon functions.php :

<?php
try 
{
  $bdd = new PDO ('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
}
catch(Exception $e) 
{
  die('Erreur : '.$e->getMessage());
}

function inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos)
{
  Global $bdd;
  
  $password=sha1($password);
  $sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,apropos)
          VALUES (:pseudo,:password,:email,:sexe,:apropos)";
  $result = $bdd->prepare($sql);
  $result->bindValue('pseudo', $pseudo, PDO::PARAM_STR);
  $result->bindValue('password', $password, PDO::PARAM_STR);
  $result->bindValue('email', $email, PDO::PARAM_STR);
  $result->bindValue('sexe', $sexe, PDO::PARAM_STR);
  $result->bindValue('apropos', $apropos, PDO::PARAM_STR);
  $result->execute();
}



//vérifie que les données ne sont pas en double dans la base de données
if(!function_exists('is_already_in_use')) {
 function is_already_in_use($field, $value, $table) {
  global $db;

  $q = $db->prepare("SELECT id FROM $table WHERE $field = ?");
  $q->execute([$value]);

  $count = $q->rowCount();

  $q->closeCursor();

  return $count;
 }
}
 


Que faire ? Merci d'avance.

2 réponses

  1. Modérateur
    Simplement, tu as mis un chemin relatif et ça part pas du bon endroit, essayes d'ajouter des "../" devant le chemin et de voir (cela permet de remonter au dossier parent).
    1. Pour lequel ? require('config/database.php'); ou require('includes/functions.php'); ? ou require('views/register.views.php') ?
    2. Modérateur
      Le require qui te pose pb, je pense que si un de tes 3 require échoue, les autres aussi échoueront (mais comme l'interpréteur s'arrête à la première erreur ..)
    3. Meme problème :( Warning: require(../config/database.php): failed to open stream: No such file or directory in C:\wamp\www\rs\pages\register.php on line 100 et pour l'autre aussi
    4. Autre solution ? :)
    5. Modérateur
      C:\wamp\www\rs\pages\register.php
      ../config/database.php
      Donc ton database.php serait dans :
      C:\wamp\www\rs\config\database.php
      ?
  2. Modérateur

    dans mon www y a pas de dossier "config


    Il faut que tu comprennes à quoi servent les lignes de code que tu copie/colle bêtement.....
    Commence par lire ceci :
    https://www.php.net/manual/fr/function.require.php

    Ensuite,
     require("config/database.php")

    Indique que le fichier database.php ... qui se trouve dans le dossier config est NECESSAIRE !
    Si tu n'as pas de dossier config ... tu changes le chemin par TON dossier ... celui qui contient TON fichier de connexion à ta BDD ( peu importe son nom ! )

    Si tu as un fichier de connexion à ta BDD qui s'appelle par exemple : connexionBDD.php ... et qu'il se trouve dans le même dossier que ta page "pages\register.php" .. ... tu remplaces donc la ligne de code par :
     require("./connexionBDD.php")

    Si par contre ce fichier se trouve dans ton répertoire RS ... tu peux écrire :
     require("../connexionBDD.php")


    Avant de poursuivre le développement de ton site web .. je t'invite fortement à te documenter sur ce que sont les LIENS RELATIFS et à leur fonctionnement....
    Tu peux aussi t'intéresser à l'instruction php : __DIR__

    1. j'ai mis "require('../functions.php');" mais j'ai Warning: require(../functions.php): failed to open stream: No such file or directory in C:\wamp\www\rs\pages\register.php on line 100
    2. Modérateur
      @Zakarya93Ton fichier "functions.php" ... il se trouve où dans ton arboréscence ??
    3. dans mon dossier functions, je l'ai renommé "register.functions.php" et j'ai mis aussi connect.php dans le dossier
    4. Modérateur
      @Zakarya93Et tu l'appelles depuis quelle page ?
      Index.php ... ou register.php?
      (register.php est appellé directement ou est un INCLUDE dans ta page index ?? )

      As tu essayé de simplement faire :
      require_once('functions/register.functions.php');
      


      Au cas où ça ne fonctionnerait toujours pas;
      merci d'ajouter ce code dans ta page et de nous en dire le résultat :
      echo " FILE : " . __FILE__ ;
      echo " DIR : " . __DIR__;
      echo "php_self :".$_SERVER["PHP_SELF"];