Een bepaald gedeelte oproepen uit database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

06/10/2010 19:05:36
Quote Anchor link
In de database "feedback" word via een formulier een zin met een cijfer gezet in de kolom "tekst".
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%." ?
 
PHP hulp

PHP hulp

19/04/2024 03:54:47
 
Jasper DS

Jasper DS

06/10/2010 19:19:36
Quote Anchor link
zorg dat het cijfer een eigen kolom heeft
 

06/10/2010 19:29:49
Quote Anchor link
PHP jasper op 06/10/2010 19:19:36:
zorg dat het cijfer een eigen kolom heeft


Idd, klinkt als een niet genormaliseerde db.
 
Robert Deiman

Robert Deiman

06/10/2010 22:57:47
Quote Anchor link
Je kan deze id's er op zich uithalen, maar een losse kolom is de optie waar je voor moet gaan.
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
 

07/10/2010 01:03:05
Quote Anchor link
@Robert

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $link_id = $_POST['link_id']; ?>


Zo gaat het in de database:
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
<?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."'
    )
"
;
?>


En dit is het invulformulier:

<select name="programma" id="programma">
<option name="programma" value="Kies rubriek" selected="selected">Kies programma</option>
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
<?php
      
      $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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $programma ; ?>
" class="selectie_hoofdrubriek">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowhoofdrubriek['naam']; ?>
</option>
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
<?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
                        ?>

<option name="programma" select="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $programma ; ?>
" class="selectie_subrubriek">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowrubriek['naam'].'  ['.$rowrubriek['id'].']'; ?>
</option>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
                        }//2
                        
      }//1
      ?>

</select>
<input name="link_id" type="hidden" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowrubriek['id'] ; ?>
" />

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".
 

09/10/2010 09:58:52
Quote Anchor link
Wie kan me helpen om apart dit "id" mee te geven?
 
Noppes Homeland

Noppes Homeland

09/10/2010 10:31:18
Quote Anchor link
Ik zat eens te kijken naar jouw attributen op de option tag. Dan constateer ik dat dat niet helemaal goed is: 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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
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
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.
Gewijzigd op 09/10/2010 10:42:10 door Noppes Homeland
 

09/10/2010 12:04:39
Quote Anchor link
@Noppes

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
                        ?>

<option name="hoofdrubriek" select="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowhoofdrubriek['id'] ; ?>
" class="selectie_hoofdrubriek">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowhoofdrubriek['naam']; ?>
</option>
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
<?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
                        ?>

<option name="programma" select="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowrubriek['id'] ; ?>
" class="selectie_subrubriek">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowrubriek['naam'].'  ['.$rowrubriek['id'].']'; ?>
</option>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
                        }//2
                        
      }//1
      ?>

</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.
 
- SanThe -

- SanThe -

09/10/2010 12:12:31
Quote Anchor link
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.
 
Noppes Homeland

Noppes Homeland

09/10/2010 12:32:38
Quote Anchor link
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.


`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
 
- SanThe -

- SanThe -

09/10/2010 12:38:05
Quote Anchor link
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.
 
Noppes Homeland

Noppes Homeland

09/10/2010 12:44:28
Quote Anchor link
Wat gebeurt er dan als je
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<option value="<?php echo $rowhoofdrubriek['id'] ; ?> class="selectie_hoofdrubriek">
<?php echo $rowhoofdrubriek['naam']; ?></option>


er dit van maakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
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.
 

10/10/2010 22:36:19
Quote Anchor link
Het lukt me niet om een "id" mee te geven. Ik zou dit graag met een "hidden field" willen doen omdat de bezoeker dit "id" niet hoeft te zien.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
                        ?>

<option value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowhoofdrubriek['naam'];?>
" class="selectie_hoofdrubriek">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowhoofdrubriek['naam'];?>
</option>

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
<?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
                        ?>

<option value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $rowrubriek['naam'].' ['.$rowrubriek['id'].']'; ?>
" class="selectie_subrubriek">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '- '.$rowrubriek['naam'].' ['.$rowrubriek['id'].']'; ?>
</option>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
                        }//2
                        }//1
                        ?>

</select>
 
Robert Deiman

Robert Deiman

11/10/2010 07:06:32
Quote Anchor link
Hoi Elsy,

Je kan natuurlijk ook deze keuze maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<option value="<?php echo $rowrubriek['id']; ?>" class="selectie_subrubriek">
<?php echo $rowrubriek['naam']; ?>
</option>


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?
 

13/10/2010 15:21:08
Quote Anchor link
@Robert

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
 



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.