Tinyint met zelfde ID's filteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henk Rensenbrink

Henk Rensenbrink

31/01/2015 13:46:08
Quote Anchor link
Hallo allemaal,

ik heb een volgende probleem met mijn garage website. Ik probeer in mijn back-end in de gaten te houden wel offertes zijn geaccepteerd en welke niet. Daarvoor heb ik de volgende code gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $quote2 = $wpdb->get_results("SELECT Accepted FROM ReparationQuotes Where ReparationId = '" . esc_sql($rep->Id) ."'", OBJECT); ?>


En om deze te kunnen laten zien heb ik de volgende code gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<td class="post-title page-title column title">
                <strong><?php if ($quote2) : ?>                 
                <?php if($quote2[0]->Accepted == 0) echo '<p style="background-color: red;">No</p>' ?>
                <?php if($quote2[0]->Accepted == 1) echo '<p style="background-color: green;">Yes</p>' ?>
                <?php else: ?>
        <p style="background-color: gray;">Geen offerte</p>
    <?php endif; ?>  </strong>
            </td>


Hij laat inderdaad zien of er offertes zijn geplaatst, of deze zijn geaccepteerd de ja of de nee.
Maar hier komt het probleem. Er zijn uiteraard meerdere garages die offertes plaatsen op één aanvraag.
Nu pakt het systeem de laatste offerte, dus als nummer twee wel geaccepteerd is en nummer drie niet dan laat hij de laatste zien.

Hoe kan ik het zo maken dat als er een "1" (Geaccepteerd) staat in dezelfde reperatieID dat deze dan gepakt wordt en niet de laatste?

Alvast bedankt, en ik hoop dat ik het duidelijk hebt gemaakt.
Met vriendelijk groet,
Henk Rensenbrink
Gewijzigd op 31/01/2015 13:47:48 door Henk Rensenbrink
 
PHP hulp

PHP hulp

30/04/2024 14:37:23
 
Bart V B

Bart V B

31/01/2015 13:53:42
Quote Anchor link
Heb je het wel in een loop staan?
Want dat zou mijn eerste ingeving zijn.
 
Henk Rensenbrink

Henk Rensenbrink

31/01/2015 14:04:49
Quote Anchor link
Bart V B op 31/01/2015 13:53:42:
Heb je het wel in een loop staan?
Want dat zou mijn eerste ingeving zijn.


Kunt u dit nader uitleggen?
Bedankt trouwens voor de super snelle reactie.
 
Bart V B

Bart V B

31/01/2015 14:13:13
Quote Anchor link
Het meest gangbare wat je in php samen met mysql gebruikt is zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$sql
= "SELECT * FROM table";

$result = mysql_query($sql);

while($row = mysql_fetch_asscoc($result)
{

  // hier kijken of het true of false is en je resultaten printen.
}
?>

Heb je ergens zo'n while loop staan? Of een foreach() loop?
 
Jan de Laet

Jan de Laet

31/01/2015 17:02:47
Quote Anchor link
Waarschijnlijk wordt er maar 1 record opgehaald: in de SQL staat "WHERE ReparationId = ...".

Mogelijk bedoel je iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT ReparationId, Accepted FROM ReparationQuotes


en dan iets als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
  // als het resultaat niet leeg is
  if !empty(($quote2)) {
?>

    <table>
<?php
    // loop door alle regels heen
    foreach (quotes2 as quote) {
?>

      <tr>
        <td class="post-title page-title column title">
          <?php echo $quote->ReparationId; ?>
        </td>
        <td class="post-title page-title column title">
                <?php if($quote->Accepted == 0) echo '<p style="background-color: red;">No</p>' ?>
                <?php if($quote->Accepted == 1) echo '<p style="background-color: green;">Yes</p>' ?>
        </td>
      </tr>
<?php
    }
?>

    </table>
<?php
  // als het resultaat wel leeg is
  } else {
?>

    <p style="background-color: gray;">Geen offerte</p>
<?php
}
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

31/01/2015 17:33:15
Quote Anchor link
Quote:
Waarschijnlijk wordt er maar 1 record opgehaald: in de SQL staat "WHERE ReparationId = ...".


Waarschijnlijk niet, want de topicstarter zei al:

Quote:
Er zijn uiteraard meerdere garages die offertes plaatsen op één aanvraag.


Waarschijnlijk werkt het zo: iemand wil een reparatie laten verrichten (reparation(id)).
Garages kunnen dan gaan "bieden" met offertes (reparationquotes).
Vervolgens kiest de gebruiker een garage (accepted == 1).

Maar het staat niet op voorhand vast of er al een offerte gekozen is.

Het probleem komt deels voort (denk ik) omdat je je interface voor twee verschillende zaken wilt gebruiken:
- (indien er nog geen offerte gekozen is) de lijst van offertes
- (indien er een offerte gekozen is) de uitgekozen offerte

Klopt deze situatiebeschrijving zo een beetje?
 
Jan de Laet

Jan de Laet

31/01/2015 17:49:12
Quote Anchor link
@Thomas, mijn veronderstelling kwam voor uit de WHERE clausule met selectie op ReparationId.
Ik wilde niet zeggen dat er maar 1 offerte moest worden opgehaald, maar dat dat met deze SQL nu waarschijnlijk wel gebeurde.
En dat dat dus waarschijnlijk niet de bedoeling is. Zoals ook uit jouw situatiebeschrijving blijkt.
 
Henk Rensenbrink

Henk Rensenbrink

31/01/2015 18:09:25
Quote Anchor link
Okay even ter verduidelijking.
Op de administrator pagina krijg je een complete lijst met verscheidene reparaties die aangevraagt zijn.
vandaar de reparationID, dus een tabel met verscheidene reparaties die per reparatie een eigen ID hebben.

Nu is het natuurlijk zo dat ik bij de reparaties niet alle offertes hoef te zien, ik wil alleen weten of de persoon die een reparatie heeft aangevraagt tenminste één offerte heeft geaccepteerd.

@Jan: Op de manier hoe jij je code hebt geplaatst zou ik alle offertes binnen halen en laten zien welke geaccepteerd zijn. Het enige wat ik wil zien is:
1. Geen offerte.
2. Wel offertes maar geen één geaccepteerd.
3. Yes, voor tenminste één offerte geaccepteerd ook al staan er meerdere offertes op één reparatie.

Hier even ter verduidelijking de complete table zoals deze gespecificeerd wordt in de administrator pagina.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
global $wpdb;
$result = $wpdb->get_results("SELECT * FROM Reparation ORDER BY Id DESC", OBJECT);
$result2 = $wpdb->get_results("SELECT * FROM ReparationQuotes ORDER BY ReparationId DESC", OBJECT); ?>

<table class="wp-list-table widefat fixed posts">
    <thead>
    <tr>
        <th style="" class="manage-column column-title sortable desc" id="titleId" scope="col">
            <a href="&orderby=Title&amp;order=asc"><span>ID</span><span class="sorting-indicator"></span></a>
        </th>
        <th style="" class="manage-column column-title sortable desc" id="titleopdracht" scope="col">
            <a href="&orderby=Title&amp;order=asc"><span>Titel</span><span class="sorting-indicator"></span></a>
        </th>
        <th style="" class="manage-column column-title sortable desc" id="titleofferte" scope="col">
            <a href="&orderby=Title&amp;order=asc"><span>Aantal offerte</span><span class="sorting-indicator"></span></a>
        </th>
        <th style=""class="manage-column column-title sortable desc" id="titleofferte" scope="col">
            <a href="orderby=title&order=ASC"><span>Postcode</span><span class="sorting-indicator"></span></a>
        </th>
        <th style=""class="manage-column column-title sortable desc" id="titleplaats" scope="col">
            <a href="&orderby=Title&amp;order=asc"><span>Plaats</span><span class="sorting-indicator"></span></a>
        </th>
        <th style="" class="manage-column column-title sortable desc" id="title" scope="col">
            <a href="&orderby=Name&amp;order=asc"><span>Naam</span><span class="sorting-indicator"></span></a>
        </th>
        <th style="" class="manage-column column-title sortable desc" id="title" scope="col">
            <a href="&orderby=Email&amp;order=asc"><span>Email</span><span class="sorting-indicator"></span></a>
        </th>
        <th style="" class="manage-column column-title sortable desc" id="title" scope="col">
            <a href="&orderby=Created&amp;order=asc"><span>Aangemaakt</span><span class="sorting-indicator"></span></a>
        </th>
        <th style="" class="manage-column column-title sortable desc" id="titleaccept" scope="col">
            <a href="&orderby=Created&amp;order=asc"><span>Geaccepteerd?</span><span class="sorting-indicator"></span></a>
        </th>
    </tr>
    </thead>

    <tbody id="the-list">
<?php
    if(count($result) > 0) {

        foreach($result as $rep) {

            $quote = $wpdb->get_results("SELECT COUNT(Id) as total FROM ReparationQuotes WHERE ReparationId = '" . esc_sql($rep->Id) . "'", OBJECT);

            foreach ($result2 as $q2) {
            $quote2 = $wpdb->get_results("SELECT Accepted FROM ReparationQuotes Where ReparationId = '" . esc_sql($rep->Id) ."'", OBJECT);
        }

            ?>

<tr class="post-540 type-post status-publish format-standard has-post-thumbnail hentry category-blog category-reparaties alternate iedit author-self level-0"
            id="post-540">
            <td class="post-title page-title column-titleId">
                <strong><a title="<?php echo $rep->Id; ?>" href="" class="row-title"><?php echo $rep->Id; ?></a></strong>
            </td>
            <td class="post-title page-title column-titleopdracht">
                <strong><a title="<?php echo $rep->Title; ?>" href="" class="row-title"><?php echo $rep->Title; ?></a></strong>
            </td>
            <td class="post-title page-title column-title" id="titleofferte">
                <strong><a title="<?php echo $quote[0]->total; ?>" href="" class="row-title"><?php echo $quote[0]->total; ?></a></strong>
            </td>
            <td class="post-title page-title column-titleofferte">
                <strong><a title="<?php echo $rep->Zipcode; ?>" href="" class="row-title"><?php echo $rep->Zipcode; ?></a></strong>
            </td>
            <td class="post-title page-title column-titleplaats">
                <strong><a title="<?php echo $rep->City; ?>" href="" class="row-title"><?php echo $rep->City; ?></a></strong>
            </td>
            <td class="post-title page-title column-title">
                <strong><a title="<?php echo $rep->Name; ?>" href="" class="row-title"><?php echo $rep->Name; ?></a></strong>
            </td>
            <td class="post-title page-title column-title">
                <strong><a title="<?php echo $rep->Email; ?>" href="" class="row-title"><?php echo $rep->Email; ?></a></strong>
            </td>
            <td class="post-title page-title column-title">
                <strong><a title="<?php echo $rep->Created; ?>" href="" class="row-title"><?php echo $rep->Created; ?></a></strong>
            </td>
            <td class="post-title page-title column title">
                <strong><?php if ($quote2) : ?>                 
                <?php if($quote2[0]->Accepted == 0) echo '<p style="background-color: red;">No</p>' ?>
                <?php if($quote2[0]->Accepted == 1) echo '<p style="background-color: green;">Yes</p>' ?>
                <?php else: ?>
        <p style="background-color: gray;">Geen offerte</p>
    <?php endif; ?>  </strong>
            </td>

        </tr>
 </tbody>
    </table>


Ik denk dat het zo wel duidelijk moet zijn.
Nogmaals bedankt allemaal voor het helpen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.