PHP/MYSQL: (double) quotes en backticks ???

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Thomas van den Heuvel

Thomas van den Heuvel

02/07/2015 19:25:54
Quote Anchor link
Waarom verschillende tabellen voor dezelfde informatie?

Deze hele discussie is nogal zinloos als de database-opzet verkeerd is / veranderd moet worden.

Het heeft geen zin een situatie te bestuderen waarvan je weet / vermoedt dat deze niet klopt wanneer iets zijn ding niet doet. Haal eerst de fout(en) eruit en kijk dan of het probleem nog speelt.

Iedereen is nu druk bezig met het paard achter de wagen te spannen als je het mij vraagt.
 
PHP hulp

PHP hulp

20/04/2024 14:51:26
 
Johan West

Johan West

02/07/2015 19:50:11
Quote Anchor link
OK ik heb nu dit:

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

// maak connectie met dbase
// ophalen variabelen


if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 echo '<pre>' . print_r($_POST, 1) . '</pre>';


If (isset($_POST['linkoms']) && (is_array($_POST['linkoms'])) && ($linkoms = " ") && isset($_POST['linkadd'])
            && (
is_array($_POST['linkadd'])) && ($linkadd = " ")  ) {

    
    if (($_POST['kolom2'] == TRUE) && ($tab == TRUE ) ) {
    $tab = $_POST['kolom2'];
    var_dump($tab);
    
    echo gettype($_POST['linkoms']);
      echo gettype($_POST['linkadd']);
        
foreach($_POST['linkoms'] as $key => $dummy) {
 $oms = $conn->real_escape_string($_POST['linkoms'][$key]);
 $add = $conn->real_escape_string($_POST['linkadd'][$key]);
 $sql = "INSERT INTO $tab (linkoms, linkadd) VALUES ('$oms', '$add')" ;
  
if ($conn->query($sql) === TRUE)
                                {
echo  "De links zijn toegevoegd aan de database.  ";
                            echo "<br>";
                            echo $tab;
                                    
                            }
else {
            echo "Fout: ";
                echo " $sql ";
                echo " <br>";
             $conn->error;
            }

            echo "<br>" . "tekst;
            }

        }
    else {  echo "
<center>";
            echo "
we wachten op uw invoer";
            echo "
</center>";
            }
}
}


?>


Na het invullen van het forumulier krijg ik
de print_r output als volgt:

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
Array
(
    [linkoms] => Array
        (
            [0] => groene thee
            [1] =>
            [2] =>
            [3] =>
            [4] =>
        )

    [linkadd] => Array
        (
            [0] => http://www.groenethee.nl
            [1] => http://
            [2] => http://
            [3] => http://
            [4] => http://
        )

)


Daarna een Undefined Index melding voor de volgende regel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (($_POST['kolom2'] == TRUE) && ($tab == TRUE ) ) {


Het toevoegen van dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
echo gettype($_POST['linkoms']) // waarschijnlijk een string of integer.
      echo gettype($_POST['linkadd']) // waarschijnlijk een string of integer.


levert dus twee extra undefined index foutmeldingen op.
 
Thomas van den Heuvel

Thomas van den Heuvel

02/07/2015 19:58:08
Quote Anchor link
Nogmaals: waarom sla je deze informatie op in verschillende tabellen?

Er zijn andere (en betere) manieren om je data te categoriseren.

EDIT: Daarnaast geef je ons maar de halve puzzel. In geen enkel bericht van jou staat het formulier waar de data vandaan komt. Hoe verwacht je van ons dat we dit fatsoenlijk kunnen analyseren (laat staan oplossen)?
Gewijzigd op 02/07/2015 20:16:34 door Thomas van den Heuvel
 
Obelix Idefix

Obelix Idefix

02/07/2015 20:25:29
Quote Anchor link
Kijk eens naar de kleuren in bovenstaande code. Klopt niet. De echo op regel 27 is groen op regel 41 rood. Dan moet er al een lampje gaan branden.

Waarom gebruik je op regel 7 ' en op regel 28 " bij je echo?

Waar komen op regel 10/11 $linkoms / $linkadd vandaan? en $tab op regel 14 (die maak je pas op regel 15 aan)?

Waarom zet je de ene keer een variabele binnen quotes (regel 33) en dan weer niet (regel 29)?
 
Johan West

Johan West

02/07/2015 22:50:37
Quote Anchor link
Thomas van den Heuvel op 02/07/2015 19:58:08:
Nogmaals: waarom sla je deze informatie op in verschillende tabellen?

Er zijn andere (en betere) manieren om je data te categoriseren.

EDIT: Daarnaast geef je ons maar de halve puzzel. In geen enkel bericht van jou staat het formulier waar de data vandaan komt. Hoe verwacht je van ons dat we dit fatsoenlijk kunnen analyseren (laat staan oplossen)?


Het invoer formulier voor linkoms en linkadd is als volgt:

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
<form action="pagina5.php" method="post" accept-charset="UTF-8"><?php
for ($i=0; $i < 5; $i++) {
    ?>
<p>
        
        <label for="linkoms_<?php echo $i ?>">
        Link Naam: <?php echo ($i + 1) ?>
        </label>
        
        <input type="text" name="linkoms[]"
        id="linkoms_<?php echo $i ?>"
        value="" /> <br> <br>
        
        
        <label for="linkadd_<?php echo $i ?>">
        Link Adres: <?php echo ($i + 1) ?>
        </label>
         <input type="text" name="linkadd[]"
        id="linkadd_<?php echo $i ?>"
        value="http://" /><br><br>
    
    </p><?php
}

?>
<p>
    <button type="submit">Opslaan</button>
</p>
</form>






Toevoeging op 02/07/2015 23:19:49:

Ik wist niet dat het zo belangrijk was. De tabel is zoals je weet variabel. Deze kun je kiezen mbv een checkbox. Dit is een apart script en een aparte pagina.

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
<?php
while($row = $result->fetch_assoc()){
        echo "<center>";
     $reeks = implode(" " , $row);
    echo $reeks;
    
    echo "<br>";
    echo "</center>";
    
?>

      
       <form action="pagina5.php"" method="post" >
    
    
    
    <input type="checkbox"  name="kolom2" value="<?php echo $reeks ?>"
    
    
</center>    
<?php

}

mysqli_close($conn);

?>
  
<center>
    <br><br><br>
      
    <input type="submit" method="post" value="Kies Rubriek" />
    </form>
?>



Ik ben verder totaal onbekend met programmeren en php maar het lukt dus wel om met $_POST['kolom2'] de inhoud te echoen of met var_dump op te halen.

Even verderop in het script werkt het niet meer.

Is dit een soort mechanisme van php? Of is het onlogisch om dingen dubbel te doen? Ik gebruik exact dezelfde code maar het resultaat is niet hetzelfde.
Gewijzigd op 03/07/2015 00:17:46 door Johan West
 
- SanThe -

- SanThe -

02/07/2015 23:26:53
Quote Anchor link
- SanThe - op 02/07/2015 11:11:22:
Op diverse plaatsen gebruik je = in een if().
Een = is een toekenning en geen vergelijking.
Een vergelijking is == of ===.


Heb je dit al gecontroleerd?
Ik zie nog staads = in de if().
 
Johan West

Johan West

03/07/2015 08:39:03
Quote Anchor link
- SanThe - op 02/07/2015 23:26:53:
- SanThe - op 02/07/2015 11:11:22:
Op diverse plaatsen gebruik je = in een if().
Een = is een toekenning en geen vergelijking.
Een vergelijking is == of ===.


Heb je dit al gecontroleerd?
Ik zie nog staads = in de if().


Voor een beginnende onervaren programmeur is het niet gelijk makkelijk te begrijpen wat nu het verschil is tussen == en === en vooral; met welke reden wordt het toegepast. Ik zoek er het eea over maar een goede manual over het gebruik van deze operatoren icm if vind ik niet.

Is er zo'n manual online en waar kan ik die vinden?
Gewijzigd op 03/07/2015 08:40:22 door Johan West
 
- Ariën  -
Beheerder

- Ariën -

03/07/2015 09:04:34
 
Johan West

Johan West

03/07/2015 10:50:19
Quote Anchor link
Hmm ok ik heb al wat meer tuts gevonden. Het lijkt er op dat == en === gewoon iets strenger zijn.

De if beslissing is niet altijd eenvoudig vooral als er meerdere vergelijkingen worden gemaakt.

Ik kan wel == of === gebruiken, maar de if beslissing werkt eerst wel, echter na een extr if niet. Gebruik ik deze afzonderlijk in een apart script dan werkt deze if beslissing wel.

stel ik heb een if beslissing zoals:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (isset($_POST['kolom2'] )


hoe zeg ik dat in gewone taal zeg maar.

Of dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
  if (($_POST['kolom2'] == TRUE)


en dan hebben we het over een select deel van de mogelijkheden. Voor beginnende onervaren programmeurs is dat noodzakelijke kennis en vooral Wat, Wanneer en Waar het toegepast moet worden.
 
Ivo P

Ivo P

03/07/2015 11:11:06
Quote Anchor link
if( .... )

Op de plek van de .... moet iets (een expressie) komen die -met wat goede wil- tot TRUE of FALSE leidt.

Voorbeeld:
if( 1 > 2)

Als 1 groter is dan 2. Dat is niet het geval, dus 1 > 2 levert FALSE.
PHP voert dus niet uit wat er na if komt.

if( 'a' == 'b')
ook dat is niet het geval, dus false.


behalve getallen of strings mag een expressie ook een functie zijn.

isset() is zo'n functie.
vertaald: bestaat()

dus if( isset($a) )

Als $a bestaat, dan levert isset() true op.

Gezien vanuit de if() staat er dan if( TRUE )


en je kunt een hele ketting van al dan niet geneste functies plaatsen tussen de haakjes van if(), maar uiteindelijk moet het iets worden dat voor PHP is terug te leiden tot

if(true) of if(false).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($_POST['kolom2'] == TRUE) ?>



dat is een slecht voorbeeld
Omdatt $_POST van buiten komt, is het niet zeker dat deze bestaat. En waarschijnlijk wil je dat controleren.

Hier vraag je of $_POST['kolom2'] gelijk is aan TRUE.
Nu komen post-waarden binnen als een string. Dat kan dus niet true zijn.

"gelukkig" en daarom schreef ik hierboven -met wat goede wil- is PHP bereid om alles dat "leeg" is tot FALSE te bombarderen en de rest naar true.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$a
= true;
$a = 1;
$a = 2;
$a = 'a';
$a = array(1, 2,4);

$b = false;
$b = null;
$b = ' ';
$b = array();

?>


Alle $a zouden tot true leiden, alle $b tot false.

Let wel: alleen als je == gebruikt.

Gebruik je === dan is ($a === true) alleen het geval voor de eerste.

Maar bottomline:
de expressie tussen de ( ) van if moet tot true of false leiden
 
Johan West

Johan West

03/07/2015 12:30:18
Quote Anchor link
Ivo P op 03/07/2015 11:11:06:

isset() is zo'n functie.
vertaald: bestaat()

dus if( isset($a) )

Als $a bestaat, dan levert isset() true op.

Gezien vanuit de if() staat er dan if( TRUE )


en je kunt een hele ketting van al dan niet geneste functies plaatsen tussen de haakjes van if(), maar uiteindelijk moet het iets worden dat voor PHP is terug te leiden tot

if(true) of if(false).


En moet $a dan tussen de accolades staan?
 
Ivo P

Ivo P

03/07/2015 12:33:27
Quote Anchor link
nee, tussen de haakjes.
De accoloades, dus { en }, staan om een code blok

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$a
= 10;
$a = true;
$a = date();
$a = is_file('/tmp/abc.txt');

if($a) {
  echo 'ja';
}

else {
  echo 'nee';
}

?>
 
Obelix Idefix

Obelix Idefix

03/07/2015 13:03:02
Quote Anchor link
Misschien (nog eens) helemaal opnieuw bij de basis van php / mysqli (/pdo) beginnen?!

Ik krijg nu het idee dat je iets wilt gaan maken, maar nog niet (voldoende) kennis van de beginselen hebt.
bv http://www.phptuts.nl/view/39/
 
Johan West

Johan West

04/07/2015 08:52:01
Quote Anchor link
OK maar zit er een relatie tussen de melding: Undefined Index en het instellen van een if voorwaarde?



Toevoeging op 04/07/2015 09:22:05:

Ik begin eigenlijk steeds meer het idee te krijgen dat het probleem ergens anders ligt nl. bij de mysql query.

De query is nu als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "INSERT INTO $tab (linkoms, linkadd) VALUES ('$oms', '$add')" ;


Kan het zijn dat een van jullie weet of voor MYSQL tabel variabelen soms meer commandos nodig zijn als je PHP gebruikt om de database aan te sturen?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/07/2015 09:55:11
Quote Anchor link
Oef Johan. Neem een bak koffie. Ga rustig achterover leunen, handen in de nek en creëer jezelf een beeld van een mini internet met drie computers:
- een web/php server
- een mysql server
- een client (browser/gebruiker)

De drie hebben NIETS MET ELKAAR te maken

Ze kunnen alleen commando's uitvoeren.
Dus als PHP het SQL commando goed in elkaar knutselt dan werkt dat commando gewoon.

Je kunt de SQL laten echo-en en daarna in de browser selecteren en kopiëren.
Vervolgens kun je dat commando in phpMyAdmin onder de SQL tab plakken en dan moet dat gewoon werken.
Bovendien kun je dan direct zien wat voor resultaat-set je van MySQL terug krijgt.

Dat is gewoon een leerzame test en helpt je PHP problemen te scheiden van SQL problemen.
 
Thomas van den Heuvel

Thomas van den Heuvel

04/07/2015 10:00:09
Quote Anchor link
Johan West op 04/07/2015 08:52:01:
OK maar zit er een relatie tussen de melding: Undefined Index en het instellen van een if voorwaarde?

Ja, als je een variabele een beginwaarde geeft in een if-blok kan dit in sommige gevallen leiden tot het niet bestaan van een variabele. Dit hangt af van hoe je je variabelen initialiseert.

Eerst moet je snappen hoe if-statements werken. Dit heeft Ivo P hierboven al prima uitgelegd.

Als je zoiets doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (1 == 2) {
    $test = 'hoi';
}
else {
    $something = 'lala';
}

?>

Dan zal alleen $something na afloop van dit if-statement bestaan want de conditie "1 == 2" zal nooit waar zijn (of anders gezegd, nooit evalueren tot true).

Het is altijd beter om variabelen die je hoe dan ook gaat gebruiken een zinnige initiële waarde te geven, of voordat je deze gaat gebruiken te controleren of deze een (zinnige) waarde hebben gekregen.

Waarschijnlijk is het handiger als je even een stapje terug doet en je je verdiept in boolse expressies (oftewel: statements die enkel true of false kunnen opleveren).

Dit heeft overigens niet specifiek iets te maken met MySQL.

Scheid, zoals Frank zegt, je problemen, als je deze op één hoop gooit (in één topic) dan is dit alleen maar verwarrender. Zowel voor jou als andere lezers.
Gewijzigd op 05/07/2015 11:24:45 door Thomas van den Heuvel
 
Johan West

Johan West

12/07/2015 19:46:06
Quote Anchor link
Misschien kunnen jullie een opsomming geven van de verschillende if condities die er zijn of weet je een goede tutorial erover?

Ik heb al een vrij groot scala aan mogelijkheden geprobeerd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
if (($_POST['kolom2'] == TRUE) && ($tab == TRUE ) )
if (($_POST['kolom2'] == " " ) && ($tab == " "))
if (isset ($_POST['kolom2']) && isset ($tab))
if (!isset ($_POST['kolom2']) && !isset ($tab))
if (!empty ($_POST['kolom2']) && !empty ($tab))
if (empty ($_POST['kolom2']) && empty ($tab))
if  ($_POST['kolom2'] !== " " ) && ($tab !== " " ))


Is het normaal dat je maar iets blijft proberen of is er ook een logica te vinden of zo'n conditie in te stellen?

Het kan ook zijn dat er nog condities zijn die ik niet ken.
 
Randy vsf

Randy vsf

12/07/2015 19:49:39
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (($_POST['kolom2'] == TRUE) && ($tab == TRUE ) )
?>

kan ook :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (($_POST['kolom2']) && ($tab) )
?>

Voor false:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ((!$_POST['kolom2']) && (!$tab) )
?>
Gewijzigd op 12/07/2015 19:50:53 door Randy vsf
 
- Ariën  -
Beheerder

- Ariën -

12/07/2015 19:50:48
Quote Anchor link
Je moet gewoon weten wat je van een functie verwacht, is het een boolean (true/false) of een string of misschien een integer, of zelfs een array.

Om te controleren of iets ingevuld is, gebruik ik dit altijd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(trim($var)=='') {
// leeg
}
?>
 
- SanThe -

- SanThe -

12/07/2015 19:53:27
Quote Anchor link
Een $_POST['....']-waarde zal nooit een boolean zijn. (true/false)
 

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