Eén tegelijk uit tabel ophalen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

H. Fokker

H. Fokker

26/07/2006 13:27:00
Quote Anchor link
Hallo allemaal,

Wie kan mij uitleggen hoe ik een tabel zo kan benaderen, dat gegevens uit die tabel (een namenlijst) met één tegelijk worden opgehaald? Ik vermoed dat er iets moet zijn, dat aangeeft op welke positie in de tabel het gegeven moet worden opgehaald?

Ik wil de uitkomst gebruiken om deze te kunnen hyperlinken naar een bepaalde pagina. Ik lees wel overal hoe je een hele tabel kunt ophalen maar nergens hoe je een tabel één voor één kunt uitlezen.

Ik heb nu zoiets gemaakt:

"SELECT * FROM users WHERE rang LIKE '0' AND id LIKE '1'";

maar dat werkt niet want de id nummers zijn niet sequentieel aanwezig.

Is er misschien zoiets als: neem de naam op de eerste positie, dan de naam op de tweede positie, etc. ?

Afijn, ik ben een echte beginneling en weet nog te weinig van al die codes af, dus wil kan mij helpen?

Hartelijke groet,
Hans Fokker
 
PHP hulp

PHP hulp

22/12/2024 09:02:40
 
Jan Koehoorn

Jan Koehoorn

26/07/2006 13:30:00
Quote Anchor link
Ik snap toch niet helemaal wat je bedoelt. Waarom wil je een tabel één voor één uitlezen? Wil je bijvoorbeeld verschillende pagina's maken met daarop steeds de volgende naam of zo?
 
H. Fokker

H. Fokker

26/07/2006 13:40:00
Quote Anchor link
Ik wil inderdaad zoiets maken. Ik wil de namen plaatsen op één zelfde pagina, en van elk resultaat (naam) een nieuwe hyperlink maken naar een andere pagina.

Het gaat om een website van een basisschool met in de database 'rang' een groep leerlingnamen. Via de pagina kan de persoonlijke pagina van de leerling worden gekozen.
 
Jan Koehoorn

Jan Koehoorn

26/07/2006 13:50:00
Quote Anchor link
Okee duidelijk.
Op je overzichtspagina haal je alle leerlingen op alfabet op met hun id erbij:
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
<?php
    $sql
= "
        SELECT id, achternaam
        FROM leerlingen
        ORDER BY achternaam
        "
;
    if (!$res = mysql_query ($sql)) {
        trigger_error (mysql_errno () . ': ' . mysql_error ());
        echo '<pre>';
        echo $sql;
        echo '</pre>';
    }

    else {
        while ($row = mysql_fetch_assoc ($res)) {
            echo '<p><a href="leerling.php?id=' . $row['id'] . '">' . $row['achternaam'] . '</a></p>';
        }
    }

?>

Op de pagina leerling.php kun je nu via $_GET['id'] de juiste leerling uit de DB halen:
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
<?php
    // hier hoort eigenlijk een veiligheidscheck, iets als: if (is_numeric ($_GET['id']))
    $sql = "
        SELECT achternaam, veld2, veld3
        FROM leerlingen
        WHERE id = "
. $_GET['id'];
    if (!$res = mysql_query ($sql)) {
        trigger_error (mysql_errno () . ': ' . mysql_error ());
        echo '<pre>';
        echo $sql;
        echo '</pre>';
    }

    else {
        $row = mysql_fetch_assoc ($res));
        echo '<p>' . $row['achternaam'] . '</p>';
        // en de rest van de velden
    }

?>
 
Elwin - Fratsloos

Elwin - Fratsloos

26/07/2006 14:00:00
Quote Anchor link
De TS bedoeld denk ik meer iets in de trend van
SELECT kolom
FROM tabel
WHERE kolom = conditie
LIMIT 0,1

Die geeft de eerste regel uit de tabel. Op de tweede pagina zou die zo zijn:

SELECT kolom
FROM tabel
WHERE kolom = conditie
LIMIT 1,1

Etc, etc. Nu zijn de cijfers achter LIMIT gemakkleijk te vervangen door variabelen die je uit $_GET kan halen ofzo...

Elwin
 
Lissy Pixel

Lissy Pixel

26/07/2006 14:05:00
Quote Anchor link
Om toch ook de databases wat duidelijker voor mezelf te maken ga ik dit proberen te maken :)

Dus ik ga beginnen met de tabellen te maken en dan een form om ze te laten zien en dan 1 voor 1 aanklikbaar d.m.v. een link en dan zonodig te kunnen wijzigen.

Maar zien of dit gaat lukken :)\

PS gezien de warmte kan de uitwerking ook vanavond of morgen worden.
 
Jan Koehoorn

Jan Koehoorn

26/07/2006 14:09:00
Quote Anchor link
Elwin:
De TS bedoeld denk ik meer iets in de trend van
SELECT kolom
FROM tabel
WHERE kolom = conditie
LIMIT 0,1
Elwin

Als je het zo doet, moet je de conditie weghalen, anders gaat het fout. Het zou zo kunnen, maar ik vind mijn manier eenvoudiger. Het is trouwens "in de trant van en niet "in de trend van". Zo'n verspreking heet een malapropisme.
 
H. Fokker

H. Fokker

26/07/2006 14:19:00
Quote Anchor link
Bedankt Jan,

Ik denk dat je verder met me mee hebt gedacht dan mijn vraag is. Ik heb namelijk bestaande pagina's waarheen ik wil gaan linken, leerling1.php, leerling2.php, etc.

Ik bedoel wel een overzichtspagina te krijgen met de leerlingnamen apart uitgelezen, zoals Elwin ook beschrijft, om vervolgens aan iedere naam een pagina (leerling1.php etc.) te linken.

De uitkomst van het script leerling.php geeft de melding 'De pagina kan niet worden weergegeven'. Ik begrijp de bedoeling van jouw script denk ik wel, maar de pagina's die je op die manier aanmaakt zijn dan allemaal identiek, en dat is in mijn voorbeeld niet de bedoeling.

Wat is de bedoeling van veld2, veld 3? Zoekt deze naar een positie in de tabel?

Alvast bedankt!
 
Lissy Pixel

Lissy Pixel

26/07/2006 14:28:00
Quote Anchor link
Het opgegeven van veld1, veld2, etc. zijn de veldnamen die je zelf wellicht nog in je tabel hebt staan zoals bijv. het adres en/of mentor. Dit hoeft niet is slechts een optie die je kan doen en of weglaten.

Wil je standaard alles uit je tabel hebben dan doe je dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// query om alles te selecteren van tabel
$sql = "SELECT * FROM tabel";
?>
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel
 
Lissy Pixel

Lissy Pixel

26/07/2006 14:30:00
Quote Anchor link
foutje...
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel
 
H. Fokker

H. Fokker

26/07/2006 14:40:00
Quote Anchor link
Ik denk dat de oplossing van Elwin voor mij kan werken. Door het gebruiken van de optie LIMIT 0,1 kan ik iedere naam apart uit de tabel apart ophalen. Het gebruiken van die code kende ik niet. Wat betekenen de 0 en 1 in 0,1?

Ik ben nog wel nieuwsgierig naar je opmerking over het vervangen door variabelen die je uit $_GET kunt halen?

En Lissy, bedankt! Fijn dat een newbie hier ook zo goed geholpen wordt.
 
Willem Jan Z

Willem Jan Z

26/07/2006 14:46:00
Quote Anchor link
Ik snap nog niet helemaal waarom je allemaal losse pagina's per leerling hebt. Het is makkelijker en sneller om op 1 pagina dmv een script de mogelijkheid te creëren om elke leerling weer te geven.

Voorbeeld:
leerlingen.php
D.m.v. bijv. Jan zijn script alle leerlingen als lijs weergeven. De naam is een link die verwijst naar: leerling.php?id=hierhetleerlingid
'hierhetleerlingid' wordt vervangen door het id van de leerling die je uit de database haalt.

leerling.php
Hier haal je d.m.v. bijv. Jan zijn 2e scriptje de leerling op die bij het desbetreffende ID hoort die is meegegeven in de URL. Dan heb je 1 pagina (leerling.php) waar je de mogelijkheid hebt elke leerling stuk voor stuk weer te geven.

Ik hoop dat het zo een beetje duidelijk is wat de mogelijkheden zijn.

Mocht je een speciale reden hebben om toch aparte pagina's te willen, meld het even, misschien begrijp ik het dan beter.
 
H. Fokker

H. Fokker

26/07/2006 14:59:00
Quote Anchor link
Ha Willem-Jan,

Ik begrijp jouw verhaal denk ik wel, en ben het ook eens met jou en Jan dat zijn oplossing veel mooier is. Maar ik krijg een ander probleem wanneer ik zo ga werken, want de pagina waarheen wordt gelinkt is een pagina die de leerling zelf kan bewerken door een tekstbestand (eigenlijk een .dat bestand). Die is voor iedere leerling anders genummerd (1.dat, 2.dat, etc.) Ik verwijs op de leerlingpagina's die ik nu heb, in elke pagina naar een ander .dat bestandje. Ik weet niet hoe ik dat met jullie methode zou moeten oplossen?
Gewijzigd op 01/01/1970 01:00:00 door H. Fokker
 
Lissy Pixel

Lissy Pixel

26/07/2006 15:03:00
Quote Anchor link
Ja precies zo bedoelde ik het ook en kan je desgewenst individueel (dus per leerling) wijzigingen doorvoeren.

De LIMIT 0,1 geeft weer dat je maar 1 resultaat wenst te zien maak je er dus LIMIT 0,5 van dan krijg je de 1e 5 resultaten de 0 hierin betekend dat hij begint te tellen vanaf 0.
 
Jan Koehoorn

Jan Koehoorn

26/07/2006 15:31:00
Quote Anchor link
Als je met MySQL werkt kun je beter de informatie per leerling in de database opslaan, in plaats van in aparte bestandjes. Als je al heel veel DAT bestandjes hebt en niet opnieuw wilt beginnen, zou je per leerling kunnen opslaan in MySQL welk DAT bestand bij die leerling hoort. Dat is geen mooie oplossing, maar het werkt wel. Je krijgt dan bijvoorbeeld in je tabel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
id|naam|dat_bestand
1|jan|1.dat
2|piet|2.dat
3|kees|3.dat

In mijn eerste post gaf ik twee voorbeelden. In het tweede voorbeeld kun je dan de naam en het DAT bestand ophalen omdat de id via $_GET['id'] beschikbaar is.

Mooi is het dus niet omdat je beter alle gegegens in je DB kunt hebben. Als leerlingen hun eigen profielpagina moeten kunnen aanpassen, zou het veiliger zijn om met logincodes te werken.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
H. Fokker

H. Fokker

26/07/2006 16:44:00
Quote Anchor link
Er is een goede oplossing voor mijn vraag gekomen, ik kan weer verder. Ik ga het idee van Jan overwegen, dat vraagt wel weer nieuwe toverkunst. Iedereen bedankt, Lissy in het bijzonder voor aanmoediging.
 
Elwin - Fratsloos

Elwin - Fratsloos

26/07/2006 16:53:00
Quote Anchor link
Jan:
Elwin:
De TS bedoeld denk ik meer iets in de trend van
SELECT kolom
FROM tabel
WHERE kolom = conditie
LIMIT 0,1
Elwin

Als je het zo doet, moet je de conditie weghalen, anders gaat het fout. Het zou zo kunnen, maar ik vind mijn manier eenvoudiger. Het is trouwens "in de trant van en niet "in de trend van". Zo'n verspreking heet een malapropisme.
Hoezo moet je de conditie weghalen?

En bij de weg, zeik ff niet over trend of trant. Kan mij echt niet boeien met dit weer...

Elwin
 



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.