vorige volgende rij selecteren in tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Pierre Web

Pierre Web

05/01/2017 22:05:54
Quote Anchor link
Hallo

Hallo,

Ik probeer de volgende rij uit tabel te halen met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$id
= $_GET['id'];
        $id = ($id+1);

<
a href="nieuws.php?id='.$id.'">volgende</a>


$query_nieuws = ("SELECT *
 FROM `nieuws` WHERE id = '$id' ORDER BY id DESC LIMIT 1
   "
);
?>

Maar nu komt het ook voor dat een id er niet meer is bijv. id 1 , 2 , 4 (id 3 bestaat niet meer),
en wat als het de laatste of eerste id betreft.
Er moet ook nog een vorige komen
Gewijzigd op 05/01/2017 22:08:01 door - Ariën -
 
PHP hulp

PHP hulp

04/02/2023 16:01:32
 
- Ariën  -
Beheerder

- Ariën -

05/01/2017 22:12:54
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT * FROM nieuws
WHERE ( id = IFNULL((SELECT MIN(id) FROM nieuws WHERE id > $id),0)
        OR id = IFNULL((SELECT MAX(id) FROM nieuws WHERE id < $id),0)
)


Dit geeft de vorige en/of volgende records aan als die bestaan.
Twee vliegen in één klap gelijk.
Gewijzigd op 05/01/2017 22:13:11 door - Ariën -
 
Pierre Web

Pierre Web

06/01/2017 09:48:24
Quote Anchor link
Bedankt,

Ik krijg fout
Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in../nieuws-test2.php:40 Stack trace: #0 {main} thrown in ../nieuws-test2.php on line 40

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$id = $_GET['id'];

$query_nieuws = ("SELECT
   * FROM `$tabelnaam` WHERE ( id = IFNULL((SELECT MIN(id) FROM `$tabelnaam` WHERE id > $id),0)
        OR id = IFNULL((SELECT MAX(id) FROM `$tabelnaam` WHERE id < $id),0)
   ");
   $result = $mysqli->query($query_nieuws);
   while ($row = $result->fetch_assoc() ) {  // regel 40
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 09:55:26
Quote Anchor link
Ik ruik SQL-injection...
Wat zegt de foutafhandeling? Of voer het eens los uit in phpMyAdmin?
 
Pierre Web

Pierre Web

06/01/2017 10:16:07
Quote Anchor link
SQL Fout (1064): You have an error in your SQL syntax;
 
- SanThe -

- SanThe -

06/01/2017 10:38:54
Quote Anchor link
Pierre Web op 06/01/2017 10:16:07:
SQL Fout (1064): You have an error in your SQL syntax;


... near ...... en hier staat de oplossing.

Graag de complete foutmelding.
 
Pierre Web

Pierre Web

06/01/2017 10:59:51
Quote Anchor link
#1064 -You have an error in your SQL syntax; check the manual that corresponds to your Maria DB server version for the right syntax to use near at line 3
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT

   * FROM `nieuws` WHERE ( id = IFNULL((SELECT MIN(id) FROM `nieuws` WHERE id > $id),0)

        OR id = IFNULL((SELECT MAX(id) FROM `nieuws` WHERE id < $id),0) //line 3


Opmerking: code zoals in mijn 1e post gaf geen fout
Gewijzigd op 06/01/2017 11:04:38 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 11:04:53
Quote Anchor link
Je moet wel je WHERE goed afsluiten met een ), dus aan het einde van je query.

Ik heb hem hiermee werkende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT * FROM news
WHERE ( id = IFNULL((SELECT MIN(id) FROM news WHERE id > 1337),0)
        OR id = IFNULL((SELECT MAX(id) FROM news WHERE id < 1337),0)
)


Ik krijg dan bestaande records 1336 en 1338 te zien.
Gewijzigd op 06/01/2017 11:09:34 door - Ariën -
 
Pierre Web

Pierre Web

06/01/2017 11:18:42
Quote Anchor link
Kopieer foutje hier , veranderd dus niks aan foutmelding


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
   $query_nieuws_next = ("SELECT
   * FROM `nieuws` WHERE ( id = IFNULL((SELECT MIN(id) FROM `nieuws` WHERE id > 14),0)
        OR id = IFNULL((SELECT MAX(id) FROM `nieuws` WHERE id < 14),0)


id 14 is aanwezig maar fout blijft
Gewijzigd op 06/01/2017 11:21:36 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 11:23:21
Quote Anchor link
Aan het eind mis je een ), tel je haakjes maar na. Je laatste haakje is van je IFNULL en niet van je WHERE.
Gewijzigd op 06/01/2017 11:24:12 door - Ariën -
 
Pierre Web

Pierre Web

06/01/2017 11:36:17
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
  
SELECT
   * FROM `nieuws` WHERE ( id = IFNULL((SELECT MIN(id) FROM `nieuws` WHERE id > $id),0)
        OR id = IFNULL((SELECT MAX(id) FROM `nieuws` WHERE id < $id),0)
 


fout blijft

Toevoeging op 06/01/2017 11:41:56:

alle code:

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
  
<?php
$database_host
            = 'localhost';
$database_username         = 'xxx';
$database_password         = 'xxx';
$database_name             = 'xxx';
//open mysql connection
$mysqli = new mysqli($database_host, $database_username, $database_password, $database_name);
//output error and exit if there's an error
if ($mysqli->connect_error) {
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

?>



                 <?php

$id
= mysqli_real_escape_string($mysqli, $_GET['id']);


$query_nieuws = ("SELECT
   * FROM `nieuws` WHERE ( id = IFNULL((SELECT MIN(id) FROM `nieuws` WHERE id > $id),0)
        OR id = IFNULL((SELECT MAX(id) FROM `nieuws` WHERE id < $id),0) "
);
   $result = $mysqli->query($query_nieuws);
   while ($row = $result->fetch_assoc() ) {
   $id = $row['id'];
     }

?>

 
Gewijzigd op 06/01/2017 11:37:12 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 11:42:00
Quote Anchor link
Binnen je WHERE op lijn 3 tel ik:
3 geopende haakjes
3 gesloten haakjes

Op lijn 4 en nog steeds binnen je WHERE tel ik:
3 geopende haakjes
3 gesloten haakjes

Maar de WHERE wordt nergens afgesloten!!
Kijk mijn code nog eens, en vooral naar lijn 4!

Nu moet je het wel zien, denk ik :-P
Gewijzigd op 06/01/2017 11:43:58 door - Ariën -
 
Pierre Web

Pierre Web

06/01/2017 11:49:40
Quote Anchor link
Volgens mij kloppen de haakjes in jou vb niet..ben aan het zoeken ..nog een te weinig op eind?

edit

Je was me net voor..
Gewijzigd op 06/01/2017 11:50:17 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 11:51:24
Quote Anchor link
Dat haakje staat prima in mijn voorbeeld. Heeft er altijd gestaan.
Die edit van toen was alleen maar het toevoegen van de code-tags eromheen ;-)

En die query is linea-directa gekopieerd uit mijn SQL-editor.
Gewijzigd op 06/01/2017 11:53:44 door - Ariën -
 
Pierre Web

Pierre Web

06/01/2017 11:59:49
Quote Anchor link
Bedankt , dat vergeten haakje van mij was het probleem

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
  echo '<a href="nieuws-test2.php?id='.$id.'">Volgende</a>';  


Hoe ga ik na vorige id= met
$id= $id-1 ?

echo '<a href="nieuws-test2.php?id='.$id.'">Vorige</a>';
Gewijzigd op 06/01/2017 12:04:34 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 12:02:51
Quote Anchor link
Heb je de query al uitgetest, want dan zie je dat je dus 1 tot 2 records zal krijgen.
 
Pierre Web

Pierre Web

06/01/2017 12:17:59
Quote Anchor link
als ik dit doe krijg ik 2 keer Volgende:(a tag in de conditie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
   $result = $mysqli->query($query_nieuws);
   while ($row = $result->fetch_assoc() ) {
   $id = $row['id'];
      $title = $row['title'];
//   echo '<a href="nieuws-test2.php?id='.$id.'">Volgende</a>';
     }


geef in broncode:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<a href="nieuws-test2.php?id=13">Volgende</a>

<a href="nieuws-test2.php?id=15">Volgende</a>
Gewijzigd op 06/01/2017 12:18:43 door Pierre Web
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 12:21:49
Quote Anchor link
Logisch, want jij geeft aan dat er Volgende moet staan. De query geeft twee resultaten aan, voor de eerste-opvolgende en de eerste-voorlaatste.

Dus kijk in de loop of het gegeven id hoger of lager is die uit je $_GET
 
Eddy E

Eddy E

06/01/2017 12:42:02
Quote Anchor link
Met een query als dit kan het ook:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$id
= intval($_GET['id']); // korte, moet toch wel een getal zijn


   $result = $mysqli->query($"SELECT * FROM nieuws WHERE id > ".$id." LIMIT 0, 1 ORDER id ASC");
   $next_id = mysqli_fetch_row($result);
echo '<a href="nieuws-test2.php?id='.$next_id.'">Volgende</a>';
?>
 
Pierre Web

Pierre Web

06/01/2017 12:56:54
Quote Anchor link
Die is toch gelijk ?
 
- Ariën  -
Beheerder

- Ariën -

06/01/2017 13:03:49
Quote Anchor link
Nee, die haalt alleen de volgende op, en mijn query doet dat voor zoverl volgende als vorige...
Voer maar in phpMyAdmin uit, en je ziet het.
 

Pagina: 1 2 3 4 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.