Problème d'erreur sur un fichier php

Résolu/Fermé
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 - Modifié le 21 août 2018 à 19:42
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 12 sept. 2018 à 12:48
BONJOUR
j'ai écrit sur la base du site du zero un programme en php que je vous envoie ci-dessous
<?php
try
{
$bdd= new PDO('mysql:host=localhost;dbname=test','root','');
}
catch (Exception $e)
{
 die('Erreur : '.$e->getMessage());
}
$req =$bdd->prepare('SELECT nom, prix FROM jeux_video WHERE
possesseur = ? AND prix <= ? ORDER BY prix');
$req->execute(array($_GET['possesseur'],$_GET['prix']));
echo '<ul>';
while ($donnees= $req->fetch())
{
echo '<li>'.$donnees['nom'].' ('.$donnees['prix'].'
EUR)</li>';
}
echo '</ul>';
$req ->closeCursor();
?>


EDIT : Ajout des balises de code

Je reçois un message d'erreur :
) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined index: possesseur in C:\wamp\www\ASTUCESVBAEXCEL\selection_jeux.php on line 12
Call Stack
# Time Memory Function Location
1 0.0007 249952 {main}( ) ..\selection_jeux.php:0

( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined index: prix in C:\wamp\www\ASTUCESVBAEXCEL\selection_jeux.php on line 12
Call Stack
# Time Memory Function Location
1 0.0007 249952 {main}( ) ..\selection_jeux.php:0

D'avance merci pour votre aide. Nicolas
A voir également:

11 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 21 août 2018 à 21:05
Bonjour (si si .. on commence par ça ici.)

Ensuite pour poster ton code, pense à utiliser les BALISES DE CODE
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Puis, pense à lire (et appliquer) ce qui se trouve dans les liens suivants :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Et enfin .. ton code revu et corrigé :
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexion à la bdd
// il serait mieux de la placer dans un fichier à part que tu n'aurais qu'à inclure dans 
// les pages où tu en as besoin...
try{
 $bdd =new PDO('mysql:host=localhost;dbname=test; charset=utf8', 'root', '');
 // Activation des erreurs PDO
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}

//Récupération propre des variables AVANT de les utiliser
$possesseur = !empty($_GET['possesseur']) ? $_GET['possesseur'] : NULL;
$prix = !empty($_GET['prix']) ? $_GET['prix'] : NULL;

if($prix && $possesseur){
  //préparation de la requête et des variables
   $sql = "SELECT nom, prix 
          FROM jeux_video 
          WHERE possesseur = ? 
          AND prix <= ? 
          ORDER BY prix";
   $datas = array($possesseur, $prix);

  //Execution de la requete
  try{
    $requete = $bdd -> prepare($sql) ;
    $requete->execute($datas) ;
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
    print_r($datas);
  }

  echo '<ul>';
  while ($donnees= $requete->fetch()) {
    echo '<li>'.$donnees['nom'].' ('.$donnees['prix'].' EUR)</li>';
  }
  echo '</ul>';
  $requete->closeCursor();
}



0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
21 août 2018 à 20:27
pardon pour ne pas avoir dit bonjour. je vais tester vos fichiers que vous m'avez envoyés. Merci pour votre aide. Nicolas
0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
21 août 2018 à 20:33
Bonsoir Jordane45. J'ai bien testé ton code mais php me renvoie une page blanche. A quoi est ce du à ton avis ? Merci pour ta réponse .
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
21 août 2018 à 21:04
Vu que j'ai placé un IF pour m'assurer que tu avais bien tes variables... si tu elles ne sont pas présentes dans ton URL c'est normal que la page reste blanche.
Comment accèdes tu à cette page ? Quelle est son URL ?
Tu passes par un formulaire ? Tu es sûr d'être en GET ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
21 août 2018 à 21:06
Au pire, ajoute un ELSE pour voir
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexion à la bdd
// il serait mieux de la placer dans un fichier à part que tu n'aurais qu'à inclure dans 
// les pages où tu en as besoin...
try{
 $bdd =new PDO('mysql:host=localhost;dbname=test; charset=utf8', 'root', '');
 // Activation des erreurs PDO
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}

//Récupération propre des variables AVANT de les utiliser
$possesseur = !empty($_GET['possesseur']) ? $_GET['possesseur'] : NULL;
$prix = !empty($_GET['prix']) ? $_GET['prix'] : NULL;

if($prix && $possesseur){
  //préparation de la requête et des variables
   $sql = "SELECT nom, prix 
          FROM jeux_video 
          WHERE possesseur = ? 
          AND prix <= ? 
          ORDER BY prix";
   $datas = array($possesseur, $prix);

  //Execution de la requete
  try{
    $requete = $bdd -> prepare($sql) ;
    $requete->execute($datas) ;
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
    print_r($datas);
  }

  echo '<ul>';
  while ($donnees= $requete->fetch()) {
    echo '<li>'.$donnees['nom'].' ('.$donnees['prix'].' EUR)</li>';
  }
  echo '</ul>';
  $requete->closeCursor();

}else{
  echo "<pre>Variables GET :<br>";
  print_r($_GET);
  echo " </pre> <pre> Variables POST ? <br>";
  print_r($_POST);
  echo "</pre>";
}

0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
21 août 2018 à 22:36
Pour l'instant mon site est sur mon pc en local. L'adresse est : http://localhost/astucesvbaexcel/index.php.
Mon site n'est pas encore en ligne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
21 août 2018 à 22:43
J'ai inclus tes nouvelles instructions de la requête et j'ai le message d'erreur suivant :

Variables GET :
Array
(
)

Variables POST ?
Array
(
)

Je ne voie pas où est l'erreur. Merci d'avance pour ton aide. Nicolas
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
21 août 2018 à 23:17
Ben
.tu n'as aucune variable get...
http://localhost/astucesvbaexcel/index.php?possesseur=toto&prix=10
0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
22 août 2018 à 19:12
bonjour

mon niveau est plutôt faible en php. Qu'est ce que tu appelles variable get ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
22 août 2018 à 19:29
Ce que j'ai ecrit dans l'exemple que je t'ai donné... des variables dans l'URL
0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
6 sept. 2018 à 19:18
Bonjour. J'ai un petit problème. J'ai préparé une requête préparée que j'ai exécutée. Le résultat s'affiche mais avec une erreur en ligne 12. Je vous envoie la requête et son résultat. Merci d'avance pour votre aide.


<?php
try
{https://forums.commentcamarche.net/forum/affich-35538076-probleme-d-erreur-sur-un-fichier-php#p35539987
$bdd= new PDO('mysql:host=localhost;dbname=test','root','');
}
catch (Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$req =$bdd->prepare('SELECT nom, prix FROM jeux_video WHERE
possesseur = "Patrick" AND prix <= 60 ORDER BY prix');
$req->execute(array($_GET['possesseur'],$_GET['prix_max']));
echo '<ul>';
while ($donnees= $req->fetch())
{
echo '<li>'.$donnees['nom'].' ('.$donnees['prix'].'
EUR)</li>';
}
echo '</ul>';
$req ->closeCursor();
?>




( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined index: possesseur in C:\wamp\www\ASTUCESVBAEXCEL\selection_jeux.php on line 12
Call Stack
# Time Memory Function Location
1 0.0006 250312 {main}( ) ..\selection_jeux.php:0

( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined index: prix_max in C:\wamp\www\ASTUCESVBAEXCEL\selection_jeux.php on line 12
Call Stack
# Time Memory Function Location
1 0.0006 250312 {main}( ) ..\selection_jeux.php:0

Sonic (2 EUR)
Street Fighter 2 (10 EUR)
Aladin (10 EUR)
NBA 2k (12 EUR)
X-FILES (25 EUR)
Actua Soccer 3 (30 EUR)
Star Wars : Jedi outcast (33 EUR)
Final Fantasy X (40 EUR)
Splinter Cell (53 EUR)
Soul Calibur 2 (54 EUR)
Pro Evolution Soccer 3 (59 EUR)
Dead or Alive Xtreme Beach Volley Ball (60 EUR)
Dead or Alive (60 EUR)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 sept. 2018 à 19:59
0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
11 sept. 2018 à 19:33
Bonjour,

Pour utiliser des ISSET on m'a proposé le code ci-joint:

//avec ISSET
//Si la variable $_POST['truc'] existe, alors $truc = $_POST['truc'] sinon elle vaut NULL
$truc = isset($_POST['truc']) ? $_POST['truc'] : NULL;

//ou avec !EMPTY()
//Si la variable $_POST['truc'] existe et n'est pas vide, alors $truc = $_POST['truc'] sinon elle vaut NULL
$truc = !empty($_POST['truc']) ? $_POST['truc'] : NULL;




Pourrait-tu m'expliquer les ?

Merci d'avance.

Nicolas
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
11 sept. 2018 à 19:53
C'est l'écriture ternaire
Une sorte de if .... tel qu'explique

Si la variable $_POST['truc'] existe et n'est pas vide, alors $truc = $_POST['truc'] sinon elle vaut NULL
0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
Modifié le 11 sept. 2018 à 21:59
Bonsoir,

j'ai un peu modifié le code précédent en ajoutant un ISSET

J'ai le résultat suivant :
<?php
try
{
$bdd= new PDO('mysql:host=localhost;dbname=test','root','');
}
catch (Exception $e)
{
 die('Erreur : '.$e->getMessage());
}
if (isset($_GET['nom'])AND isset($_GET['prix']))
{ 
$req =$bdd->prepare('SELECT nom, prix FROM jeux_video WHERE
possesseur = \'Patrick\' AND prix <= 60 ORDER BY prix');
$req->execute(array($_GET['possesseur'],$_GET['prix_max']));
echo '<ul>';
while ($donnees= $req->fetch())
{
echo '<li>'.$donnees['nom'].' ('.$donnees['prix'].'
EUR)</li>';
}
echo '</ul>';
$req ->closeCursor();
}
echo 'il faut renseigner un nom et un prix '?>


EDIT : Ajout des balises de code ( encore..... )
Le problème c'est qu'il me renvoie le message suivant : il faut renseigner un nom et un prix

Merci pour ton aide.

Nicolas
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 11 sept. 2018 à 22:08
Comme déjà indiqué à plusieurs reprises :
pour poster ton code, pense à utiliser les BALISES DE CODE
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Ensuite, je t'ai donné des liens... tu ne les as pas lu visiblement.....

Donc... encore une fois :
pense à lire (et appliquer) ce qui se trouve dans les liens suivants :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs


Et dans ton code... tu as oublié le ELSE

Voici ton code corrigé

<?php
//---------------------------------------------------------//
//affichage des erreurs PHP
//---------------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//---------------------------------------------------------//
//connexion à la BDD ET activation des erreurs PDO
//---------------------------------------------------------//
try{
  $bdd =new PDO('mysql:host=localhost;dbname=test; charset=utf8', 'root', '');
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
//---------------------------------------------------------//
// Récupération PROPRE des variables AVANT de les utiliser
//---------------------------------------------------------//
$nom = !empty($_GET['nom']) ? $_GET['nom'] : NULL;
$prix = !empty($_GET['prix']) ? $_GET['prix'] : NULL;

if ($nom && $prix) { 
  $sql = 'SELECT nom, prix 
          FROM jeux_video 
          WHERE  possesseur = :nom 
             AND prix <= :prix
          ORDER BY prix';
  $datas = array(':nom'=>$nom, ':prix'=>$prix);

  //Execution de la requete
  try{
    $requete = $bdd -> prepare($sql) ;
    $requete->execute($datas);
    $resultat = $requete->fetchAll(); //on stocke le resultat dans un array
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
    print_r($datas);
  }
  
  
  if(!empty($resultat)){
    echo '<ul>';
    foreach($resultat as $R){
      echo '<li>'.$R['nom'].' ('.$R['prix'].'EUR)</li>';
    }
    echo '</ul>';
  
  }

}else{
  echo 'il faut renseigner un nom et un prix ';
}
?>

0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
11 sept. 2018 à 22:44
Merci Jordan pour ton aide

J'ai compris ce que voulaient dire les ?. C'est lié aux structures ternaires des if
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
11 sept. 2018 à 23:22
Tu comprends ce qu'on t'explique ( https://forums.commentcamarche.net/forum/affich-35538076-probleme-d-erreur-sur-un-fichier-php#13 ) ... c'est déjà un bon début.
0
NICOLAS3377 Messages postés 52 Date d'inscription samedi 20 août 2016 Statut Membre Dernière intervention 29 mars 2023 1
12 sept. 2018 à 12:26
Je préfère comprendre à mon rythme contrairement à la majorité qui fait semblant de comprendre.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
12 sept. 2018 à 12:48
En attendant, si la réponse https://forums.commentcamarche.net/forum/affich-35538076-probleme-d-erreur-sur-un-fichier-php#14 a solutionné ton souci, pense à mettre le sujet en résolu stp.
(via l'icone de roue crantée qui se situe en haut, à droite du titre de ta question).
Bonne journée.
0