Een bepaald gedeelte oproepen uit database
Op deze manier: Website.com [671]
Nu moet ik alleen dit getal hebben omdat dit een "id" is die ik uit een andere tabel moet halen.
$getal = "SELECT tekst FROM feedback"
$query = "SELECT url FROM linken WHERE id = ".$getal." ";
Omdat er veel meer in "tekst" staat kan hij dit niet vinden.
Moet je dit dan zo doen ".%$getal%." ?
zorg dat het cijfer een eigen kolom heeft
PHP jasper op 06/10/2010 19:19:36:
zorg dat het cijfer een eigen kolom heeft
Idd, klinkt als een niet genormaliseerde db.
De huidige gegevens zijn evt. nog wel om te zetten.
In elk geval ga je als volgt te werk:
Voeg een kolom toe aan de database, type integer (int) en een lengte gelijk aan die van het id-veld waar naar gezocht moet worden.
Geef deze kolom een logische naam.
Daarna kan je het volgende doen (hierbij ga ik ervanuit dat er alleen blokhaken om het id staan, en dat de sluit-blokhaak altijd aan het einde staat van de tekst:
INSERT INTO feedback SET nieuwe_kolomnaam = (SUBSTRING(SUBSTRING_INDEX(tekst, '[', -1), 0, -1) );
Overigens: Het werken met % tekens als "jokers" werkt zo:
SELECT id FROM table WHERE name LIKE "%Els%"
Dit zal alle namen teruggeven waar ergens "els" in voorkomt. Wat er tussen % en % staat moet precies zo voorkomen, echter wat daaromheen staat maakt niet uit. Eigenlijk moet het voldoen aan: alles_wat_je_maar_kan_bedenken + 'els' + alles_wat_je_maar_kan_bedenken.
In jou geval staat er in $getal de hele tekst. Als het goed is heb je geen id die voldoet aan de voorwaarde %hele tekst [111]%. Dus dat gaat al niet goed.
Daarnaast horen de % tekens niet bij PHP, maar bij het SQL gedeelte, je zou dus onderstaand idee krijgen:
"SELECT ... FROM ... WHERE id = '%".$getal."%' ";
Gewijzigd op 06/10/2010 23:16:53 door Robert Deiman
Gelukkig ben ik nog aan het testen met dit script dus zit er nog niets in de database.
Ik ga een nieuwe kolom aanmaken.
Hopelijk lukt het me om het "id" mee te geven via het invul formulier op de website.
Jullie horen nog hoe dit afloopt :)
Toevoeging op 07/10/2010 10:30:59:
Het lukt me niet om het "id" mee te geven met het formulier en zo in de database te zetten.
Dit staat er bovenaan de pagina:
Zo gaat het in de database:
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
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
<?php
$sql = "
INSERT INTO feedback
(
datumtijd,
tekst,
programma,
link_id,
bezoeker,
email,
zichtbaremail,
ip_adres
)
VALUES
(
'".$datumtijd."',
'".$tekst."',
'".$programma."',
'".$link_id."',
'".$bezoeker."',
'".$email."',
'".$zichtbaremail."',
'".$ip."'
)
";
?>
$sql = "
INSERT INTO feedback
(
datumtijd,
tekst,
programma,
link_id,
bezoeker,
email,
zichtbaremail,
ip_adres
)
VALUES
(
'".$datumtijd."',
'".$tekst."',
'".$programma."',
'".$link_id."',
'".$bezoeker."',
'".$email."',
'".$zichtbaremail."',
'".$ip."'
)
";
?>
En dit is het invulformulier:
<select name="programma" id="programma">
<option name="programma" value="Kies rubriek" selected="selected">Kies programma</option>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$hoofdrubriek = "
SELECT
id,
naam
FROM
hoofdrubriek
ORDER BY
sorteren, naam";
$resulthoofdrubriek = mysql_query($hoofdrubriek);
while($rowhoofdrubriek = mysql_fetch_assoc($resulthoofdrubriek)){//1
?>
$hoofdrubriek = "
SELECT
id,
naam
FROM
hoofdrubriek
ORDER BY
sorteren, naam";
$resulthoofdrubriek = mysql_query($hoofdrubriek);
while($rowhoofdrubriek = mysql_fetch_assoc($resulthoofdrubriek)){//1
?>
<option name="programma" select="" class="selectie_hoofdrubriek"></option>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$rubriek = "
SELECT
id,
hoofdrubriek_id,
naam
FROM
linken_nieuw
WHERE
hoofdrubriek_id = ".$rowhoofdrubriek['id']."
ORDER BY
naam";
$resultrubriek = mysql_query($rubriek);
while($rowrubriek = mysql_fetch_assoc($resultrubriek)){//2
?>
$rubriek = "
SELECT
id,
hoofdrubriek_id,
naam
FROM
linken_nieuw
WHERE
hoofdrubriek_id = ".$rowhoofdrubriek['id']."
ORDER BY
naam";
$resultrubriek = mysql_query($rubriek);
while($rowrubriek = mysql_fetch_assoc($resultrubriek)){//2
?>
<option name="programma" select="" class="selectie_subrubriek"></option>
</select>
<input name="link_id" type="hidden" value="" />
Aan het eind heb ik er een "hidden field" aan toegevoegd om het op deze manier te proberen.
Wie weet hoe ik dit moet doen?
De hele regel van "programma" lukt wel dus waarom niet het "hidden field".
Wie kan me helpen om apart dit "id" mee te geven?
http://www.w3schools.com/tags/tag_option.asp
De feedback gaat dus op hoofdrubriek? Je zult dus in de option in de value het rubrieks_id (link_id) moeten zetten.
maar dan zal je feedback tabel er als volgt uit moeten komen te zien:
datumtijd
tekst
rubriek_id
bezoeker
email
zichtbaremail
ip_adres
In de huidige situatie is programma gelijk aan link_id alleen dan in een verschillende verschijnings vorm, wat uiteraard niet handig is.
Ik hoop dat je met deze informatie er wel uit zult komen.
Ik zat eens te kijken naar jouw attributen op de option tag. Dan constateer ik dat dat niet helemaal goed is: De feedback gaat dus op hoofdrubriek? Je zult dus in de option in de value het rubrieks_id (link_id) moeten zetten.
Code (php)
1
2
3
2
3
<?php
echo '<option value="'.$rowrubriek['id'].'">'. $rowrubriek['naam'].'</option>';
?>
echo '<option value="'.$rowrubriek['id'].'">'. $rowrubriek['naam'].'</option>';
?>
maar dan zal je feedback tabel er als volgt uit moeten komen te zien:
datumtijd
tekst
rubriek_id
bezoeker
zichtbaremail
ip_adres
In de huidige situatie is programma gelijk aan link_id alleen dan in een verschillende verschijnings vorm, wat uiteraard niet handig is.
Ik hoop dat je met deze informatie er wel uit zult komen.
Gewijzigd op 09/10/2010 10:42:10 door Noppes Homeland
Helaas zie ik niet wat er fout is aan mijn option tag.
En het lukt me niet om het "id" nu in de database te zetten. Er staat "0".
Dit is de code nu:
<select name="programma" id="programma">
<option name="programma" value="Kies rubriek" selected="selected">Kies programma</option>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$hoofdrubriek = "
SELECT
id,
naam
FROM
hoofdrubriek
ORDER BY
sorteren, naam";
$resulthoofdrubriek = mysql_query($hoofdrubriek);
while($rowhoofdrubriek = mysql_fetch_assoc($resulthoofdrubriek)){//1
?>
$hoofdrubriek = "
SELECT
id,
naam
FROM
hoofdrubriek
ORDER BY
sorteren, naam";
$resulthoofdrubriek = mysql_query($hoofdrubriek);
while($rowhoofdrubriek = mysql_fetch_assoc($resulthoofdrubriek)){//1
?>
<option name="hoofdrubriek" select="" class="selectie_hoofdrubriek"></option>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$rubriek = "
SELECT
id,
hoofdrubriek_id,
naam
FROM
linken_nieuw
WHERE
hoofdrubriek_id = ".$rowhoofdrubriek['id']."
ORDER BY
naam";
$resultrubriek = mysql_query($rubriek);
while($rowrubriek = mysql_fetch_assoc($resultrubriek)){//2
?>
$rubriek = "
SELECT
id,
hoofdrubriek_id,
naam
FROM
linken_nieuw
WHERE
hoofdrubriek_id = ".$rowhoofdrubriek['id']."
ORDER BY
naam";
$resultrubriek = mysql_query($rubriek);
while($rowrubriek = mysql_fetch_assoc($resultrubriek)){//2
?>
<option name="programma" select="" class="selectie_subrubriek"></option>
</select>
Ik heb er ook al eentje "hoofdrubriek" genoemd omdat ik niet wist of ze allemaal hetzelfde mogen heten. Maar dat maakt niet uit.
Ik ben nu op een punt dat ik er totaal niets meer van snap.
Wat ik graag zou willen is dit:
Ik heb een hoofdrubriek met verschillende websites die daar onder vallen.
De bezoeker kan een website kiezen waar hij iets over wil schrijven.
In de database moet dus het "id" komen te staan van die website.
Alles wat ik in de "select" zet geeft hij niet mee.
Wel waarvoor de bezoeker gekozen heeft en daarom had ik daar de naam en het id in gezet. Maar dat ziet er niet mooi uit.
Toevoeging op 09/10/2010 12:14:34:
'Select' is alleen om aan te geven dat deze optie is geselekteerd.
SanThe Nvt op 09/10/2010 12:12:31:
Een option heeft geen 'name' maar zeker wel een 'value'.
Toevoeging op 09/10/2010 12:14:34:
'Select' is alleen om aan te geven dat deze optie is geselekteerd.
Toevoeging op 09/10/2010 12:14:34:
'Select' is alleen om aan te geven dat deze optie is geselekteerd.
`select` is ook geen geldig attribuut, wel als je selected er van maakt
Echter heb je die al op de eerste option staan en dus kan je de rest van de options selected="selected" achterwege laten.
Gewijzigd op 09/10/2010 12:40:23 door Noppes Homeland
Noppes Homeland op 09/10/2010 12:32:38:
`select` is ook geen geldig attribuut, wel als je selected er van maakt
Die bedoelde ik.
Code (php)
er dit van maakt:
Code (php)
1
2
3
2
3
<?php
echo '<option value="'.$rowrubriek['id'].'">'. $rowrubriek['naam'].'</option>';
?>
echo '<option value="'.$rowrubriek['id'].'">'. $rowrubriek['naam'].'</option>';
?>
ja en dan moet je ook nog naar de afhandeling kijken, want die verander uiteraard ook hierdoor.
Nu heb ik het maar meegegeven in de "value" en kan de bezoeker het niet in het keuze menu zien maar wel in de resultaten die ik op de website laat zien.
Het is niet anders.....
<select name="programma" id="programma">
<option value="" selected="selected">Niet van toepassing</option>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$hoofdrubriek = "
SELECT
id,
naam
FROM
hoofdrubriek
ORDER BY
sorteren, naam";
$resulthoofdrubriek = mysql_query($hoofdrubriek);
while($rowhoofdrubriek = mysql_fetch_assoc($resulthoofdrubriek)){//1
?>
$hoofdrubriek = "
SELECT
id,
naam
FROM
hoofdrubriek
ORDER BY
sorteren, naam";
$resulthoofdrubriek = mysql_query($hoofdrubriek);
while($rowhoofdrubriek = mysql_fetch_assoc($resulthoofdrubriek)){//1
?>
<option value="" class="selectie_hoofdrubriek"></option>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$rubriek = "
SELECT
id,
hoofdrubriek_id,
naam
FROM
linken_nieuw
WHERE
hoofdrubriek_id = ".$rowhoofdrubriek['id']."
ORDER BY
naam";
$resultrubriek = mysql_query($rubriek);
while($rowrubriek = mysql_fetch_assoc($resultrubriek)){//2
?>
$rubriek = "
SELECT
id,
hoofdrubriek_id,
naam
FROM
linken_nieuw
WHERE
hoofdrubriek_id = ".$rowhoofdrubriek['id']."
ORDER BY
naam";
$resultrubriek = mysql_query($rubriek);
while($rowrubriek = mysql_fetch_assoc($resultrubriek)){//2
?>
<option value="" class="selectie_subrubriek"></option>
</select>
Je kan natuurlijk ook deze keuze maken:
Code (php)
De value is niet wat een bezoeker zelf ziet. Je kan hier alleen het id in zetten. Nu heb ik ook alleen de naam van de rubriek zichtbaar gemaakt in de selectlist, maar wellicht dat je daar toch het id nog wil laten zien?
Ik heb het nu op jou manier gedaan en dan met een JOIN tabel de naam uit linken_nieuw gehaald.
Het is nu zoals ik het graag wou hebben.
Als je een tijdje geen formulieren meer hebt gemaakt dan is het weer even moeilijk hoe dit ook alweer precies ging.
Bedankt allemaal voor de hulp.
Voor diegene die nog even wil kijken