par
damours111 » 31 mai 2011, 23:43
Bonjour
En septembre 2010, j'avais eu une discussions avec Cyrano au sujet de la façon de récupérée des données. Tout fonctionnait bien, mais la, rien ne vas plus. J’obtiens ce message :
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/ville/public_html/biblio/rechauteurs.php on line 81
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/ville/public_html/biblio/rechauteurs.php on line 81
La ligne 81 est celle-ci :
mysql_free_result($selected_auteur);
Voici le scripts
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "ville_alain";
$mdp = "guylaine";
$base = "ville_bibliotheque";
/* On récupère si elle existe la valeur de l'auteur envoyé par le formulaire */
$aut = isset($_POST['auteurs'])?$_POST['auteurs']:null;
$envoi = isset($_POST['fait']);
if ($envoi != false ) {
include('resultats.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un titre selon l'auteur choisie</title>
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 100%">
<h3>Chercher un auteur et un titre</h3>
<br>Comment farie une recherche par auteur?</br>
<br> 1. Choisir l'auteur en faisant dérouler la liste.</br>
<br>2. Placer le curseur su l'auteur choisi.</br>
<br>3. Attendre que la liste des titres apparaisse.</br>
<br>4. Choisir le titre en faisant dérouler la liste</br>
<br>5. Placer le curseur su le titre choisi.</br>
<br>6. Cliquer sur le bouton « Choisir ».</br>
<br>7. Les cases Titre et Auteur sont automatiquement remplies.</br>
<br>8. Si vous voulez réserver, remplir les cases manquées avec un *</br>
<br>9. Cliquer sur le bouton « Envoyer la réservation ».</br>
</h3>
<?php
/* Connexion et stocker l'auteur choisi dans une variable*/
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false){
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT DISTINCT`auteurs`".
" FROM `nds_bib_`".
" ORDER BY `auteurs`";
$selected_auteur = mysql_query($sql1);
$auteurs = array();
/* On active un compteur pour les auteurs */
$nb_auteurs = 0;
if($selected_auteur != false)
{
while($ligne = mysql_fetch_assoc($selected_auteur))
{
array_push($auteurs, $ligne['auteurs']);
/* On incrémente le compteur */
$nb_auteurs++;
}
}
?>
<?php
/* Création du formaulaire contenant la liste des auteurs*/
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgauteur">
<fieldset style="border: 3px double #880000">
<select name="auteurs" id="auteurs" onchange="document.forms['chgauteur'].submit();">
<option value="-1">- - - Choisissez un auteur - - -</option>
<h3>
<?php
for($i = 0; $i < $nb_auteurs; $i++)
{
?>
<option value="<?php echo($auteurs[$i]); ?>"<?php echo((isset($aut) && $aut == $auteurs[$i])?" selected=\"selected\"":null); ?>><?php echo($auteurs[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($selected_auteur);
/* On vérifie si l'on a envoyé un auteur */
if(isset($aut) )
{
/* Si oui, on cré une liste de titre correspondand à l'auteur choisi */
$sql2 = "SELECT auteurs , titre ".
"FROM nds_bib_ ".
"WHERE auteurs = '". mysql_real_escape_string($aut) ."' ".
"ORDER BY titre";
if($connexion != false)
{
$selected_titre = mysql_query($sql2, $connexion);
/* Un compteur pour les auteurs */
$nd = 0;
/* Création de deux tableaux pour les auteurs et les titres */
$nom_auteur = array();
$nom_titre = array();
/* On va mettre les auteur et les titres dans les deux tableaux */
while($ligne_titre = mysql_fetch_assoc($selected_titre))
{
array_push($nom_auteur, $ligne_titre['auteurs']);
array_push($nom_titre, $ligne_titre['titre']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante des titres */
?>
<select name="titre" id="titre">
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($nom_titre[$d]); ?>"<?php echo((isset($titre_selectionne) && $titre_selectionne == $nom_titre[$d])?" selected=\"selected\"":null); ?>><?php echo ($nom_titre[$d]) ; ?></option>
<?php
}
?>
</select>
<?php
}
/*Sinon, on Initialiser la variable $selected_titre à NULL; */
mysql_free_result($selected_titre);
}
/* On construit le formulaire contenant le titre et l'auteur choisi */
?>
<br /><input type="submit" name="ok" id="ok" value="Choisir" />
</fieldset>
</form>
<?php
if(isset($_POST['ok']) && isset($_POST['auteurs']) && $_POST['auteurs'] != "")
{
$auteur_selectionne = $_POST['auteurs'];
$titre_selectionne = $_POST['titre'];
include('reservation.php');
}
?>
<?php
/* Terminer, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Sinon on vérifie les paramètre de connexion
*/
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
Le seul changement est la version PHP qui est 5.27 sur le serveur et 5.28 en local.
J'ai tenté avec 5.20 mais le problème demeure.
Si quelqu’un pourrait m'aider ou si Cyrano est encore au poste, j’apprécierais,
Merci
Alain
Bonjour
En septembre 2010, j'avais eu une discussions avec Cyrano au sujet de la façon de récupérée des données. Tout fonctionnait bien, mais la, rien ne vas plus. J’obtiens ce message : [quote] Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/ville/public_html/biblio/rechauteurs.php on line 81
[/quote]
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/ville/public_html/biblio/rechauteurs.php on line 81
La ligne 81 est celle-ci : [php]mysql_free_result($selected_auteur);[/php]
Voici le scripts
[php]
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "ville_alain";
$mdp = "guylaine";
$base = "ville_bibliotheque";
/* On récupère si elle existe la valeur de l'auteur envoyé par le formulaire */
$aut = isset($_POST['auteurs'])?$_POST['auteurs']:null;
$envoi = isset($_POST['fait']);
if ($envoi != false ) {
include('resultats.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un titre selon l'auteur choisie</title>
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 100%">
<h3>Chercher un auteur et un titre</h3>
<br>Comment farie une recherche par auteur?</br>
<br> 1. Choisir l'auteur en faisant dérouler la liste.</br>
<br>2. Placer le curseur su l'auteur choisi.</br>
<br>3. Attendre que la liste des titres apparaisse.</br>
<br>4. Choisir le titre en faisant dérouler la liste</br>
<br>5. Placer le curseur su le titre choisi.</br>
<br>6. Cliquer sur le bouton « Choisir ».</br>
<br>7. Les cases Titre et Auteur sont automatiquement remplies.</br>
<br>8. Si vous voulez réserver, remplir les cases manquées avec un *</br>
<br>9. Cliquer sur le bouton « Envoyer la réservation ».</br>
</h3>
<?php
/* Connexion et stocker l'auteur choisi dans une variable*/
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false){
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT DISTINCT`auteurs`".
" FROM `nds_bib_`".
" ORDER BY `auteurs`";
$selected_auteur = mysql_query($sql1);
$auteurs = array();
/* On active un compteur pour les auteurs */
$nb_auteurs = 0;
if($selected_auteur != false)
{
while($ligne = mysql_fetch_assoc($selected_auteur))
{
array_push($auteurs, $ligne['auteurs']);
/* On incrémente le compteur */
$nb_auteurs++;
}
}
?>
<?php
/* Création du formaulaire contenant la liste des auteurs*/
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgauteur">
<fieldset style="border: 3px double #880000">
<select name="auteurs" id="auteurs" onchange="document.forms['chgauteur'].submit();">
<option value="-1">- - - Choisissez un auteur - - -</option>
<h3>
<?php
for($i = 0; $i < $nb_auteurs; $i++)
{
?>
<option value="<?php echo($auteurs[$i]); ?>"<?php echo((isset($aut) && $aut == $auteurs[$i])?" selected=\"selected\"":null); ?>><?php echo($auteurs[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($selected_auteur);
/* On vérifie si l'on a envoyé un auteur */
if(isset($aut) )
{
/* Si oui, on cré une liste de titre correspondand à l'auteur choisi */
$sql2 = "SELECT auteurs , titre ".
"FROM nds_bib_ ".
"WHERE auteurs = '". mysql_real_escape_string($aut) ."' ".
"ORDER BY titre";
if($connexion != false)
{
$selected_titre = mysql_query($sql2, $connexion);
/* Un compteur pour les auteurs */
$nd = 0;
/* Création de deux tableaux pour les auteurs et les titres */
$nom_auteur = array();
$nom_titre = array();
/* On va mettre les auteur et les titres dans les deux tableaux */
while($ligne_titre = mysql_fetch_assoc($selected_titre))
{
array_push($nom_auteur, $ligne_titre['auteurs']);
array_push($nom_titre, $ligne_titre['titre']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante des titres */
?>
<select name="titre" id="titre">
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($nom_titre[$d]); ?>"<?php echo((isset($titre_selectionne) && $titre_selectionne == $nom_titre[$d])?" selected=\"selected\"":null); ?>><?php echo ($nom_titre[$d]) ; ?></option>
<?php
}
?>
</select>
<?php
}
/*Sinon, on Initialiser la variable $selected_titre à NULL; */
mysql_free_result($selected_titre);
}
/* On construit le formulaire contenant le titre et l'auteur choisi */
?>
<br /><input type="submit" name="ok" id="ok" value="Choisir" />
</fieldset>
</form>
<?php
if(isset($_POST['ok']) && isset($_POST['auteurs']) && $_POST['auteurs'] != "")
{
$auteur_selectionne = $_POST['auteurs'];
$titre_selectionne = $_POST['titre'];
include('reservation.php');
}
?>
<?php
/* Terminer, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Sinon on vérifie les paramètre de connexion
*/
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
[/php]
Le seul changement est la version PHP qui est 5.27 sur le serveur et 5.28 en local.
J'ai tenté avec 5.20 mais le problème demeure.
Si quelqu’un pourrait m'aider ou si Cyrano est encore au poste, j’apprécierais,
Merci
Alain