SQL-Anfrage

Warum? Warum das SQL?
Wir reden doch die ganze Zeit vom anderen SQL? Oder hat dieses SELECT-Statement ein Paramter namend :CURRENT_USER?
 
Warum? Warum das SQL?
Wir reden doch die ganze Zeit vom anderen SQL? Oder hat dieses SELECT-Statement ein Paramter namend :CURRENT_USER?
es geht darum du hattest $product benutzt, deswegen dachte es wäre die erste Anfrage.

aber ich habe es umgesetzt
PHP:
$currentUser = 1234;
$req2 = $dbConnect->prepare($variants);
$req2->bindParam(':CURRENT_USER', $currentUser, PDO::PARAM_INT);
$req2->execute();
leider geht immer noch nicht un User kann nicht seht, was er erstellt hat , nur was der Administrator erstellt hat.
 
Und wo hast du das eingesetzte?
Und gibt es den User mit der ID 1234?
Und ist user_id auch wirklich eine Zahl?

leider geht immer noch nicht un User kann nicht seht, was er erstellt hat , nur was der Administrator erstellt hat.
Was auch immer das bedeutet. Ich kenne dein Program nicht und hab auch keinen Schimmer, was der Code machen soll.

Es geht einzig um dein Prepared Statement. Und du kopierts unsere Vorschläge einfach ungeachtet irgendwo in deinen Code. Das Sind BEISPEILE. Die muss man am anpassen.
Und man muss sie verstehen und zu wissen wo sie in den Code gesetzt werden müssen. Setz dich mal hin un versuch zuerst deinen eigenen Code zu verstehen. Dann die Beispiele von uns. Anschliessend kannst du dein eigenen Code entsprechend anpassen.
Einfach nur Copy&Paste hat keine Zukunft und wir nie und nimmer funktionieren.

Wenn du willst, dass wir dein Code so umschreiben, dass er funktioniert, dann mach einen Thread bei den Jobangeboten. Hier bekommst du nur Hilfestellungen und Beispiele.
 
Und wo hast du das eingesetzte?
Und gibt es den User mit der ID 1234?
Und ist user_id auch wirklich eine Zahl?


Was auch immer das bedeutet. Ich kenne dein Program nicht und hab auch keinen Schimmer, was der Code machen soll.

Es geht einzig um dein Prepared Statement. Und du kopierts unsere Vorschläge einfach ungeachtet irgendwo in deinen Code. Das Sind BEISPEILE. Die muss man am anpassen.
Und man muss sie verstehen und zu wissen wo sie in den Code gesetzt werden müssen. Setz dich mal hin un versuch zuerst deinen eigenen Code zu verstehen. Dann die Beispiele von uns. Anschliessend kannst du dein eigenen Code entsprechend anpassen.
Einfach nur Copy&Paste hat keine Zukunft und wir nie und nimmer funktionieren.

Wenn du willst, dass wir dein Code so umschreiben, dass er funktioniert, dann mach einen Thread bei den Jobangeboten. Hier bekommst du nur Hilfestellungen und Beispiele.

nein so habe ich es genau umgesetzt
PHP:
$currentUser = $_SESSION['user_id'];
$req2 = $dbConnect->prepare($variants);
$req2->bindParam(':CURRENT_USER', $currentUser, PDO::PARAM_INT);
$req2->execute();

ich habe mich falsch ausgedruckt, der aministrateur kann nicht sehen, was die users erstellt haben, aber bei der user klappt es schon dh.
ein User kann nur sehen, was er estellt hat und was der Administrator erstellt hat.
leider der Administrator kann nicht sehen was die Users erstellt haben.
übrigens user_id ist ein integer Zahl
 
Und du kopierts unsere Vorschläge einfach ungeachtet irgendwo in deinen Code. Das Sind BEISPEILE. Die muss man am anpassen.
nein so habe ich es genau umgesetzt
Vor allem hast du deinen Code in vorherigen Posts editiert. Damit kommt man ja nirgends hin. Wie soll man da deine Gedankengänge noch nachvollziehen können?
Neuer Code -> neuer Post.

Aber das hier führt wohl (mal wieder) zu nix.
Scheinbar funktioniert dein Code plötzlich (keine Fehlermeldung), aber der Admin kann nicht alles sehen. Das liegt daran, dass du ja die admins selektierst (im SQL). Wenn du 'admin' zu 'user' änderst, sollte es gehen.
Aber da es bei dir ja immer x Baustellen gibt, wird das nicht das einzige Problem sein. Aber irgendwie habe ich auch keine Lust mehr, das zu untersuchen.

Gruss
cwriter
 
Vor allem hast du deinen Code in vorherigen Posts editiert. Damit kommt man ja nirgends hin. Wie soll man da deine Gedankengänge noch nachvollziehen können?
Neuer Code -> neuer Post.

Aber das hier führt wohl (mal wieder) zu nix.
Scheinbar funktioniert dein Code plötzlich (keine Fehlermeldung), aber der Admin kann nicht alles sehen. Das liegt daran, dass du ja die admins selektierst (im SQL). Wenn du 'admin' zu 'user' änderst, sollte es gehen.
Aber da es bei dir ja immer x Baustellen gibt, wird das nicht das einzige Problem sein. Aber irgendwie habe ich auch keine Lust mehr, das zu untersuchen.

Gruss
cwriter
Hi Cwriter, Entschuldigung, gebe ic dir Recht.
also ich korrigiere, so sieht das aus

PHP:
<?php

require_once __DIR__ . '/connection.php';

$product = 'SELECT * FROM product WHERE id = '.$prodId;

$prod    = $req->fetch(PDO::FETCH_ASSOC);


?>

<div id="produits">

  <div class="produit h-product" id="produit_<?php echo $prod['id'] ?>" align="center" style="margin-right:58%">
        <form method="post" action="formular.php" autocomplete="off" name="<?php echo $prod['id'] ?>">
            <input type="hidden" name="id" value="<?php echo $prod['id'] ?>">
         <table border="0" cellpadding="0">
                  <tr>
            <td style="  color:#FFFFFF ; background-color:#860000; width:0%; height:13px; border:3px solid #860000;">PRODUKT</td>
                  </tr>                  
          <tr class="row9">
                    <td class="column0 style24 null style27" colspan="4" rowspan="8">
                        <img style=" z-index: 1; left: 40px; top: 10px; width: 220px; height: 220px;"
                             src="images/<?php echo $prod['path'] ?>"><input type="hidden" name="selected_photo"
                                                                             value="<?php echo $prod['path'] ?>"></td>
                    <td class="column4 style10 s">a</td>
                    <td class="column5 style19 n" style="font-size:15px"><input type="text" name="a" size="6" maxlength="4"  value="<?php echo $prod['a'] ?>"></td>

                </tr>
                <tr class="row10">
                    <td class="column4 style11 s">b</td>
                    <td class="column5 style20 n" style="font-size:15px"><input type="text" name="b" size="6" maxlength="4"  value="<?php echo $prod['b'] ?>"></td>

                </tr>
                <tr class="row11">
                    <td class="column4 style11 s">c</td>
                    <td class="column5 style20 null" style="font-size:15px"><input type="text" name="c" size="6" maxlength="4"  value="<?php echo $prod['c'] ?>">
                    </td>

                </tr>
                <tr class="row12">
                    <td class="column4 style11 s">d</td>
                    <td class="column5 style20 null" style="font-size:15px"><input type="text" name="d" size="6" maxlength="4"  value="<?php echo $prod['d'] ?>">
                    </td>

                </tr>
                <tr class="row13">
                    <td class="column4 style11 s">e</td>
                    <td class="column5 style20 null" style="font-size:15px"><input type="text" name="e" size="6" maxlength="4"  value="<?php echo $prod['e'] ?>">
                    </td>

                </tr>
            <tr class="row17" >
                    <td class="column0 style14 s" style="font-size:14px; text-align:center;font-weight:bold"><input type="reset" name="affacer_donnée" value="effacer"></td>
                    <td class="column1 style40 n style42" colspan="2"></td>
                    <td class="column3 style15 s" style="font-weight:bold">
                    <input type="checkbox" name="variant"> Ajouter une Variante </td>
                    <td class="column4 style40 n style41" colspan="2">
                    <input type="submit" name="save_product" value="Sauvegarder">
                    </td>
                </tr>  
       
                </tbody>
            </table>
        </form>
    </div>  

<?php
   
  // Variante
$variants = '
SELECT
  id,
  img_id,
  user_id,
  a,
  b,
  c,
  d,
  e
FROM
  variants
  JOIN users USING(user_id)
WHERE
  user_id = :CURRENT_USER
  OR user_id IN(
       SELECT user_id
       FROM users
       WHERE ROLE = \'admin\');';

   
$currentUser = $_SESSION['user_id'];
       $req2 = $dbConnect->prepare($variants);
       $req2->bindParam(':CURRENT_USER', $currentUser, PDO::PARAM_INT);
       $req2->execute();

    while ($variant = $req2->fetch(PDO::FETCH_ASSOC)) {
   
    ?>
        <div class="produit" id="produit_<?php echo $variant['id'] ?>" align="center" style="margin-right:68%">
            <form method="post" action="formular.php" name="<?php echo $variant['id'] ?>">
                <input type="hidden" name="id" value="<?php echo $variant['id'] ?>">
                <table border="0" cellpadding="0">  
        <td style="  color:#FFFFFF ; background-color:#004B27; width:0%; height:13px; border:3px solid #004B27;">VARIANTE</td>
       
        <tr class="row9">
                        <td class="column0 style24 null style27" colspan="4" rowspan="8">
                            <img style=" z-index: 1; left: 40px; top: 10px; width: 220px; height: 220px;" src="images/<?php echo $prod['path'] ?>"><input type="hidden" name="selected_photo" value="<?php echo $prod['path'] ?>" ></td>
                        <td class="column4 style10 s">a</td>
                        <td class="column5 style19 n"style="font-size:15px"><input type="text" name="a" size="6" maxlength="4" value="<?php echo $variant['a'] ?>" ></td>

                    </tr>
                    <tr class="row10">
                        <td class="column4 style11 s">b</td>
                        <td class="column5 style20 n"style="font-size:15px"><input type="text" name="b" size="6" maxlength="4" value="<?php echo $variant['b'] ?>" ></td>

                    </tr>
                    <tr class="row11">
                        <td class="column4 style11 s">c</td>
                        <td class="column5 style20 null"style="font-size:15px"><input type="text" name="c" size="6" maxlength="4" value="<?php echo $variant['c'] ?>" ></td>

                    </tr>
                    <tr class="row12">
                        <td class="column4 style11 s">d</td>
                        <td class="column5 style20 null"style="font-size:15px"><input type="text" name="d" size="6" maxlength="4" value="<?php echo $variant['d'] ?>" ></td>

                    </tr>
                    <tr class="row13">
                        <td class="column4 style11 s">e</td>
                        <td class="column5 style20 null" style="font-size:15px"><input type="text" name="e" size="6" maxlength="4" value="<?php echo $variant['e'] ?>" ></td>

                    </tr>
         
               
                    <tr class="row17">
                        <td class="column0 style14 s" style="font-size:14px; text-align:center;font-weight:bold">

                            <input type="reset" name="daten_loeschen" value="Zurücksetzen">

                            </td>
                        <td class="column1 style40 n style42" colspan="2">

                        </td>
                        <td class="column3 style15 s">
                        </td>
                        <td class="column4 style40 n style41" colspan="2">
                        <input type="submit" name="save_variant" value="Speichern">
                        </td>
                    </tr>
             

                    </form>

                   <tr class="row17">
                        <td class="column0 style14 s"></td>

                        <td class="column1 style40 n style42" colspan="2">
                       
                         <form method="post" action="delete_variant.php" name="delete_<?php echo $variant['id'] ?>">
                            <input type="hidden" name="id" value="<?php echo $variant['id'] ?>">
                            <input type="hidden" name="img_id" value="<?php echo $prod['id'] ?>">
                            <input type="hidden" name="img_path" value="<?php echo $prod['path'] ?>">
                            <input type="hidden" name="type" value="variant">
                            <input type="hidden" name="location" value="<?php echo $_SERVER['REQUEST_URI'] ?>">
                            <input type="hidden" name="user_id" value="<?php echo $_SESSION['user_id'] ?>">
                            <input type="hidden" name="sessionID" value="<?php echo $_SESSION['sessionID'] ?>">
                            <input type="hidden" name="time" value="<?php echo $_SESSION['time'] ?>">
                            <input type="submit" name="select_variant" value="Löschen" style="align:center">
                        </form>
                     
                        </td>
                        <td class="column3 style15 s" style="font-size:14px; text-align:center;font-weight:bold">
                        <form method="post" action="drucker.php" name="<?php echo $variant['id'] ?>">
                            <input type="hidden" name="id" value="<?php echo $variant['id'] ?>">
                            <input type="hidden" name="img_id" value="<?php echo $prod['id'] ?>">
                            <input type="hidden" name="img_path" value="<?php echo $prod['path'] ?>">
                            <input type="hidden" name="type" value="variant">
                            <input type="hidden" name="location" value="<?php echo $_SERVER['REQUEST_URI'] ?>">
                            <input type="hidden" name="user_id" value="<?php echo $_SESSION['user_id'] ?>">
                            <input type="hidden" name="sessionID" value="<?php echo $_SESSION['sessionID'] ?>">
                            <input type="hidden" name="time" value="<?php echo $_SESSION['time'] ?>">
                            <input type="submit" name="select_variant" value="Auswählen" style="align:center">
                        </form>
                        </td>
                        <td class="column4 style40 n style41" colspan="2">
                        </td>
                    </tr>
                    </tbody>
                </table>

        </div>
        <?php
       
    }

?>
 
Läuft es jetzt oder nicht? Ich hab den Überblick verloren.

wie ich oben gesagt habe
der aministrateur kann nicht sehen, was die users erstellt haben, aber bei der user klappt es schon dh.
ein User kann nur sehen, was er estellt hat und was der Administrator erstellt hat.
leider der Administrator kann nur sehen, was er erstellt hat, nicht sehen was alle Users erstellt haben.
 
wie ich oben gesagt habe
Nochmals: Wenn in deiner WHERE-Klausel steht, dass du admins oder die aufrufenden Nutzer selektierst, dann bekommst du halt auch diese. Aber ich dachte, du wolltest nur User selektieren. Also entsprechend 'admin' zum user-Äquivalent umschreiben.
Damit dann nicht alle Nutzer selektiert werden, musst du in PHP unterscheiden, ob der aufrufende Nutzer admin oder user ist und dann den entsprechenden Code ausführen.

Gruss
cwriter

OT:
Läuft es jetzt oder nicht? Ich hab den Überblick verloren
Willkommen im Klub :D
Aber das ist ein durchgehendes Problem...
 
Wie ich glaub am Anfang mal erwähnt habe, sollten die Felder im SQL mit Quelle angegeben werden. Nur dann weiss man, ob das Feld a aus variants oder users stammt.

Egal. das Problem ist in dem SQL selber.
Zum Beispiel hier: Prüfen wir auf admin in der tabelle user? ev. auch in der Tabelle variants, da gemäss JOIN beide Tabelle win Feld user_id besitzen
SQL:
...
WHERE
 user_id = :CURRENT_USER
 OR user_id IN(...

Ich kenne den JOIN mit USING() gar nicht. Ich gehe mal davon aus, dass da beide Tabellen das Feld besitzen müssen. Ist es eine MySQL-Datenbank?

Um das SQL anzupassen - stimmt meine Analyse deiner Texte? So sollte es sein?

1) Ein User sieht nur seine Beträge
2) Ein Administrator sieht seine und alle Benutzereinträge. Nicht aber die Beträge andererAdministratoren

Stimmt das?
 

Neue Beiträge

Zurück