email met database gegevens lukt niet
Hier worden de gegevens die toegevoegd of gewijzigd zijn geupdate in de database.
Dit lukt perfect.
Op het einde van het script wil ik dat de samenvatting van de gegevens gemaild word naar de persoon in kwestie.
De mail komt niet aan.
Iemand een idee?
Gewijzigd op 20/12/2011 14:10:30 door Bert vandenbogaerde
SQL Boilerplate
- Regel 19 t/m 40 en 47 t/m 68 zijn onnodig en kosten alleen maar geheugen, gebruik gewoon de post variabelen in je script
- Haal variabelen buiten quotes
- MySQL is met hoofdletters. Dus niet 'select iets from iets' maar 'SELECT iets FROM iets'
- Gebruik geen * in queries, maar selecteer wat je wilt. Dit is sneller en overzichtelijker
- Gebruik de juiste mail headers: http://wiki.santhe.nl/index.php/De_juiste_mailheaders
- Gebruik juiste foutafhandeling. Een voorbeeld kun je vinden op: - Regel 19 t/m 40 en 47 t/m 68 zijn onnodig en kosten alleen maar geheugen, gebruik gewoon de post variabelen in je script
- Haal variabelen buiten quotes
- MySQL is met hoofdletters. Dus niet 'select iets from iets' maar 'SELECT iets FROM iets'
- Gebruik geen * in queries, maar selecteer wat je wilt. Dit is sneller en overzichtelijker
- Gebruik de juiste mail headers: http://wiki.santhe.nl/index.php/De_juiste_mailheaders
als ik $aan aanpas naar een emailadres ([email protected]) dan komt het aan.
Alleen de database data word niet in de mail geplaatst.
Komt daar een geldig email adres uit?
Waarbij die quotes natuurlijk helemaal onzin zijn. Zoals al gezegd.... variabelen buiten quotes!
het word niet verstuurd naar het adres die ik wil.
Hoe definieer ik de variabelen dan?
Ok dan plaats ik alle variabelen buiten quotes.
Gewijzigd op 18/12/2011 14:52:45 door bert vandenbogaerde
Wouter J op 18/12/2011 14:24:54:
- Regel 19 t/m 40 en 47 t/m 68 zijn onnodig en kosten alleen maar geheugen, gebruik gewoon de post variabelen in je script
Wouter gaf je het antwoord al. Gewoon de waardes in $_POST gebruiken.
Dus waar je eerst deed
Kan je gewoon doen:
En dan dus ook de variabelen buiten quotes...
Gewijzigd op 18/12/2011 15:01:28 door Erwin H
Heb dit reeds geprobeerd maar blijkbaar werkt dit niet.
Als ik een emailadres invul bij $aan dan komt de mail aan.
Maar er staan geen opgevraagde waardes (".$_POST["voornaam_".$row[id]].") bij.
Schrijf voor de grap eens je heel POST array naar het scherm (met print_r($_POST)). Wat zie je dan?
Gewijzigd op 20/12/2011 14:59:29 door bert vandenbogaerde
Dan is er nog een waarde om te checken: wat is $row[id]? Die gebruik je overal om dat nummer te krijgen (415 in bovenstaand voorbeeld), dus is $row[id] inderdaad 415? Ergens denk ik van niet, want ik kan die 'id' niet plaatsen. Het is geen variabele namelijk (dan zou het $row[$id] moeten zijn). Echo die dus eens.
Volgens mij werkt bert niet met constants (id) maar bedoelt hij een string ('id')...
inderdaad een string
Als je input ($_POST of $_GET en dat soort dingen) onbeveiligd in een query zet is je database te hacken. En als je diezelfde waarden onbeschermd in je email zet is je email niet meer veilig. Zie SQL-Injection en E-Mail-Injection.
Wouter J op 18/12/2011 15:45:00:
Volgens mij werkt bert niet met constants (id) maar bedoelt hij een string ('id')...
Precies, dus $row[id] gaat niet werken, maar $row['id'] zou wel moeten werken.
Dus nogmaals Bert, echo $row[id] eens, of verander het meteen naar $row['id'] en echo dat.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
Dit is een stukje van de error die ik krijg.
Gewijzigd op 20/12/2011 14:59:13 door bert vandenbogaerde
waarom defineer je je post binnen de while eigenlijk?
wat wil je bereiken?
en in de melding die je geeft zet je neer ""De gegevens zijn opgeslaan." is dit Belgisch?
Iedereen bedankt voor de reacties!