IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requête fetch : impossible de faire correspondre mon fetch avec ma variable


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    correction et mise en page
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : correction et mise en page
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Par défaut requête fetch : impossible de faire correspondre mon fetch avec ma variable
    Bonjour,

    Je suis super novice (BTS SIO SLAM commencé en septembre en reconversion professionnelle) mais j'essaie au max de me débrouiller avec tout ce que je trouve.
    Par contre, là ça fait 4 jours que j'essaie tout et n'importe quoi sans trouver réponse à ma question.
    Si vous pouviez m'aider à y voir + clair ce serait sympa (on a qq profs qui préfèrent nous conseiller des tutos...)

    Je tente désespérément d'ajouter des conditions à mon code requête SQL qui fonctionne sur my SQL (WAMP) mais dont je n'arrive pas à récupérer la valeur sur PHP.
    à chaque fois, le code ignore l'étape et je suis bloquée : mon résultat s'arrête à $query_pc_exist (j'ai l'impression qu'il ne matche pas les 2 et pourtant, j'ai essayé un count, un print et tout ce que j'ai pu trouver sur le net mais rien n'a marché. Je suis sûre que c'est une bêtise mais je suis incapable d'y voir clair...)
    Merci d'avance pour vos lumières

    Coralie


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    <!DOCTYPE html>
    <html lang="en">
    	<head>
            <meta charset="utf-8">
    		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    		<link rel="stylesheet" href="style.css" />
    		<title>Gestion des pc_portables - Groupe GEFOR</title>
    	</head>
     
    	<header>
        <img id="logo" src="images/logoG.png"alt="logoG"/>
    	</header>
     
        <body>
    	<h1>Gestion des pc portables</h1>
    		<?php
     
    		//Déclaration des variables de la base (pour réutilisation)
    		$serveur = "localhost";
        	$dbname = "gestionpanne";
        	$user = "root";
        	$pass = "";
     
    		// connexion à la base
    		try{
    			$dbco = new PDO("mysql:host=$serveur;dbname=$dbname",$user,$pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     
    			// Afficher la liste des ordinateurs
    			$queryordi = $dbco->prepare("SELECT * FROM pc_portable");
    			$queryordi->execute();
    			$resultat = $queryordi->fetchAll();
     
     
    			// table met en place la table ordinateur mise en forme dans le css
    			?> <table>
    				<caption>Liste des ordinateurs</caption>
    				<thead>
    					<tr>
    						<th>Numéro de série</th>
    						<th>Marque</th>
    						<th>Date d'acquisition</th>
    						<th>Durée de garantie</th>
    						<th>Disponible</th>
    						<th>Date d'attribution</th>
    						<th>Date de restitution</th>
    					</tr>
    				</thead>
    			<?php
     
    			// foreach permet de parcourir le tableau pour extraire le résultat dans une variable déclarée à la volée ($donnee) en tant qu'alias sans les informations brutes du code SQL
    			foreach ($resultat as $donnee){
    				print("<tr><td>" . $donnee["Pc_Portable_Numero_Serie"]. "</td><td>". $donnee["Pc_Portable_Marque"]. "</td><td>". $donnee["Pc_Portable_Date_acquisition"]. "</td><td>". $donnee["Pc_Portable_Duree_garantie_mois"]. "</td><td>". $donnee["Pc_Portable_Statut_Disponible"]. "</td><td>". $donnee["Pc_Portable_Date_attribution"]. "</td><td>". $donnee["Pc_Portable_Date_restitution"].  "</td></tr>");
    				}
    		}
    		// report des erreurs		
    		catch(PDOException $e){
            echo 'Impossible de traiter les données. Erreur : '.$e->getMessage();
    		}?>
    			</table>	
     
    			<!--Commentaire HTML section formulaire pour l'entrée du numéro de portable-->
    			<h2>Recherche sur un ordinateur</h2>
     
    			<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
    				<p>
    				<label for="Pc_Portable_Numero_Serie">Numéro de série du pc portable</label>
    				<input type="text" name="Pc_Portable_Numero_Serie"/>
    				<p>
    				<p>
    				<input type="submit" name="Logiciels" value="Liste des logiciels">
    				</p>
    			</form>
    			<!--Début seconde partie pour affichage des requêtes dans la même page : ergonomie d'utilisation-->
    			<?php
    		try{	
    			// On récupère les valeurs du formulaire si l'utilisateur a cliqué sur le bouton liste des logiciels
    			if (isset($_POST['Logiciels'])){
    			// Définition des variables nécessaires
    				$Pc_Portable_Numero_Serie = $_POST["Pc_Portable_Numero_Serie"]; //variable prend la valeur entrée dans le formulaire
     
     
     
    				$query_pc_exist = $dbco->prepare("SELECT Pc_Portable_Numero_Serie FROM pc_portable WHERE Pc_Portable_Numero_Serie LIKE '$Pc_Portable_Numero_Serie'"); // variable = le pc existe dans la bdd
    				$query_pc_exist->execute();
    				$rquery_pc_exist = $query_pc_exist->fetch();
     
     
     
    				$query_pc_logi = $dbco->prepare("SELECT installation_logiciel_pcportable.Pc_Portable_Numero_Serie FROM installation_logiciel_pcportable WHERE installation_logiciel_pcportable.Pc_Portable_Numero_Serie LIKE '$Pc_Portable_Numero_Serie'"); // variable = le pc existe dans la table des installation de logiciels
    				$query_pc_logi->execute();
    				$querylogi = $dbco->prepare("SELECT Logiciel_Numero_Serie FROM Installation_Logiciel_PcPortable WHERE Pc_Portable_Numero_Serie = '$Pc_Portable_Numero_Serie'"); // variable = stocke le résultat de la liste des logiciels sur l'ordinateur saisi dans le formulaire
    				$querylogi->execute();	
    				$rquery_pc_logi = $querylogi->fetchAll();
    				// Affichage de la liste des logiciels sur l'ordinateur saisi dans le formulaire
    				// Si ma recherche est vide (et qu'on a cliqué sur logiciel cf + haut)
    					if(empty($Pc_Portable_Numero_Serie)){
    						echo 'Veuillez saisir un numéro de série de pc portable';
    					}
    					// Si le pc recherché n'existe pas dans la bdd
    					elseif(!$rquery_pc_exist <>""){
    						echo 'Ce pc est inconnu de la base';
    					}
    					// Si le pc existe dans la bdd mais qu'il n'y a jamais eu d'installation de logiciel
    					elseif($query_pc_logi <>""){
    						echo 'Ce pc ne contient pas de logiciel';
    					}

  2. #2
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour coramouh,

    D’après ce que je peux lire, tes requêtes utilisent la fonction prepare de PDO ce qui est une bonne chose, mais tu l'utilises de la mauvaise façon.

    Il faut plutôt que tes requêtes ressembles à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = $dbco->prepare("SELECT Pc_Portable_Numero_Serie FROM pc_portable WHERE Pc_Portable_Numero_Serie LIKE :num_serie");
    $query->execute([
        ':num_serie' => $Pc_Portable_Numero_Serie
    ]);
    $result = $query->fetch();
    Pour plus d'informations la doc officielle PHP est de bons conseils : https://www.php.net/manual/fr/pdo.prepare.php

    Note : Pense à mettre la balise code pour rendre plus lisible tes prochaines questions.

  3. #3
    Membre du Club
    Femme Profil pro
    correction et mise en page
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : correction et mise en page
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Par défaut
    Merci beaucoup Freudd !
    Je vais de ce pas faire mes tests.
    Et je pense à la balise :s

Discussions similaires

  1. Impossible de faire passer mon DataContext ! Une idée ?
    Par Cvbdev dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 07/02/2010, 23h30
  2. [Vista][IIS7] Impossible de faire fonctionner mon site
    Par FoxDeltaSierra dans le forum IIS
    Réponses: 2
    Dernier message: 21/02/2009, 23h37
  3. Réponses: 3
    Dernier message: 01/02/2008, 20h19
  4. Réponses: 6
    Dernier message: 25/06/2007, 14h00
  5. Réponses: 2
    Dernier message: 12/05/2006, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo