MSQLI incombinatie met else en if

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Alexander van den Hoek

Alexander van den Hoek

06/02/2013 21:00:23
Quote Anchor link
Ik heb in mysql een database.
Hierin zit 1 tabel met onderstaande waardes.
1. primairy key(auto incr) 2. tekst 3. datum 4. aanuit

In veld 2 sla ik de tekst op, 3 is de upload datum (uploaden gaat goed) 4 is de waarde aan of uit

Ik wil graag via een if else statement er voor zorgen dat als de waarde in aanuit uit is dat de tekst niet wordt weer gegeven en als de aanuit waard aan is dat het wel gebeurt.

Ik heb een query die alleen de rij laad met de laaste (nieuwste) upload datum.

Hebben jullie een oplossing. Ik wil graag msqli gebruiken aangezien dit de nieuwe standaard wordt en ik deze site nu aan het bouwen ben.

Ik gebruik nu onderstaande 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
<?
$db_connect
= mysqli_connect("mysql.*******.nl", "username", "password", "database");
//Controleer de verbinding
if (mysqli_connect_errno()) {
    echo mysqli_connect_error();
    exit();
    }
else {
        echo "Verbinding met de database is suc6vol";
}


$query = "SELECT * FROM tekst ORDER BY datum DESC LIMIT 1";
$result = mysqli_query($db_connect, $query);


while($row = mysqli_fetch_array($result)) {
  echo $row['tekst'];
    echo '<br />';
}
 
PHP hulp

PHP hulp

24/04/2024 10:40:50
 
Frank Nietbelangrijk

Frank Nietbelangrijk

06/02/2013 21:11:52
Quote Anchor link
Ik weet niet zeker of ik jouw verhaal helemaal goed begrijp.

Maar ten eerste zou ik zoveel mogelijk werken met mysqli_fetch_assoc en en niet met mysqli_fetch_array.

daarnaast als je alleen records wilt weergeven die voldoen aan een bepaalde voorwaarde dan kun je je query uitbreiden met een WHERE ... in jouw geval zou het iets kunnen worden als:

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

$query
= "SELECT * FROM tekst WHERE `aanuit`='aan' ORDER BY datum DESC";
echo 'alle rijen met aanuit=aan:<br />';
while($row = mysqli_fetch_assoc($result)) {
  echo $row['tekst'].' '.$row['datum'].'<br />';
}


?>
Gewijzigd op 06/02/2013 21:46:41 door Frank Nietbelangrijk
 
Alexander van den Hoek

Alexander van den Hoek

06/02/2013 21:47:53
Quote Anchor link
Ik heb het inderdaad niet goed omschreven. Mijn excuus.

hieronder schema van de database
database rijen
int tekst Datum aanuit
dit is rij 1: tekst (Bla bal) 2013-02-02 19:56:45 aan
dit is rij 2. tekst (Bla Bla) 2013-02-02 20:00:00 uit

Ik wil dat altijd de laatste rij die in de database in de query geselecteerd wordt (ORDER BY datum DESC LIMIT 1), hier staat de nieuwste data in. Ik voeg bij elke update namelijk een rij toe zodat ik kan zien wat de tekst voor de upload was en dat er een oude versie in een andere rij staat.

Alleen zie je nu dat in rij 2 de waarde aanuit op uit staat. Dus deze rij en geen van de andere rijen in deze tabel wil ik weergeven hebben op de website, maar als er een nieuwe rij komt met de waarde aan dan moet deze (en alleen deze) wel weer zichtbaar worden. Ik dacht daarom dat ik iets zou moeten kunnen met if en else.

Ik hoop dat ik het zo duidelijker maakt.

Alexander
 
Frank Nietbelangrijk

Frank Nietbelangrijk

06/02/2013 22:03:44
Quote Anchor link
Okee mijn vorige voorbeeld werkt alleen zul je er weer even LIMIT 1 aan moeten toevoegen.

Wil je het met if / else oplossen dan loop je tegen het probleem aan dat je met LIMIT 1 slechts één record uit de database haalt. Is dit een record met aanuit=uit dan heb je dus niet het record waar je naar zocht.
een oplossing is dan om alle records uit de database te halen door LIMIT 1 weg te halen uit je query en dan met while($row = ..) alle records te doorlopen tot $row['aanuit'] de waarde 'aan' heeft.
Echter is dit de wereld op zijn kop. Want de queries zijn juist bedoeld om datgene uit je database te halen wat je nodig hebt, om zo snelheid te winnen en efficiënter met de server-sources om te gaan.

Toevoeging op 06/02/2013 22:06:55:

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

$query
= "SELECT * FROM tekst WHERE `aanuit`='aan' ORDER BY datum DESC LIMIT 1";
echo 'De rij met de "nieuwste" datum en aanuit=aan:<br />';
while($row = mysqli_fetch_assoc($result)) {
  echo $row['tekst'].' '.$row['datum'].'<br />';
}


?>
 
- SanThe -

- SanThe -

06/02/2013 22:49:16
Quote Anchor link
SELECT * FROM tekst WHERE datum = MAX(datum) AND aanuit = 'aan' ORDER BY datum DESC LIMIT 1
 
Ivo Breeden

Ivo Breeden

07/02/2013 01:06:37
Quote Anchor link
Alexander van den Hoek op 06/02/2013 21:00:23:
Ik wil graag msqli gebruiken aangezien dit de nieuwe standaard wordt en ik deze site nu aan het bouwen ben.


Misschien een klein beetje offtopic, maar als je meent dat je over moet stappen op mysqli dan moet je eens dit topic lezen: MYSQLxxx||MYSQLi||PDO.
 
Alexander van den Hoek

Alexander van den Hoek

07/02/2013 21:52:53
Quote Anchor link
bedankt voor jullie reacties.

Het onderstaande script is voor mij de oplossing, misschien niet de meeste nette manier maar hij doet wat ik wil.
Ik kan dus uit de voeten met alleen een if (else is dus in dit geval overbodig)

$query = "SELECT * FROM tekst ORDER BY datum DESC LIMIT 1";
$result = mysqli_query($db_connect, $query);


while($row = mysqli_fetch_array($result)) {
$TekstBlok1 = $row['HomeNLBlok1'];
$aanuitBlok1 = $row['aanuit'];
}
if ($aanuitBlok1 == 'aan') {
echo $TekstBlok1;
}
 
- SanThe -

- SanThe -

07/02/2013 21:54:31
Quote Anchor link
Werkt die van mij niet?
 
Alexander van den Hoek

Alexander van den Hoek

07/02/2013 22:07:34
Quote Anchor link
Nee. Ik kreeg deze melding: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in
Ik ben drie avonden hier mee bezig geweest en heb zo veel foutmeldingen gezien dat ik nu blij ben dat hij het doet.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/02/2013 22:57:18
Quote Anchor link
Alexander die van jou zou niet goed moeten werken zie mijn eerdere post. Nogmaals:

LIMIT 1 betekent dat hij slechts één record uit de database mag halen.

Als van die ene record aanuit op uit staat dan laat je die dus dankzij de if() niets op het scherm weergeven en krijg je dus niets te zien.

de oplossing is nogmaals je query aanpassen met een WHERE statement
Gewijzigd op 07/02/2013 22:58:39 door Frank Nietbelangrijk
 
- SanThe -

- SanThe -

07/02/2013 23:02:08
Quote Anchor link
Frank Nietbelangrijk op 07/02/2013 22:57:18:
Als van die ene record aanuit op uit staat dan laat je die dus dankzij de if() niets op het scherm weergeven en krijg je dus niets te zien.


Volgens mij is dat de bedoeling ook.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/02/2013 23:07:11
Quote Anchor link
als dat echt de bedoeling is dan is het wel okee natuurlijk.
 
Alexander van den Hoek

Alexander van den Hoek

08/02/2013 08:11:40
Quote Anchor link
Dat is inderdaad de bedoeling.

Bedankt voor jullie hulp.
 



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.