[RESOLU] function de recherche dans SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] function de recherche dans SQL

Re: [RESOLU] function de recherche dans SQL

par Saian » 06 avr. 2021, 11:23

Salut, tu n'as pas besoin de mettre le require dans la fonction, il suffit d'utiliser le mot clé global en déclarant la variable $pdo comme global au début de la fonction, ainsi php sait qu'il doit aller chercher la variable dans le scope global.
function chercheEmail($mail) {
    global $pdo;
https://www.php.net/manual/fr/language. ... .scope.php
Le require doit bien sur être présent dans la page dans le scope global.

Re: function de recherche dans SQL

par Figuedi » 03 avr. 2021, 20:42

Ok Ok je n'ai rien dit

$rowAll=chercheEmail($mail);
print_r($rowAll);

Re: function de recherche dans SQL

par Figuedi » 03 avr. 2021, 20:39

Oui d'accord j'accepte que le require de ma connexion PDO doit etre dans la fonction cela ne me dérange pas outre
mesure, mais bon ... elle est quand même lancée avant donc j'aurai cru que ... mais non d'accord

J'ai une fois le require intégrée dans la fonction
une autre erreur sur mon print_t $rowAll qui est une variable non connue à priori

Notice: Undefined variable: rowAll in /home/lesfigueci/www/P2/connexion.php on line 42

et là la variable est connue vu que c'est la valeur de retour de ma fonction non ?
<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);

require('membre.php');


function chercheEmail($mail){
	require('_connexion_pdo.php');
	$query = 'SELECT * FROM membres where email = "'.$mail.'" ;'; 
		try {
			$bdd_select = $pdo->prepare($query);
			$bdd_select->execute();
			$NbreData = $bdd_select->rowCount();    // nombre d'enregistrements (lignes)
			$rowAll = $bdd_select->fetchAll();      // tout dans le meme tableau
		} catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
	return ($rowAll);
}
if (isset($_POST['mail']))
   $mail = htmlspecialchars($_POST['mail']);
if (isset($_POST['mdp'])){
	$mdp = htmlspecialchars($_POST['mdp']);
	$mdp = hash('sha256',$_POST['mdp']);}
if (isset($_POST['mail'],$_POST['mdp'])){
	chercheEmail($mail);
	print_r($rowAll);
}

Re: function de recherche dans SQL

par or 1 » 03 avr. 2021, 19:22

la raison est donnée : "Notice: Undefined variable: pdo in /home/lesfigueci/www/P2/connexion.php on line 12"
https://www.php.net/manual/fr/language. ... .scope.php

function de recherche dans SQL

par Figuedi » 03 avr. 2021, 19:00

Bonjour,

j'ai une erreur en ligne 12
Notice: Undefined variable: pdo in /home/lesfigueci/www/P2/connexion.php on line 12

Fatal error: Uncaught Error: Call to a member function prepare() on null in /home/lesfigueci/www/P2/connexion.php:12 Stack trace: #0 /home/lesfigueci/www/P2/connexion.php(40): chercheEmail('*******@gmail.c...') #1 {main} thrown in /home/lesfigueci/www/P2/connexion.php on line 12

Alors que si je met en commentaire // chercheEmail($mail);
et que j'enleve les comentaires sur mon query et mon try cela fonctionne sauriez vous me dire pourquoi ?
require('_connexion_pdo.php');

function chercheEmail($mail){
	$query = 'SELECT * FROM membres where email = "'.$mail.'" ;'; 
		try {
			$bdd_select = $pdo->prepare($query);
			$bdd_select->execute();
			$NbreData = $bdd_select->rowCount();    // nombre d'enregistrements (lignes)
			$rowAll = $bdd_select->fetchAll();      // tout dans le meme tableau
		} catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
		
	return ($rowAll);
}



if (isset($_POST['mail']))
   $mail = htmlspecialchars($_POST['mail']);
if (isset($_POST['mdp'])){
	$mdp = htmlspecialchars($_POST['mdp']);
	$mdp = hash('sha256',$_POST['mdp']);}
if (isset($_POST['mail'],$_POST['mdp'])){
	/*
$query = 'SELECT * FROM membres where email = "'.$mail.'" ;'; 

  try {
    $bdd_select = $pdo->prepare($query);
    $bdd_select->execute();
    $NbreData = $bdd_select->rowCount();    // nombre d'enregistrements (lignes)
    $rowAll = $bdd_select->fetchAll();      // tout dans le meme tableau

  } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
*/
	chercheEmail($mail);