Erreur boucle while

Eléphant du PHP | 372 Messages

20 juin 2014, 13:00

J'ai une erreur sur mon code est la ligne mis en erreur est celle de la boucle:
Voici le message d'erreur:
Fatal error: Call to a member function fetch() on a non-object in /home/users6/l/lasortie/www/ajax.php on line 32

Voici le code de la page ( ajax.php )

<?php

// Certainement pas de balise HTML dans une page que l'on appelle en AJAX

session_start();

// Je serais toi, je stockerai mes identifiant de connexion dans un fichier externe comme ca, si tu le modifies, tu n'as pas besoin de retoucher toutes les pages.
try
{
$bdd = new PDO('mysql:host=************;dbname=*************','**********','*******');
$bdd->exec('SET NAMES utf8');
}
 
catch(Exception $e)
{
echo 'Une erreur est survenue !';
die();
}

// on recupère la date passé en paramètre
$explode = explode('/', $_GET['date']); //recuper dd/mm/YYYY
$date = $explode[2].'-'.$explode[1].'-'.$explode[0];    //  YYYY-mm-dd, le format classique MySQL



//La requete permet de recup l'id, la date et le titre de la sortie de la table favoris du membre identifié
$req = $bdd->query("SELECT f.id_loisirs, f.titre, f.date_debut_sortie FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE f.date_debut_sortie = '".$date."' AND su.`id_simply_user` =".$_SESSION['userid']);

$loisir = array();
//ligne 32
while($row = $req->fetch(PDO::FETCH_ASSOC)) {
        $loisir[] = $row['titre'];
}

echo implode('<br />', $loisir);

?>
Page profil.php
<?php session_start();?>
<?php $page = "profil";?>
<input type="text" id="datetimepicker3"/>
[javascript]<script type="text/javascript">
jQuery(function(){
jQuery('#datetimepicker3').datetimepicker({
timepicker:false,
inline:true,
onChangeDateTime:function(dp,$input){
$.ajax({
url : "ajax.php?date="+$input.val(),
success : function (data, textStatuts, jqXHR) {
var evenements = eval(data);

}
});
}
});
});
</script>[/javascript]

ViPHP
xTG
ViPHP | 7331 Messages

20 juin 2014, 18:07

Ta requête renvoie une erreur.
Actives les erreurs PDO. ;)
http://fr2.php.net/manual/fr/pdo.error-handling.php

Eléphant du PHP | 372 Messages

30 juin 2014, 21:27

Bonsoir, me revoilà avec toujours le même problème à savoir soit un problème de requête ou de boucle mais je pense que le pbm vien de la req,
Ou est le problème svp, merci à tous
voici mon code complet:
Page profil.php:
<?php include("include/header.php");?>
 
<input type="text" id="datetimepicker3"
/>
[javascript]<script type="text/javascript">
jQuery(function(){
jQuery('#datetimepicker3').datetimepicker({
timepicker:false,
inline:true,
onChangeDateTime:function(dp,$input){
$.ajax({
url : "ajax.php?date="+$input.val(),
success : function (data, textStatuts, jqXHR) {
var evenements = eval(data);
$('#affichage_resultat').html(data);
}
});
}
});
});
</script>[/javascript]
<div id="affichage_resultat"></div>
Et la page Ajax.php
<?php

// Certainement pas de balise HTML dans une page que l'on appelle en AJAX

session_start();

try
{
$bdd = new PDO('mysql:host=****************;dbname=**************','*************','*************');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->exec('SET NAMES utf8');
}
 
catch(Exception $e)
{
echo 'Une erreur est survenue !';
die();
}

// on recupère la date passé en paramètre
$explode = explode('/', $_GET['date']); //recuper dd/mm/YYYY
$date = $explode[2].'-'.$explode[1].'-'.$explode[0];    //  YYYY-mm-dd, le format classique MySQL

ini_set('error_reporting', E_ALL);

//La requete permet de recup l'id, la date et le titre de la sortie de la table favoris du membre identifié
$req = $bdd->query("SELECT f.id_loisirs, f.titre, f.date_debut_sortie FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE f.date_debut_sortie = '".$date."' AND su.`id_simply_user` =".$_SESSION['userid']);

$loisir = array();
while($row = $req->fetch(PDO::FETCH_ASSOC)) {
        $loisir[] = $row['titre'];
}

echo implode('<br />', $loisir);
?>

Structure de la table favoris:
colone :id_simply_user
colone; id_loisir
colone: date_added

Structure de la table loisirs:
colone: id_loisirs
colone: id_departements
colone: id_type_loisirs
colone: photo
colone: titre
colone: date_debut_sortie
colone: date_fin_sortie
colone: ........

Eléphant du PHP | 372 Messages

01 juil. 2014, 11:43

j'ai l'erreur suivante sur ma req:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'f.id_loisirs' in 'field list'' in /home/users6/l/lasortie/www/ajax.php:31 Stack trace: #0 /home/users6/l/lasortie/www/ajax.php(31): PDO->query('SELECT f.id_loi...') #1 {main} thrown in /home/users6/l/lasortie/www/ajax.php on line 31

et sur cette ligne c'est ma req à savoir:
//La requete permet de recup l'id, la date et le titre de la sortie de la table favoris du membre identifié
$req = $bdd->query("SELECT f.id_loisirs, f.titre, f.date_debut_sortie FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE f.date_debut_sortie = '".$date."' AND su.`id_simply_user` =".$_SESSION['userid']);
merci pour votre aide

Mammouth du PHP | 1339 Messages

01 juil. 2014, 12:11

Unknown column 'f.id_loisirs'

Il y a pas de champ id_loisirs dans la table "favori"... Soit tu apprends l'anglais, soit tu apprends le PHP !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

ViPHP
ViPHP | 2577 Messages

01 juil. 2014, 15:56

...
Structure de la table favoris:
...
colone; id_loisir
...
Avec ou sans "s" ?
Vérifie le nom des colonnes dans la table. Une faute de frappe est si vite arrivée

Eléphant du PHP | 372 Messages

01 juil. 2014, 16:57

J'ai donc modifier ma req et je recupère bien les titres des événement du membre identifié sous la forme d'un array donc pas de problème.
J'ai juste un soucis sur le fait que lorsque le membre clik sur le datepicker cela devrai lui affiché le titre de la sortie si la date de l'événement et la date du datepicker corresponde mais rien ne se passe :/

Page ajax.php
<?php

session_start();

try
{
$bdd = new PDO('mysql:host=****************;dbname=*******************','******','***************');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->exec('SET NAMES utf8');
}
 
catch(Exception $e)
{
echo 'Une erreur est survenue !';
die();
}

// on recupère la date passé en paramètre
$explode = explode('/', $_GET['date']); //recuper dd/mm/YYYY
$date = $explode[2].'-'.$explode[1].'-'.$explode[0];    //  YYYY-mm-dd, le format classique MySQL

// Même chose que error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

//La requete permet de recup l'id, la date et le titre de la sortie de la table favoris du membre identifié
$req = $bdd->query("SELECT * FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE su.`id_simply_user` =".$_SESSION['userid']);


//On affiche le titre
$loisir = array();
while($row = $req->fetch(PDO::FETCH_ASSOC)) {
        $loisir[] = $row['titre'];
}

echo implode('<br />', $loisir);

?>
Page profil.php
<?php include("include/header.php");?>
<input type="text" id="datetimepicker3"/>
[javascript]<script type="text/javascript">
jQuery(function(){
jQuery('#datetimepicker3').datetimepicker({
timepicker:false,
inline:true,
onChangeDateTime:function(dp,$input){
$.ajax({
url : "ajax.php?date="+$input.val(),
success : function (data, textStatuts, jqXHR) {
var evenements = eval(data);
$('#resultat').html(data);
}
});
}
});
});
</script>[/javascript]

<div id="resultat"></div>

Mammouth du PHP | 1339 Messages

01 juil. 2014, 18:02

File le code HTML finale ca sera plus simple ...
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 372 Messages

01 juil. 2014, 18:18

Bah a vrai dire il y a tout là enfin je pense....
J'ai encore modifié la req ( cette fois j'ai une page blanche avec la req d'avant je récupéré bien les titres et depuis que j'essai de bidouiller avec les dates....c'est la galère ) car il faut que je trouve le truc pour faire assoccier la date de l'événement avec la date de la sortie, je suis pas loin de toucher au but mais je galère trop la

Page ajax.php
<?php

session_start();

try
{
$bdd = new PDO('mysql:host=***************;dbname=*************','******','*************');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->exec('SET NAMES utf8');
}
 
catch(Exception $e)
{
echo 'Une erreur est survenue !';
die();
}

// on recupère la date passé en paramètre
$explode = explode('/', $_GET['date']); //recuper dd/mm/YYYY
$date = $explode[2].'-'.$explode[1].'-'.$explode[0];    //  YYYY-mm-dd, le format classique MySQL

// Même chose que error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

//La requete permet de recup l'id, la date et le titre de la sortie de la table favoris du membre identifié
$req = $bdd->query("SELECT * FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs`WHERE l.date_debut_sortie = '".$date."' AND su.`id_simply_user` =".$_SESSION['userid']);


//On affiche le titre
$loisir = array();
while($row = $req->fetch(PDO::FETCH_ASSOC)) {
        $loisir[] = $row['titre'];
}

echo implode('<br />', $loisir);

?>
Page profil.php
<?php session_start();?>
<?php $page = "profil";?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Trouver ma sortie</title>
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="css/jquery.datetimepicker.css">
<link rel="stylesheet" href="css/custom.css">
<link rel="Stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" />
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
[javascript]<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>[/javascript]
</head>


<body>
<?php include("include/header.php");?>
<input type="text" id="datetimepicker3"/>
[javascript]<script type="text/javascript">
jQuery(function(){
jQuery('#datetimepicker3').datetimepicker({
timepicker:false,
inline:true,
onChangeDateTime:function(dp,$input){
$.ajax({
url : "ajax.php?date="+$input.val(),
success : function (data, textStatuts, jqXHR) {
var evenements = eval(data);
$('#resultat').html(data);
}
});
}
});
});
</script>[/javascript]

	<div id="resultat"> ici s'affiche les titres des événement si les date correspondent si pas d'événement à cette datte alors rien n'afficher </div>






</body>
[javascript]<script src="js/jquery.js"></script>
<script src="js/jquery.datetimepicker.js"></script>
<script src="http://momentjs.com/downloads/moment.min.js"></script>[/javascript]
</html>

Mammouth du PHP | 1339 Messages

01 juil. 2014, 18:22

Donne nous le code HTML que retourn ajax.php (Sans tes requetes SQL)
Pareil pour le reste...
Tu affiches ta page dans ton navigateur, tu fais CTRL+U et tu nous files ca.
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 372 Messages

01 juil. 2014, 18:43

Il n y a rien dans le code source
....

Page blanche avec ma req actuelle c'est à dire:
//La requete permet de recup l'id, la date et le titre de la sortie de la table favoris du membre identifié
$req = $bdd->query("SELECT * FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs`WHERE l.date_debut_sortie = '".$date."' AND su.`id_simply_user` =".$_SESSION['userid']);
Avec l'ancienne req :
//La requete permet de recup l'id, la date et le titre de la sortie de la table favoris du membre identifié
$req = $bdd->query("SELECT * FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE su.`id_simply_user` =".$_SESSION['userid']);
ca affiche ds le code source:
le savoyard<br />Le Rajou<br /> la blabla