ID rowen loopt de soep in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Koen Hollander

Koen Hollander

26/02/2013 19:13:21
Quote Anchor link
Hallo allemaal,

Ik ben een groot CMS aan het maken(Webshop). Ik ben al heel ver, ik loop alleen tegen vervelende rare probleempjes aan. Zoals deze: Ik wil een ID rowen, maar dat lukt niet.

Ik row een ID in een tabel. Deze:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<td>ID: ".$row['id']."</td>" ;
?>


Daarna row ik datzelfde ID in een URL, en dat gaat dus mis. Zo doe ik dat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<td><a href='del_klant.php?id='".$row['id']."'>Verwijder</a></td></tr>";
?>


Als ik dan op verwijder klik gaat hij naar een pagina met een blanco ID.

Dit is de gehele code. Indien nodig:
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
include '../config.php';
$sql = mysql_query("SELECT * FROM users");
$row = mysql_fetch_array($sql);
while($row= mysql_fetch_assoc($sql)) {
echo "<TABLE BORDER=\"1\" ALIGN=\"center\">";
echo "<td>ID: ".$row['id']."</td>" ;
echo "<td>Gebruikersnaam: ".$row['username']."</td>";
echo "<td><a href='del_klant.php?id='".$row['id']."'>Verwijder</a></td></tr>";
/*} else {
echo "SQL kon de gegevens helaas niet laden.";
*/

}
?>


Mijn vraag: Hoe kan ik het ID toch in die URL krijgen???
Gewijzigd op 26/02/2013 19:13:49 door Koen Hollander
 
PHP hulp

PHP hulp

29/03/2024 12:49:40
 
- Ariën  -
Beheerder

- Ariën -

26/02/2013 19:27:34
Quote Anchor link
Wat doet lijn 4? Hetzelfde heb je al in je while() verwerkt.

Een paar tips:
- Gebruik geen * in je SELECT, maar specificeer alle velden die je hebt
- Pas goede foutafhandeling toe. Die else in je comment klopt niet, maar dat wist je denk ik al?
- gebruik bij voorkeur in je echo een single-quote, zodat je double-quotes voor HTML niet hoeft te escapen.
- Waarom TABLE met een hoofdletter? Dat is niet HTML 4.01 specified.
Het verhaal wanneer je wel/geen tables gebruikt laat ik even terzijde.
Gewijzigd op 26/02/2013 19:28:27 door - Ariën -
 
Koen Hollander

Koen Hollander

26/02/2013 20:00:01
Quote Anchor link
Ja maar Aar, weet jij dan wat het antwoord op de vraag is?
Quote:
Mijn vraag: Hoe kan ik het ID toch in die URL krijgen???
 
Obelix Idefix

Obelix Idefix

26/02/2013 20:09:54
Quote Anchor link
Het lijkt net of je alleen maar een oplossing wilt en niet geinteresserd bent in tips om beter te scripten. Jammer.
Koen Hollander op 26/02/2013 19:13:21:
Daarna row ik datzelfde ID in een URL, en dat gaat dus mis.

Wat staat er in de broncode van je pagina? Kunnen de ' een oorzaak zijn?
Gewijzigd op 26/02/2013 20:13:44 door Obelix Idefix
 
- Ariën  -
Beheerder

- Ariën -

26/02/2013 20:24:34
Quote Anchor link
Koen Hollander op 26/02/2013 20:00:01:
Ja maar Aar, weet jij dan wat het antwoord op de vraag is?
Quote:
Mijn vraag: Hoe kan ik het ID toch in die URL krijgen???

Door iets met mijn tips te doen?
 
Elwin - Fratsloos

Elwin - Fratsloos

26/02/2013 22:09:36
Quote Anchor link
Ben ik nu de enige die zes keer na moest denken wat 'ID rowen' zou betekenen?

@Aar
- Aar - op 26/02/2013 19:27:34:
Het verhaal wanneer je wel/geen tables gebruikt laat ik even terzijde.


Ik denk als ik de data zo bekijk dat het in dit geval in een tabel hoort (lijkt op een overzicht met gebruikers).
 
Koen Hollander

Koen Hollander

26/02/2013 23:52:32
Quote Anchor link
Ik doe tuurlijk wat met die tips. Heb bijv die else weggedaan en heb lijn 4 weggehaald. Ik snap alleen niet dat het id wel in een echo staat en niet in een link.


Toevoeging op 26/02/2013 23:53:41:

@elwin. Het is ook een overzicht van gebruikers

Toevoeging op 26/02/2013 23:56:18:

@oblix. Ik ben zeker iemand die beter wil scripten. Ik neem tips ook van harte aan
 
Frank WD

Frank WD

27/02/2013 00:20:59
Quote Anchor link
Hier is geen nette oplossing, maar wel eentje waar je veel van zal kunnen opsteken.
Lees hem eens door:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
// Error afhandeling, deze gebruiken bij het testen.
define( 'DEBUG_MODE', true ); // false = uit, true = aan
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);


include ("config.php"); // Inladen van de database connectie.

$query ="    SELECT
                id,
                username
            FROM                    
                users
            ORDER BY
                id
            ASC
        "
;
$result = mysql_query( $query );

// Zie: http://www.pfz.nl/wiki/mysql-foutafhandeling-in-php/
if ( false === $result )
{

    echo '<p>Er is iets fout gegaan bij het ophalen van de gegevens.<br />';
    if ('DEBUG_MODE')
    {

        echo '<br />Foutmelding: ' . mysql_error() . '
        <br />Query: '
. htmlspecialchars( $query );
    }

        echo '</p>';
}

else
{
    $i=1;
    while($row = mysql_fetch_assoc($result))
    {

        if($i == 1)
        {

            // print de kop met je type en weeknr
?>

            <table>
                <thead>
                    <tr>
                        <th>ID:</th>
                        <th>Gebruiker:</th>
                        <th>Verwijder</th>
                    </tr>
                </thead>

<?php
        } // end of if{}
        // We gaan de kolommen opmaken

?>

            <tr>
                <td>
                    <?php echo htmlspecialchars($row['id']) ?>
                </td>
                <td align="center" valign="top">
                    <?php echo htmlspecialchars($row['username']) ?>
                </td>
                <td align="center">
                    <a href="del_klant.php?id=<?php echo htmlspecialchars($row['id']) ;?>">Verwijder plaatje hier</a>
                </td>
            </tr>
<?php
            
        //hoog de $i op voor het volgende record
        $i++;
    }
// end of While()
?>

            </table>
<?php
} // ens of else()
?>
Gewijzigd op 27/02/2013 00:21:35 door Frank WD
 
Reshad F

Reshad F

27/02/2013 00:31:29
Quote Anchor link
Wat staat er in je link als je in de broncode kijkt? heb je ergens een online voorbeeld??

spring ook wat beter in met je code het is nu totaal onleesbaar want ik moet haakjes tellen wil ik weten wat waar bij hoort.. en als je moet tellen dan weet je dat het niet goed is...

En het hoort inderdaad niet in een tabel thuis die informatie maar dat is hier al zo vaak gezegd en mensen die leren het maar niet dus dat is gewoon verspilde moeite om uit te leggen ..

@Elwin Het is inderdaad een overzicht.. maar zou je het zien als tabulaire data? Ik twijfel er in dit geval sterk over met name door de verwijder knop.. In een overzicht zou je dan hebben een tabel met 2 kolommen Naam en ID. Wanneer je erachter verwijderen ziet dan is het naar mijn mening geen tabulaire data meer maar een functie in je cms om een gebruiker te verwijderen...
 
Koen Vlaswinkel

Koen Vlaswinkel

27/02/2013 07:51:31
Quote Anchor link
Waarom definieer je $row eerst als mysql_fetch_array() en dan ga je in de while $row gebruiken als mysql_fetch_assoc, haal de eerste $row dan weg. Zoals Aar al zei, gebruik enkele quotes, HTML moet dubbele quotes hebben, PHP enkele. Nu krijg je deze onoverzichtelijke situatie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<td><a href='del_klant.php?id='".$row['id']."'>Verwijder</a></td></tr>";
?>

De HTML die dan wordt gegenereerd is dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td><a href='del_klant.php?id='2'>Verwijder</a></td></tr>

Er staan dus 3 quotes in de link, terwijl er maar 2 nodig zijn. Je moet dus de quote na id= weghalen, misschien doet hij het dan al wel meteen.
Gewijzigd op 27/02/2013 07:51:57 door Koen Vlaswinkel
 
Koen Hollander

Koen Hollander

27/02/2013 08:55:58
Quote Anchor link
@Koen
Laten we kijken of dat werkt
 
Elwin - Fratsloos

Elwin - Fratsloos

27/02/2013 09:43:51
Quote Anchor link
Reshad F op 27/02/2013 00:31:29:
@Elwin Het is inderdaad een overzicht.. maar zou je het zien als tabulaire data? Ik twijfel er in dit geval sterk over met name door de verwijder knop.. In een overzicht zou je dan hebben een tabel met 2 kolommen Naam en ID. Wanneer je erachter verwijderen ziet dan is het naar mijn mening geen tabulaire data meer maar een functie in je cms om een gebruiker te verwijderen...


Duidelijk. Kan ik mij in vinden. Echter het feit dat de TS een while() gebruikt doet mij vermoeden dat er meer dan één gebruiker getoond wordt en dus een overzicht is. Maar helemaal duidelijk is dat inderdaad niet, aangezien in het eerste bericht de resultaat uit de query twee keer wordt gebruikt.

Of je vanuit het overzicht wel of niet een optie hebt om een gebruiker te verwijderen is mij om het even. Wij doen verwijder acties altijd vanuit het overzicht, omdat het dan mogelijk is om meerdere items tegelijk te verwijderen.
 
Koen Hollander

Koen Hollander

27/02/2013 20:33:24
Quote Anchor link
Goed ik heb er nu iets anders van gemaakt, dat werk wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include '../config.php';
$sql = mysql_query("SELECT * FROM users");
while($row= mysql_fetch_assoc($sql)) {
?>

<table border="1" align="center">
<td>ID: <?php echo $row['id']; ?></td>
<td>Gebruikersnaam: <?php echo $row['username']; ?></td>
<td><a href='del_klant.php?id=<?php echo $row['id']; ?>'>Verwijder</a></td></tr>
<?php
}
?>


Alleen nu lukt het verwijderen niet. Dit is de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include 'config.php';
if ($_GET['id'] == NULL) {
echo "Er is geen waarde om te verwijderen!";
}
elseif ($_GET['id'] != NULL) {
$sql = mysql_query ("DELETE FROM users WHERE id=".$_GET['id']);
}
elseif ($_GET['id'] != NULL AND $sql == true) {
echo "De gebruiker is uit de database gehaald. Deze wijziging is permanent!";
}
else {
echo "Er is een onbekende fout opgetreden!";
}

?>


Hij geeft alleen maar een witte pagina
 
- SanThe -

- SanThe -

27/02/2013 21:15:14
Quote Anchor link
Koen Hollander op 27/02/2013 20:33:24:
Alleen nu lukt het verwijderen niet. Dit is de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include 'config.php';
if ($_GET['id'] == NULL) {
echo "Er is geen waarde om te verwijderen!";
}
elseif ($_GET['id'] != NULL) {
$sql = mysql_query ("DELETE FROM users WHERE id=".$_GET['id']);
}
elseif ($_GET['id'] != NULL AND $sql == true) {
echo "De gebruiker is uit de database gehaald. Deze wijziging is permanent!";
}
else {
echo "Er is een onbekende fout opgetreden!";
}

?>


Hij geeft alleen maar een witte pagina


Als dit scriptje de gebruiker verwijdert krijg je inderdaad een lege pagina.
Scriptje is tevens zo lek als een mandje.
 
- Ariën  -
Beheerder

- Ariën -

27/02/2013 21:21:32
Quote Anchor link
En daarbij ook slecht uitgelijnd, en behoorlijk notice-gevoelig.
 
Frank WD

Frank WD

27/02/2013 21:59:51
Quote Anchor link
Waarom bouw je geen fout afhandeling in je script?
Ook kun je hier bijna geen taart van bakken, alles staat op elkaar zonder enige logica.

Kijk ook eens naar de code die ik je heb gegeven.
Daar staat een redelijk nette fout afhandeling in, die je ook zo in je delete pagina kunt proppen.
En zie je gebruikers overzicht pagina nog eens na. Je maakt nu voor elke gebruiker een compleet nieuw <table> aan, terwijl dit niet nodig is.
 
Jan Koehoorn

Jan Koehoorn

27/02/2013 23:05:59
Quote Anchor link
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
<?php
    include 'config.php';

    if ( isset ( $_GET[ 'id' ] ) && ctype_digit ( $_GET[ 'id' ] ) ) {
        if ( $res = mysql_query ( "DELETE FROM users WHERE id=" . $_GET[ 'id' ] ) ) {
            if ( mysql_affected_rows ( ) == 1 ) {
                echo 'Gebruiker verwijderd';
            }

            else {
                echo 'Record niet gevonden';
            }
        }

        else {
            echo mysql_error ( );
        }
    }

?>
 
Willem vp

Willem vp

28/02/2013 12:24:15
Quote Anchor link
Koen Vlaswinkel op 27/02/2013 07:51:31:
HTML moet dubbele quotes hebben, PHP enkele.

Ik zou het wel fijn vinden als je niet dit soort onzin loopt te verkondigen op een openbaar forum.

In HTML kun je zowel enkele als dubbele quotes gebruiken, net wat in een bepaalde situatie handiger voor je is. Als je je string opent met een enkele quote, moet je hem uiteraard wel weer met een enkele quote afsluiten, maar dat is eigenlijk de enige beperking.

Voor PHP geldt eigenlijk hetzelfde, alleen zit er nog verschil in de manier waarop de tekst tussen enkele of dubbele quotes wordt verwerkt; bij HTML is dat niet het geval.

In het kader van dit topic zou ik denk ik voor de leesbaarheid de voorkeur geven aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo sprintf("<td><a href='del_klant.php?id=%d'>Verwijder</a></td></tr>", $row['id']);
?>
 
Frank WD

Frank WD

28/02/2013 13:12:04
Quote Anchor link
Willem VP, wat je nu zegt is ook beetje onzin hoor.
Het zou daarom ook in jou geval erg fijn zijn dat je de info wel volledig maakt.

In HTML gebruiken we dubbele qoutes en in PHP enkele qoutes, waarom:
Als je in PHP aanwend om altijd enkele qoutes te gebruiken en in HTML dubbele, dan voorkom je voor je zelf problemen. Want je hoeft de dan niet de qoutes te om zeilen.

Voorbeeld: Wat is netter:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php echo "<a href=\"http://www.domein.nl\"> "; ?>
of
<?php echo '<a href="http://www.domein.nl"> ';?>


Na mijn weten is de 2e toch wel netter en overzichtelijke.
Als je van mening bent jou manier nog steeds de beste is. Dan zou ik daar graag eens een uitleg van zien.
Gewijzigd op 28/02/2013 17:01:56 door Frank WD
 
Jan Koehoorn

Jan Koehoorn

28/02/2013 13:15:52
Quote Anchor link
@ Frank: jouw voorbeelden zijn allebei fout. In het eerste voorbeeld moet je escapen met een backslash en in het tweede zet je single quotes binnen single quotes zonder ze te escapen.
 
Frank WD

Frank WD

28/02/2013 17:02:31
Quote Anchor link
Jan Koehoorn, je hebt gelijk en heb het gelijk aan gepast.
Was even te snel met type.
 

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