CodeIgniter: überprüfen ob Datensatz vorhanden ist, habe alles versucht
Ich habe eine CodeIgniter Projekt für die Schule und ich brauche, um zu erstellen ein ticket mit Zugangsdaten. Wenn der Benutzer noch nicht in der Datenbank, die Daten, die er ausgefüllt in die form wird in die Datenbank eingefügt, und wenn er schon in der Datenbank vorhanden ist, wird nur ein ticket erstellt wird mit seiner bereits vorhandenen Benutzer-id.
Ich habe versucht, um zu überprüfen, ob ein Benutzer existiert, der mit seiner e-mail, aber ich hatte kein Glück. Googeln für Stunden, versuchte Rückrufe, normal Validierungen, you name it. Ich kann einfach nicht scheinen, um es zu arbeiten und würde wirklich zu schätzen einige helfen. Hier ist meine aktuelle code:
Controller
public function create_ticket() {
$this->load->library('form_validation');
//field name, error message, validation rules
$this->form_validation->set_rules('voornaam', 'Voornaam', 'trim|required');
$this->form_validation->set_rules('tussenvoegsel', 'Tussenvoegsel', 'trim');
$this->form_validation->set_rules('achternaam', 'Achternaam', 'trim|required');
$this->form_validation->set_rules('email', 'E-mailadres', 'trim|required|valid_email');
$this->form_validation->set_rules('geboortedatum', 'Geboortedatum', 'required');
$this->form_validation->set_rules('postcode', 'Postcode', 'trim|required');
$this->form_validation->set_rules('woonplaats', 'Woonplaats', 'trim|required');
if($this->form_validation->run() == FALSE)
{
echo "Failed";
$this->reservate();
}
else
{
$this->ticket_model->add_ticket($email);
$this->reservate();
}
}
Modell:
public function add_ticket($email) {
$query = $this->db->query("SELECT email FROM visitor
WHERE email = '".$email."'");
if($query->num_rows() == 0){
$data = array(
'voornaam' => $this->input->post('voornaam'),
'tussenvoegsel' => $this->input->post('tussenvoegsel'),
'achternaam' => $this->input->post('achternaam'),
'email' => $this->input->post('email'),
'geboortedatum' => $this->input->post('geboortedatum'),
'postcode' => $this->input->post('postcode'),
'woonplaats' => $this->input->post('woonplaats')
);
$this->db->insert('visitor', $data);
}
else {
return false;
}
}
Anzeigen (wenn überhaupt wichtig)
<?php echo validation_errors(); ?>
<h1>Ticket Bestellen</h1>
<label>
<span>Voornaam</span>
<input type="text" class="input_text" name="voornaam" id="voornaam"/>
</label>
<label>
<span>Tussenvoegsel</span>
<input type="text" class="input_text" name="tussenvoegsel" id="tussenvoegsel"/>
</label>
<label>
<span>Achternaam</span>
<input type="text" class="input_text" name="achternaam" id="achternaam"/>
</label>
<label>
<span>E-mailadres</span>
<input type="text" class="input_text" name="email" id="email"/>
</label>
<label>
<span>Geboortedatum</span>
<input type="text" id="geboortedatum" name="geboortedatum" placeholder="dd-mm-jjjj">
</label>
<label>
<span>Postcode</span>
<input type="text" class="input_text" name="postcode" id="postcode"/>
</label>
<label>
<span>Woonplaats</span>
<input type="text" class="input_text" name="woonplaats" id="woonplaats"/>
</label>
<input type="submit" class="button" value="Reserveren" />
</label>
Die Fehler ich erhalte, ist:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: E-Mail
Mit dem Namen: controllers/booking.php
Zeilennummer: 42
Ich weiß nicht, warum dies geschieht, weil, wenn ich nicht setzen die $email-variable gibt, bekomme ich die Fehlermeldung, dass er fehlt, ein argument also, ich bin ein wenig verwirrt hier. Auch, das Hauptproblem, das ich habe, ist, dass, obwohl es Fehler gegeben und alles, er fügt den Datensatz in die Datenbank sowieso... Obwohl ein Datensatz mit der gleichen e-mail-Adresse bereits vorhanden!
Ich weiß wirklich nicht, wie man dieses Problem beheben, so dass jede Hilfe wird sehr geschätzt. Vielen Dank im Voraus.
InformationsquelleAutor J_vdv | 2014-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur ein Fehler, Assing E-Mail-Feld Daten auf eine variable, dann geben Sie Ihre E-Mail an die
add_ticket
Modell. Das ist es 🙂Nun Ändern Ihr Modell, Nur ein wenig,
hahaha, manchmal passiert es 😉
Ich bekomme einen syntax-Fehler mit, dass neue Abfrage, die Sie mir aber. Ich sehe nicht, wo das problem liegt, da sollte es richtig sein... "Sie haben einen Fehler in Ihrer SQL-syntax; Lesen Sie im Handbuch, das entspricht Ihrer MySQL-server-version für den richtigen syntax in der Nähe '[email protected]" LIMIT 1' in Zeile 2" Irgendwelche Ideen?
Hoppla Recht, sollte
".$this->db->escape($email)."
haben, prüfen Sie diese für weitere Informationen: ellislab.com/codeigniter/user-guide/database/queries.htmlah stimmt. Das funktioniert! Vielen Dank 🙂
InformationsquelleAutor jogesh_pi