Door
Ignace Verschaeve
op 06-04-2021 09:36
gewijzigd op 06-04-2021 09:37
3.682 views
Ik weet niet of ik aan het juiste adres ben maar ik probeer het toch maar.
Wij hebben op onze site een zoekformulier om te zoeken op naam. Dan krijg je een mooie tabel te zien met de gevonden overeenkomsten. Dat ziet er zo uit:
Naam - voornaam - geboortedatum - overlijdensdatum - downloaden - record nr. - type bestand.
Als iemand nu op downloaden klikt krijgt die het betreffende pdf of foto bestand te zien en kan die dat downloaden.
Maar nu willen we een stap verder gaan. Als je op downloaden of een andere uitdrukking zoals "meer info" zou klikken kom je op een pagina terecht waar aan de hand van het record nr. Meer relevante info uit de database getoond wordt.
Het komt erop neer dat ik het recordnr. als variabele moet doorgeven (wil doorgeven) naar een php pagina die dan het betreffende record uitleest.
Ik heb al het net afgezocht maar ik vind niet echt een oplossing. Alleen hoe je uit een formulier de variabelen kunt doorgeven met $Get of $Post.
Dit is de code om naar een bepaald bestand te gaan maar dit zou iets moeten worden waardoor ik het recordnr. wil doorgeven naar een PHP pagina.
Iemand een tip hoe ik dit kan oplossen?
[quote="- Ariën - op 06/04/2021 13:58:35"]
Maar niet elke shared hosting heeft dat helaas.;-)
Offtopic: Is dat geen kwestie van vraag en aanbod?
[/quote]
MariaDB is zeer populair. En wil je zoiets van Oracle of microsoft is dat extra te betalen. En eens die je vast hebben geraak je moeilijk uit hun klauwen. Dat is een beetje zoals die cloud oplossingen. Eens je er bent kan je moeilijk overstappen naar een andere oplossing.
Maar inderdaad off topic.
Maar ik nu wel iets gevonden om mee te werken. Ik leer nu op mijn 68, CSS, HTML, PHP en Mysqli. Ik heb tenslotte nooit enige informatica opleiding gehad tenzij na mijn 56. Maar tenslotte al bezig met PC en internet sinds 1989.
En hetgeen ik nu doe is een mooie uitdaging die beetje bij beetje groeit.
Met MySQLi is het escapen een kwestie van deze functies/objecten:
<?php
// procedureel
$waarde = mysqli_real_escape_string($conn, $_GET['waarde']);
// of
// object-oriënted
$waarde = $mysqli->real_escape_string($_GET['waarde'])
// waarbij je $waarde gebruikt, netjes tussen single-quotes en buiten buiten je algemene quote.
// dus in procedurele vorm: mysqli_query($conn, "SELECT field1, field 2 FROM table WHERE id = '".$waarde."'");
?>
$Naam=$_POST[Naam];
$sql = "SELECT * FROM rouwbrief Where Naam LIKE '$Naam%' ORDER BY Naam ASC,Voornaam ASC";
$result = $conn->query($sql);
Ik vermoed nu dat ik de eerste lijn in die code moet vervangen door die object-oriented oplossing. En uiteraard $GET vervangen door $POST.
Ben ik mee of niet. Zeg het maar.
<?php
$waarde = $conn->real_escape_string($_POST['Naam']);
$sql = "SELECT * FROM rouwbrief WHERE Naam LIKE '".$Naam."%' ORDER BY Naam ASC,Voornaam ASC";
$result = $conn->query($sql);
?>
- Altijd je indexes in je globals tussen quotes, dus $_POST['naam'] in plaats van $_POST[naam]. Anders denkt PHP dat het een constante is.
- Variabelen buiten quotes. Het maakt het een stuk leesbaarder.
- SQL functies bij voorkeur in hoofdletters.
Dank u. We hebben werk om het uit te proberen. Ik had daar al veel op gesukkeld want hetgeen je vindt op het net is niet altijd correct of buiten gebruik. Ik heb dit stukje bij beetje moeten coderen en uitproberen tot ik iets werkbaar had.
[size=xsmall]Toevoeging op 07/04/2021 10:45:17:[/size]
- Ariën - op 06/04/2021 09:46:10
Je wilt dus niet direct iets downloaden?
Dan link je toch naar een script 'details.php?id=42', waar je de details op weergeeft en een downloadlink?
Hoe kan ik dan op die pagina alles weergeven uit die record?
Ik stuur ze dus door naar 'details.php?id=recordnummer'
Doe ik dan zoiets op die pagina:
$recordnummer.=$_GET[id];
$sql = "SELECT * FROM Huwelijken Where $recordnummer. = 'nr.' ";
Zodat ik dan het betreffen record volledig kan uitlezen?
Is mijn redenering fout of juist? Ik weet het even niet meer.
Ik heb ondertussen gemerkt dat mijn code verkeerd is de Where moet andersom zijn. Die ID uitlezen is OK. Als test print ik die eens op het scherm en dat is OK.
Maar ik krijg mijn code niet goed om mijn record uit te lezen. Er zit iets fout maar ik vind niet wat.
<?php
//Inladen van de instellingen.
include 'instellingen.php';
$conn = new mysqli($database_adres, $database_login_naam, $database_login_wachtwoord, $database_naam);
//connectie testen
if ($conn->connect_error)
{
die("verbinding mislukt: ".$conn->connect_error);
}
$nr.=$_GET[id];
echo "test1 "; echo "$nr.";
$sql = "SELECT * FROM Huwelijken Where nr. = '$nr.'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {while($row = $result->fetch_assoc()) {
echo "<br> id: ".$row["nr."].
"Naam: " .$row["Naam1"]
.$row["Voornaam1"]
.$row["Naam2"]
.$row["Voornaam2"]
.$row["Gemeente"]
.$row["Datum"].
"<br>" ;
}
}
else{echo " nul resultaten";
}
// Sluit de MySQL verbinding.
$conn->close();
echo "<br>-- Einde! --";
?>