hoe waarde specifieke rij weergeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Paul Weiss

Paul Weiss

09/01/2022 12:41:45
Quote Anchor link
hallo iedereen. Ik heb onderstaande php script voor het inladen van een kleine proefdatabase. Hoe kan ik nu nadat de gehele database is ingeladen, op zoek gaan naar de waarde van een specifieke rij en alle daarbij behorende waardes van de andere variabelen in die rij wergeven. Nu gebeurd dat wel tijdens in het inladen, maar hoe kan ik dit doen nadat alles is ingeladen? Ik heb het al geprobeerd met een if statement, maar dat lukt niet!

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
<?php

$sql
= "SELECT id, rij, h2, subtekst FROM test";
$result = $conn->query($sql);


if ($result->num_rows > 0) {

  // output data of each row
  while($row = $result->fetch_assoc()) {
    
    
    $id = $row['id'];
    $rij = $row['rij'];
    $h2 = $row['h2'];
    $subtekst = $row['subtekst'];
    
    echo "<br>";
    echo "hieronder de echo per rij ";
    echo "<br>";
    
    echo "<br>";
    echo $id;
    echo "<br>";
    echo $rij;
    echo "<br>";
    echo $h2;
    echo "<br>";
    echo $subtekst;
  
  }
  }
else {
  echo "0 results";
}

$conn->close();
?>
 
PHP hulp

PHP hulp

13/11/2024 08:03:47
 
- Ariën  -
Beheerder

- Ariën -

09/01/2022 12:53:17
Quote Anchor link
Als je een specifiek item in de tabel zoek, dan moet je die opgeven met de WHERE clausule in je query:

SELECT id, rij, h2, subtekst FROM test WHERE id=4
 
Paul Weiss

Paul Weiss

09/01/2022 12:54:18
Quote Anchor link
ah oke. op die manier. bedankt.

Toevoeging op 09/01/2022 13:23:02:

Ik heb het even geprobeerd, maar lukt mij niet. ik heb het de onderstaande script gebruikt. Maar de waarde van h2 wordt niet weergegeven. Zal zeker iets fouts doen of iets vergeten toe te voegen.

$selection = "SELECT id, h2, subtekst FROM test WHERE id=2";
$result = $conn->query($selection);

echo $row['h2'];
 
- Ariën  -
Beheerder

- Ariën -

09/01/2022 13:25:37
Quote Anchor link
Waar komt $row vandaan?
Je moet wel fetch_assoc gebruiken.
Gewijzigd op 09/01/2022 13:26:31 door - Ariën -
 
Paul Weiss

Paul Weiss

09/01/2022 13:28:33
Quote Anchor link
is 1 of andere database php variale. wanneer de database wordt geladen staat dit in het begin. ik had dit even uit het script van eerder in dit topic weggelaten.

$sql = "SELECT id, rij, h2, subtekst FROM test";
$result = $conn->query($sql);


if ($result->num_rows > 0) {

// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - rij: " . $row["rij"]. " - h2: " . $row["h2"]. " - subtekst: " . $row["subtekst"]. "<br>";

Toevoeging op 09/01/2022 13:29:01:

$row komt als variabele niet voor in mijn database in ieder geval.
 
- Ariën  -
Beheerder

- Ariën -

09/01/2022 13:34:14
Quote Anchor link
fetch_assoc() zorgt ervoor dat het resultaat uit de database omgezet wordt naar een array.

Een while() lus met fetch_assoc() is in deze situatie enkel nodig als je één of meerdere resultaten verwacht. Een fetch_assoc() zonder while() levert enkel het eerste gevonden item uit de database op.
 
Paul Weiss

Paul Weiss

09/01/2022 13:35:48
Quote Anchor link
ah oke. bedanktvoor de extra info. ik heb nu onderstaande script en werkt. Is dat technisch goed geschreven zo?

$selection = "SELECT id, h2, subtekst FROM test WHERE id=2";
$result = $conn->query($selection);

while($row = $result->fetch_assoc()) {
echo $row['h2'];

}
 
- Ariën  -
Beheerder

- Ariën -

09/01/2022 13:37:48
Quote Anchor link
Prima, maar als je expliciet één item verwacht is een while() { } om je fetch_assoc() niet nodig. Zie ook mijn vorige post.
 
Paul Weiss

Paul Weiss

09/01/2022 13:38:26
Quote Anchor link
ja gezien ja. zal dat ook nog even testen.

Toevoeging op 09/01/2022 13:48:38:

damm. kom er niet aan uit wat het script is zonder while. al van alles geprobeerd.


Toevoeging op 09/01/2022 14:01:20:

is inmiddels al gelukt,

Toevoeging op 09/01/2022 14:04:29:

onderstaande gebruikt:

$row = $result->fetch_assoc();
echo $row['h2'];





Toevoeging op 09/01/2022 14:04:54:

had een spellingsfout gemaakt blijkbaar.
 
- Ariën  -
Beheerder

- Ariën -

09/01/2022 14:13:23
Quote Anchor link
Een goede tip: Als je een goede editor gebruikt, dan moeten dergelijke spellingsfoutjes of syntaxfouten vaak wel opvallen.

Ikzelf gebruik Apache Netbeans.
Gewijzigd op 09/01/2022 14:13:53 door - Ariën -
 
Paul Weiss

Paul Weiss

09/01/2022 14:23:59
Quote Anchor link
ja klopt. was eigenlijk ook geen spellingssfout maar verkeerde geformuleerde script die niet werkte.
Ik gebruik bbedit.

Toevoeging op 10/01/2022 12:22:55:

Het lukt allemaal al aardig. Ik wil echter where h2='2'. vervangen door een eerder gedefineerde variable. dus stel ik heb $zoekh2 = "bla bla"; hoe kan ik de 2 dan vervangen voor die variabele. heb al geprobeerd where h2=$zoekh2. maar dat werkt niet. Iemand een idee? bedankt voor de input.

$selection = "SELECT id, h2, subtekst FROM test WHERE h2='2'";
 
Adoptive Solution

Adoptive Solution

10/01/2022 12:39:51
Quote Anchor link
Probeer het zo eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$selection = "SELECT id, h2, subtekst FROM test WHERE h2 = '" . $zoekh2 . "'";


Of zo :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$selection = "SELECT id, h2, subtekst FROM test WHERE h2 = '$zoekh2'";
 
Paul Weiss

Paul Weiss

10/01/2022 13:06:27
Quote Anchor link
bedankt. laatste getest. Ik had deze tussen de beide ' moeten zetten inderdaad.
 
- Ariën  -
Beheerder

- Ariën -

10/01/2022 13:07:06
Quote Anchor link
Persoonlijk zou ik kiezen voor de eerste. Dan houd je de variabelen netjes gescheiden van je string.
Ook maakt dit vaak je code beter leesbaarder in je editor.
Gewijzigd op 10/01/2022 13:10:13 door - Ariën -
 
Paul Weiss

Paul Weiss

10/01/2022 13:08:06
Quote Anchor link
dat is ook waar. zal de eerste dan gebruiken. bedankt.
 
- Ariën  -
Beheerder

- Ariën -

10/01/2022 13:11:38
Quote Anchor link
Ik raad met klem aan om als je $_POST, $_GET, $_COOKIE, $_ENV of $_SERVER als variabele in je query gebruikt, om de variabele te escapen met mysqli_real_escape_string.

Als voorbeeld, ik heb geen idee waar $zoekh2 nu vandaan komt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$zoekh2
= $_GET['zoek_kop']
 $selection = "SELECT id, h2, subtekst FROM test WHERE h2 = '" . $conn->real_escape_string($zoekh2). "'";
?>


Anders kan iedereen je query manipuleren met de meest extreme queries. Of kan je zelf je query vernielen. Zoek in dat geval maar eens op 's Hertogenbosch. De single-quote wordt dan niet geëscaped en je SQL struikelt erover.
Gewijzigd op 10/01/2022 13:12:41 door - Ariën -
 
Paul Weiss

Paul Weiss

10/01/2022 13:22:29
Quote Anchor link
bedankt voor de info. zoek2 is de variabele die ik vooraf heb gedefinieerd waarop gezocht moet worden. Eerder was het een vastgestelde waarde. vandaar.



Toevoeging op 10/01/2022 13:27:36:

ik moet er wel even bij vermelden dat de zoekterm vastgestelde waardes zijn. Er is niemand die een zoekterm kan invoeren voor een querie. Dan is het toch niet noodzakelijk?

Toevoeging op 10/01/2022 13:28:35:



Toevoeging op 10/01/2022 13:35:06:

Wat doet$_GET['zoek_kop'] dan precies?

in dit voorbeeld wordt er dus gezocht naar zoek_kop. Bedoel je in je voorbeeld dat er een liggend streepje is gebruikt en dat bij de andere scripts verkeerd kan gaan? $get voorkomt dit dan?

Toevoeging op 10/01/2022 13:37:26:

oh wacht real_escape_string voorkomt dit. Maar waarom dan get gebruiken?

$zoekh2 = "bla bla"; kan niet?
Gewijzigd op 10/01/2022 13:29:07 door Paul Weiss
 
Adoptive Solution

Adoptive Solution

10/01/2022 13:43:32
Quote Anchor link
Voorbeeld van een zoekfunctie :

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
<?php

if ( isset( $_REQUEST['submit'] ) )
{

    $choice = ["=","<>",">="];
    $whatFound = ["images without a recipe","recipes","images and/or recipes","image without a recipe","recipe","image and/or recipe"];
    $choiceSelect     = $db->real_escape_string( $_REQUEST['choice'] );
    $searchRecipe     = $choice[$choiceSelect];
    $searchTitle      = $db->real_escape_string( $_REQUEST['searchWords'] );
    $searchRecipeText = $db->real_escape_string( $_REQUEST['searchWords'] );
    $goToPage = array("store","recipes");

    if( $searchTitle = filter_input(INPUT_GET, 'searchWords', FILTER_SANITIZE_SPECIAL_CHARS) )
    {

        $searchTitle = trim( $searchTitle);
        //$terms       = explode(" ", $searchTitle );
        $terms = preg_split( '/\W+/', $searchTitle );
        $termcount   = 0;
        $searchTerms = "";
        foreach ( $terms as $term )
        {

            if ( strlen($term) > 2 )
            {

                $termcount++;
                $db->real_escape_string($term);
                if ( $term <> '' )
                {

                    if ( $termcount == 1 )
                    {

                        $searchTerms .= "uniqueid LIKE '%$term%' ";
                        $searchTerms .= "|| title LIKE '%$term%' ";
                        $searchTerms .= "|| recipetxt LIKE '%$term%' ";
                    }
else {
                        $searchTerms .= "|| uniqueid LIKE '%$term%' ";
                        $searchTerms .= "|| title LIKE '%$term%' ";
                        $searchTerms .= "|| recipetxt LIKE '%$term%' ";
                    }
                }
            }
// end > 2
        }
        $query = "SELECT pid, title, recipe, recipetxt FROM " . _PIX . " WHERE recipe " . $searchRecipe . " 0 AND ( " . $searchTerms . " ) ORDER BY recipe DESC, title;";
        $found = $db->query( $query );
        if ( $result = $found )
        {

            $numFound = $found->num_rows;
            $numFound = ( $numFound == 1 ? $whatFound[ $_REQUEST['choice'] + 3  ] : $whatFound[$_REQUEST['choice'] ] ) ;
            echo "<h4>" . ( $found->num_rows == 0 ? "No" : $found->num_rows ) . " " . $numFound ." found.</h4>";
            if ( $found->num_rows >= 1 )
            {

                include_once ( _INIT_PATH . "parse_recipe.php");
                while ( $row = $result->fetch_object() )
                {

                    $recept = $row->recipetxt;
                    $str_recipe = html_entity_decode($recept);
                    parseRecipeText ($str_recipe);
                    
                    // begin color search terms
                    $description = substr ( $out_description_display , 0 , 300 );
                    $newtitle = $row->title;
                    foreach ( $terms as $key => $value )
                    {

                        if (  strlen($value) > 2 )
                        {

                            $replace = '<span class="searchword">'. $value . '</span>';
                            $newstr   = str_ireplace( $value, $replace, $description );
                            $newtitle = str_ireplace( $value, $replace, $newtitle );
                            $description = $newstr;
                        }
                    }

                    // end color search terms
?>


Toevoeging op 10/01/2022 14:05:10:

Dit is wellicht aardig om de zoektekst een kleurtje te geven in de uitvoer :

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
<?php
function parseSearch ( $haystack, $needle, $split = TRUE )
{

    $haystackResult = '';
    $haystackParts = [];
    if ( $split == TRUE ) {
        $haystackParts  =  explode( ' ', $haystack );
    }

    else
    {
        $haystackParts[0]  =  $haystack ;
    }

    $needleLength   = strlen( $needle );
    $strawSpace     = ' ';

    //echo '<pre>' . print_r( $haystackParts, TRUE ) . '</pre>';

    foreach ( $haystackParts as $hay => $straw )
    {

        $strawPos = stripos( $straw, $needle );
        if ( $strawPos === 0 )
        {

            $straw           = substr( $straw , $needleLength );
            $haystackResult .= '<span class="select">' . ucwords( $needle ) . '</span>';
        }

        $haystackResult .= preg_replace( '/' . $needle . '/i' , '<span class="select">' . $needle . '</span>', $straw ) . $strawSpace;
        
    }

    return trim( $haystackResult );
}


while ( $row = $result->fetch_object() )
{

    $firstName = parseSearch ( $row->f_name, $zoekwoord, FALSE);
    $lastName  = parseSearch ( $row->l_name, $zoekwoord );
    $street    = parseSearch ( $row->street, $zoekwoord );
    $city      = parseSearch ( $row->city,   $zoekwoord, TRUE );

    ?>


    <tr class="trlink" onclick="getContact(<?php echo "'" . $row->f_name . "','" . $row->l_name . "','" . $row->street . "','" . $row->city . "'"; ?>);">
        <td><code><?php echo $firstName; ?></code></td>
        <td><code><?php echo $lastName; ?></code></td>
        <td><code><?php echo $street; ?></code></td>
        <td><code><?php echo $city; ?></code></td>
    </tr>

    <?php
}
?>
 
- Ariën  -
Beheerder

- Ariën -

10/01/2022 14:05:56
Quote Anchor link
Paul Weiss op 10/01/2022 13:22:29:
in dit voorbeeld wordt er dus gezocht naar zoek_kop. Bedoel je in je voorbeeld dat er een liggend streepje is gebruikt en dat bij de andere scripts verkeerd kan gaan? $get voorkomt dit dan?

Toevoeging op 10/01/2022 13:37:26:

oh wacht real_escape_string voorkomt dit. Maar waarom dan get gebruiken?

$zoekh2 = "bla bla"; kan niet?

Je kan een vaste variabele gebruiken, maar vaak is het wenselijk als je een andere uit de genoemde globals ($_GET, $_POST, $_COOKIE etc..) gebruikt, als de inhoud van de variabele wisselend is.

Een $_GET komt uit de URL, maar ik neem aan dat je dit inmiddels wel weet ;-)

En mijn keuze voor een underscore in 'zoek_kop'. Tja, gewoon een voorkeur zonder technische grondslag. 'zoek-kop' of 'zoek-kop' had ook gekund. Geef het beestje maar een naam.
Gewijzigd op 10/01/2022 14:07:02 door - Ariën -
 
Paul Weiss

Paul Weiss

10/01/2022 14:07:10
Quote Anchor link
bedankt voor jullie hulp.
 
- Ariën  -
Beheerder

- Ariën -

10/01/2022 14:11:59
Quote Anchor link
Ik vraag me eigenlijk af of je niet te snel gaat?

Quote:
Wat doet$_GET['zoek_kop'] dan precies?


Als je dit nog niet snapt, dan is MySQL een brugje te ver.

Richt je eerst eens op basistechnieken:
Simpel formulier die je invoer toont, simpele rekenmachine, contactformulier met validatie van velden, een scripts met array's die je uitleest, een oefenscript moet cookies en sessies, een script met eigen gemaakte functies, een gastenboekje met txt-bestanden.

Als je dat kan, dan is het pas handig om naar MySQL te kijken. Anders ben ik bang dat je veel (noodzakelijke) theorie zal missen.
Gewijzigd op 10/01/2022 14:13:45 door - Ariën -
 

Pagina: 1 2 volgende »



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.