Notice: Undefined variable: choix & Fatal error: Call to a member function fetch() on boolean

a marqué ce sujet comme résolu.

$var était un exemple pour dire qu’il s’agissait d’une variable contenant un tableau (array). Je ne sais pas à quel variable correspond ton tableau ni ce qui est censé ce passer…
Car à l’heure actuel ce que je lis c’est :
- création d’un tableau PHP dans le vide
- Définir les variables de connexion à la BDD
- Connexion à la base de donnée
- page HTML
- Définition d’une variable (elle vaut nom)
- Afficher un tableau associatif donc le nom vaut la variable $choix
- Transformer toutes les entrées de la variable $_POST en variable classique
- Requête à la base de donnée select_nom_prenom_user où tu sélectionnes tout dont le Nom équivaut à la variable $choix dans l’ordre croissant de Nom
- On récupère les données dans une boucle pour les afficher

PS : echo(""); fonctionne mais c’est jamais utilisé, on utilise surtout echo "";

+0 -0
Auteur du sujet

pour le faire reconnaitre en tant que nom tient j’ai tout le code en une page

 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
<?php
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'");
$host = "localhost";
$user = "root";
$pass = "Mm101010";
$dbn = "smartphone";

try{

  $bdd = new PDO("mysql:host=".$host.";dbname=".$dbn, $user, $pass, array(
           PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  );
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

?>

<!DOCTYPE html>
<html>
<head>
    <title></title>
<script>
    function selectChoice()
{
    var container = $('#PUK_selectionnee');
    var selector = $('#choix');
    var url = '../php_presque_fini/Tableau_essaie.php';
    selector.change(function()
    {
        var value = $(this).val();
        arraySelect = new Array;
        $("select option:selected").each(function() { arraySelect.push(this.value); });

        $.ajax({ url : url, type : 'post', data : {'choix[]' : arraySelect}, success : function(data){container.html(data);} });
    });
}
</script>

</head>
<body>
<div id="content">
 <label>Nom :</label>
            <select id="selection_Nom" name="choix[]" onChange="request(this);">
                <option value="">-----------</option>
                <?php $req = $bdd->query("select * from select_nom_prenom_user group by Nom");
                    while($ligne = $req->fetch()) { echo("<option value='choix'>".$ligne['Nom']."</option>"); } ?>
            </select>
<div id="Nom_selectionnee">
</div></div>
<table>
   <tr>
     <th>Operateur</th>
     <th>SIM</th>
     <th>PUK</th>
     <th>Num ligne</th>
     <th>Volume</th>
     <th>Statut abo</th>
   </tr>    
<?php 
$choix = $_POST['choix[]'];
echo $var[$choix];
extract($_POST);
$req = $bdd->query("select * from select_nom_prenom_user where Nom = '".$choix."' order by Nom asc");
    while($ligne = $req->fetch())
    {
        echo("
        <tr>
            <td>".$ligne['Operateur']."</td>
            <td>".$ligne['Num_SIM']."</td>
            <td>".$ligne['PUK']."</td>
            <td>".$ligne['Num_ligne']."</td>
            <td>".$ligne['Volume']."</td>
            <td>".$ligne['Statut_abo']."</td>
        </tr>");
    } ?>
</table>
</body>
</html>

erreur: ( ! ) Notice: Undefined variable: var in C:\wamp64\www\Formulaire\Form_PHP\php_presque_fini\Tableau_essaie.php on line 64

Édité par VinkeyGonçalvès

+0 -0

j’ai enlevé les deux ligne en tros mais le [’choix[]’]; est non défini

VinkeyGonçalvès

Remplace $choix = $_POST['choix[]']; par $choix = $_POST['choix'];. Ajoute également la propriété multiple dans la balise select.

Au lieu d’utiliser la fonction while, tu peux utiliser foreach.

Édité par EtienneR

HTTP/1.1 418 I’m a teapot

+0 -0

J’arrive un peu sur le tas mais j’ai spot ceci dans le premier post: le session_start() n’est pas avant la première ligne (hors PHP) du fichier.

Pour éviter des erreurs sur les sessions il est indispensable de débuter ton fichier de la sorte:

1
2
3
4
<?php
session_start();

// ... Le reste du fichier

Et cette ligne est fausse:

1
2
<?php
echo $var[$choix];

Elle est fausse car $var n’existe pas.

Édité par Nek

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte