Bonjour,

Je crée actuellement une interface web en PHP avec ODBC pour exploiter les données d'une base de données ACCESS.

Je bloque sur un script qui permet(tra) aux utilisateurs de rechercher les documents liés à une machine (recherche par nom de machine).

J'ai deux tables :
- table DOCUMENTS (id, nom de doc, date, format, thème, résumé, etc.)
- table MACHINES (id, nom, type, catégorie)

Je me suis basée sur un formulaire PHP-MySQL publié sur le site Comment ça marche.

Voici mon code. D'après le message d'erreur que j'obtiens, l'erreur se trouve sur la ligne que j'ai mis en rouge mais je n'arrive pas à comprendre pourquoi.

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
<?php

//connexion à une base de données ACCESS
$bd=""; // identifiant DSN
$user=""; // login
$password=""; // password
$cnx=odbc_connect( $bd , $user, $password );

echo "

<html>

<head>

<title>Résultat de la recherche</title>

</head>

<body>";

// Si aucun mot clé n'a été saisi, le script demande à l'utilisateur de bien vouloir préciser un mot clé
if (($Mot == "")||($Mot == "%")) 
	{
	echo 
	"Veuillez entrer le nom d'une machine s'il vous plaît!<p>";
	}

else 
{

// Sélection des documents contenant le nom de la machine
	$query = "SELECT machines.nommachine, machines.typemachine, machines.categoriemachine, documents.nomdoc, documents.typedoc, documents.formatdoc, documents.datedoc, documents.languedoc, documents.liendoc, documents.themedoc, documents.resumedoc FROM machines INNER JOIN (documents INNER JOIN documents_machines ON documents.iddoc = documents_machines.iddoc) ON machines.idmachine = documents_machines.idmachine WHERE (((machines.nommachine) LIKE \"%$Mot%\")) ORDER BY documents.nomdoc";

	$result = odbc_do($cnx, $query);

	$row = odbc_fetch_row($result);

	$Nombre = $row[0];

// Si aucun enregistrement n'est retourné, affichage du message suivant
	if ($Nombre == "0") 
	{
	echo 
	"<h2>Aucun document ne correspond à votre recherche</h2><p>";
	}
// Si un seul enregistrement est trouvé, affichage d'un message au singulier
	if ($Nombre == "1") 
	{
	echo 
	"<a name=\"#resultat\"><h2>Résultat: Un document trouvé</h2></a><p>";
	}
	
// Dans le cas contraire le message est au pluriel
	else 
	{
	echo
	"<a name=\"#resultat\"><h2>Résultat: $Nombre articles trouvés</h2></a><p>";
	}

// Sinon, affichage des résultats
	else
	{
	$query = "SELECT machines.nommachine, machines.typemachine, machines.categoriemachine, documents.nomdoc, documents.typedoc, documents.formatdoc, documents.datedoc, documents.languedoc, documents.liendoc, documents.themedoc, documents.resumedoc FROM machines INNER JOIN (documents INNER JOIN documents_machines ON documents.iddoc = documents_machines.iddoc) ON machines.idmachine = documents_machines.idmachine WHERE (((machines.nommachine) LIKE \"%$Mot%\")) ORDER BY documents.nomdoc";

	$result=odbc_do($cnx, $query);

	while($row = odbc_fetch_row($result))
		{
		echo 
		"
		<p>\n
		<b>$row[2]</b>\n
		<p>\n
		";
		}
	}

}

// fermeture de la connexion à la base ACCESS
odbc_close($cnx);

?>

</body>

</html>
Je vous remercie de prendre le temps de vous pencher sur mon problème.

Bib