par
Henrigo » 21 nov. 2016, 09:46
alors ce qui est faux à la ligne 152, rien, mais l'exception est levée à cette ligne et non catchée, donc le message à bon.
ensuite, comme toujours, le plus simple c'est de déboguer la requête finale (soit en la récupérant avec un débogueur soit en l'affichant) et de la tester dans un client SQL.
dans ta table la colonne role contient quoi ? parce que la $isAdmin va contenir true / false mais ce n'est pas une chaîne de caractères c'est un booléen.
Le message d'erreur parle d'une parenthèse fermante qui ne serait pas à sa place. Peux être celle derrière $isAdmin ?
au passage j'ai oublié un s dans la colonne de jointure de la table users => uer_id vs u
serid
pour ce qui est du code j'ai même pas regardé le tas de html / php au départ c'est trop long
un peux formaté ça donne ça
SELECT id,img_id,user_id,login,laenge_1,laenge_2,laenge_3,laenge_4,bem_1,bem_3,bem_3,a,b,c,d,e,al,be
FROM variants
JOIN users USING(user_id)
JOIN images USING(img_id)
WHERE user_id = :current_user
OR user_id IN
( SELECT user_id FROM users WHERE role ='xxxx')
au passage, vu les noms de colonnes il faut vraiment faire quelque chose car c'est un bon cas de modèle qui va poser problème (a partir du moment où tu as colx coly c'est qu'il y a une solution autre avec une table liée).
@+
Salut Moogli,
j'ai enlevé les deux point avant CURRENT et maintenant plus d'erreur, mais le problem est le suivant ce que un user genére lui même ne peut les voire même un administrateur ne peut les voire. seul ce que un administrateur genére un administrateur est visible par tous .
S'il te plait je me reprend a ce niveau j'aimerai que les variantes qu'un user genére soit juste visible par lui et l'administrateur et non pas par les autre users. mais ce que un administrateur genére soit visible par tous.
$variants = '
SELECT
id,
img_id,
user_id,
pos_nr,
farbe,
laenge_1,
laenge_2,
laenge_3,
laenge_4,
bem_1,
bem_2,
bem_3,
a,
b,
c,
d,
e,
al,
be
FROM
variants
JOIN users USING(user_id)
WHERE
user_id = CURRENT_USER
OR user_id IN(
SELECT user_id
FROM users
WHERE ROLE = \'admin\');';
ok je venais de lire qu'en enlevant les : points c'est pas du tout bon mais comment donc faire si j'otiens cette erreur
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2031 ' in C:\xampp\htdocs\kant\variants.php:210 Stack trace: #0 C:\xampp\htdocs\kant\variants.php(210): PDO->query('\nSELECT\n id,\n...') #1 C:\xampp\htdocs\kant\index.php(72): require_once('C:\\xampp\\htdocs...') #2 {main} thrown in C:\xampp\htdocs\kant\variants.php on line 210
sachant que la ligne 210 est bien celle que j'ai deja mentionné plus haut $req2 = $dbConnect->query($variants);
[quote="moogli"]alors ce qui est faux à la ligne 152, rien, mais l'exception est levée à cette ligne et non catchée, donc le message à bon.
ensuite, comme toujours, le plus simple c'est de déboguer la requête finale (soit en la récupérant avec un débogueur soit en l'affichant) et de la tester dans un client SQL.
dans ta table la colonne role contient quoi ? parce que la $isAdmin va contenir true / false mais ce n'est pas une chaîne de caractères c'est un booléen.
Le message d'erreur parle d'une parenthèse fermante qui ne serait pas à sa place. Peux être celle derrière $isAdmin ?
au passage j'ai oublié un s dans la colonne de jointure de la table users => uer_id vs u[b]s[/b]erid
pour ce qui est du code j'ai même pas regardé le tas de html / php au départ c'est trop long :-)
un peux formaté ça donne ça
[sql]SELECT id,img_id,user_id,login,laenge_1,laenge_2,laenge_3,laenge_4,bem_1,bem_3,bem_3,a,b,c,d,e,al,be
FROM variants
JOIN users USING(user_id)
JOIN images USING(img_id)
WHERE user_id = :current_user
OR user_id IN
( SELECT user_id FROM users WHERE role ='xxxx')[/sql]
au passage, vu les noms de colonnes il faut vraiment faire quelque chose car c'est un bon cas de modèle qui va poser problème (a partir du moment où tu as colx coly c'est qu'il y a une solution autre avec une table liée).
@+[/quote]
Salut Moogli,
j'ai enlevé les deux point avant CURRENT et maintenant plus d'erreur, mais le problem est le suivant ce que un user genére lui même ne peut les voire même un administrateur ne peut les voire. seul ce que un administrateur genére un administrateur est visible par tous .
S'il te plait je me reprend a ce niveau j'aimerai que les variantes qu'un user genére soit juste visible par lui et l'administrateur et non pas par les autre users. mais ce que un administrateur genére soit visible par tous.
[php]$variants = '
SELECT
id,
img_id,
user_id,
pos_nr,
farbe,
laenge_1,
laenge_2,
laenge_3,
laenge_4,
bem_1,
bem_2,
bem_3,
a,
b,
c,
d,
e,
al,
be
FROM
variants
JOIN users USING(user_id)
WHERE
user_id = CURRENT_USER
OR user_id IN(
SELECT user_id
FROM users
WHERE ROLE = \'admin\');';[/php]
ok je venais de lire qu'en enlevant les : points c'est pas du tout bon mais comment donc faire si j'otiens cette erreur
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2031 ' in C:\xampp\htdocs\kant\variants.php:210 Stack trace: #0 C:\xampp\htdocs\kant\variants.php(210): PDO->query('\nSELECT\n id,\n...') #1 C:\xampp\htdocs\kant\index.php(72): require_once('C:\\xampp\\htdocs...') #2 {main} thrown in C:\xampp\htdocs\kant\variants.php on line 210
sachant que la ligne 210 est bien celle que j'ai deja mentionné plus haut $req2 = $dbConnect->query($variants);