hoe waarde specifieke rij weergeven
Code (php)
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
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();
?>
$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();
?>
SELECT id, rij, h2, subtekst FROM test WHERE id=4
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'];
Je moet wel fetch_assoc gebruiken.
Gewijzigd op 09/01/2022 13:26:31 door - Ariën -
$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.
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.
$selection = "SELECT id, h2, subtekst FROM test WHERE id=2";
$result = $conn->query($selection);
while($row = $result->fetch_assoc()) {
echo $row['h2'];
}
Prima, maar als je expliciet één item verwacht is een while() { } om je fetch_assoc() niet nodig. Zie ook mijn vorige post.
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.
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'";
Of zo :
bedankt. laatste getest. Ik had deze tussen de beide ' moeten zetten inderdaad.
Ook maakt dit vaak je code beter leesbaarder in je editor.
Gewijzigd op 10/01/2022 13:10:13 door - Ariën -
dat is ook waar. zal de eerste dan gebruiken. bedankt.
mysqli_real_escape_string.
Als voorbeeld, ik heb geen idee waar $zoekh2 nu vandaan komt.
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.
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 Als voorbeeld, ik heb geen idee waar $zoekh2 nu vandaan komt.
Code (php)
1
2
3
4
2
3
4
<?php
$zoekh2 = $_GET['zoek_kop']
$selection = "SELECT id, h2, subtekst FROM test WHERE h2 = '" . $conn->real_escape_string($zoekh2). "'";
?>
$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 -
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
Code (php)
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
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
?>
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)
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
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
}
?>
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
}
?>
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?
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 -
bedankt voor jullie hulp.
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 -