De Netweters
annuleren
Resultaten voor 
Zoek in plaats daarvan naar 
Bedoelde u: 

Hoe een database doorzoeken met PHP en MySQL?

Beantwoorden
igvfer
Professional Superweter
Berichten: 5991
Wat een systeem! Happy New Year! Jij bent een pro! Meer goede raad dan tante Kaat

Zitten er hier kraks die PHP kennen en vanuit een zoekformulier een Database kunnen doorzoeken? Ik heb al een ganse dag gezocht maar ik kom er niet.  Iemand met kennis van zaken?

 

Titel gewijzigd door Lieselot91 (mod) | Vorige titel: PHP en Mysql



  Ignace (igvfer) | Krak
  Niets is mooi of lelijk, het is enkel wij die het mooi of lelijk vinden.
  Vergeet niet om likes te geven en/of als oplossing te markeren.
Tags (3)
0 Likes
Beantwoorden
16 reacties
master-magic1
Experienced Meesterweter
Berichten: 2378
Meer goede raad dan tante Kaat Vraagbaakkampioen! Happy New Year! PS: 2500 posts. Indrukwekkend!

@igvfer kan je iets met deze uitleg en info 

https://www.phphulp.nl/php/forum/topic/database-maken-website/74114/

 

ben even aan het zoeken, ben ook soms bezig met php en sql en ben even aan het zoeken of ik een oplossing heb.


   Master-Magic | Krak
    https://www.master-magic.be
      Vergeet niet om likes te geven en/of als oplossing te markeren.
0 Likes
Beantwoorden
janne_man
Professional Meesterweter
Berichten: 3374
Netweters’ orakel! PhD in problem solving! Jij bent een ware apostel. Full speed writing!

@igvfer 

Vind je niets op deze site?


   janne_man | Krak
    In het land der blinden is eenoog koning.
      Vergeet niet om likes te geven en/of als oplossing te markeren.

0 Likes
Beantwoorden
Fulatins
Freshman Meerweter
Berichten: 59
Goed bezig! Dat begint te tellen! It's your first party! Say what?!

@igvfer 

Destijds had ik onderstaande voor een projectje gebruikt:

PHP Search and Display Results from MySQL

 

Grtz,

ASROCK Z390 Phantom G9 / i7-9700F 3000
G.Skill 32GB 3200MHz DDR4 Trident Z Neo
CooMas MasterLiquid ML360R RGB
0 Likes
Beantwoorden
Arnie
Freshman Bijna Allesweter
Berichten: 570
En wanneer slaap jij? JACKPOT! Lees je nog iets anders? ;-) De race is begonnen!

Ik gebruik een php script om mijn TNG (The Next Generation of Genealogy Sitebuilding) database uit te lezen, en de output te presenteren in een gendex (CSV) formaat.

Dit script is gebasseerd op wat ik ooit eens ergens gevonden hebt, en sindsdien gebruik ik het ook in gemodificeerde versies, afhankelijk van wat ik wil.

Misschien geeft dit wat inspiratie.

 

<?php
// Version 1.8 Alpha (updated for PHP7 compatibility)

ini_set('max_execution_time', 0);
header ('Content-type: text/plain; charset=utf-8');

include('config.php');

$db = mysqli_connect($database_host,$database_username,$database_password,$database_name) or exit;

if (isset($_GET['g'])) {
        $file = $_GET['g'];
        $sql_file = " AND gedcom='".mysqli_real_escape_string($file)."'";
}
else {
        $sql_file = "";
}

$query = "SELECT gedcom, personID, firstname, lnprefix, lastname, birthdate, birthplace, deathdate, deathplace, burialdate, burialplace, altbirthdate, altbirthplace FROM ".$people_table." WHERE living = '0'".$sql_file;
$result = mysqli_query($db, $query);

while ($row = mysqli_fetch_assoc($result)) {
        $rfn=$row['personID'].'&tree='.$row['gedcom'];
        $fname=$row['firstname'];
        if ($row['lnprefix'] != '') {$row['lnprefix'] = $row['lnprefix'].' ';}
        $sname=strtoupper($row['lnprefix'].$row['lastname']);
        $birtdate=$row['birthdate'];
                if ($birtdate == '') {$birtdate=$row['altbirthdate'];}
                $length = strlen($birtdate);
                $start = $length - 4;
                if ($length > 4) { $birtdate = substr($birtdate, $start); }
        $birtplac=$row['birthplace'];
                if ($birtplac == '') {$birtplac=$row['altbirthplace'];}
        $deatdate=$row['deathdate'];
                if ($deatdate == '') {$deatdate=$row['burialdate'];}
                $length = strlen($deatdate);
                $start = $length - 4;
                if ($length > 4) { $deatdate = substr($deatdate, $start); }
        $deatplac=$row['deathplace'];
                if ($deatplac == '') {$deatplac=$row['burialplace'];}

                $gdline = $rfn;
                $gdline .= "|";
                $gdline .= "|";
                $gdline .= $fname;
                $gdline .= " /";
                $gdline .= $sname;
                $gdline .= "/|";
                $gdline .= intval($birtdate);
                $gdline .= "|";
                $gdline .= $birtplac;
                $gdline .= "|";
                $gdline .= intval($deatdate);
                $gdline .= "|";
                $gdline .= $deatplac;
                $gdline .= "|\r\n";

                print($gdline);

}

mysqli_close($db);

?>

 

In de file config.php staan de credentials for de database toegang, zoals db-name, host, user en password.

Afhankelijk van je wensen kun je natuurlijk de query aanpassen, met meer complexe condities.



Meten is weten. Gissen is missen.
Beantwoorden
igvfer
Professional Superweter
Berichten: 5991
Wat een systeem! Happy New Year! Jij bent een pro! Meer goede raad dan tante Kaat

Dank u allemaal. Ik heb al van alles geprobeerd. Ik heb wel al eens mijn database kunnen uitlezen maar ik ben vergeten die oplossing apart op te slaan. Ik ben beginnen prutsen en nu ben ik helemaal de weg kwijt.

Ik zoek nog wat verder.



  Ignace (igvfer) | Krak
  Niets is mooi of lelijk, het is enkel wij die het mooi of lelijk vinden.
  Vergeet niet om likes te geven en/of als oplossing te markeren.
0 Likes
Beantwoorden
janne_man
Professional Meesterweter
Berichten: 3374
Netweters’ orakel! PhD in problem solving! Jij bent een ware apostel. Full speed writing!

@igvfer 

Om een Sqlite database uit te lezen gebruik ik altijd hetgeen je vindt op https://sqlitebrowser.org/

Je kan elke uitvoer gemakkelijk exporteren naar een csv.

 

Vroeger (toch al vele jaren geleden, minstens 10 mogelijk zelfs 20) gebruikte ik de ODBC connectie van Windows kon ik met (ik weet niet meer welk programma ik toen gebruikte) een join doen tussen enerzijds een db en anderzijds een Excel.


   janne_man | Krak
    In het land der blinden is eenoog koning.
      Vergeet niet om likes te geven en/of als oplossing te markeren.

0 Likes
Beantwoorden
igvfer
Professional Superweter
Berichten: 5991
Wat een systeem! Happy New Year! Jij bent een pro! Meer goede raad dan tante Kaat

@janne_man  @Arnie  @Fulatins @master-magic1 

Dit is code (zie onderaan) die werkt momenteel. Ik heb nu al verschillende manieren geprobeerd om de output netjes in een tabel te krijgen maar dan loopt het telkens vast. Eerst wil ik dit oplossen.

 

!DOCTYPE html>
<head>

</head>
<html>
<body>
 
<?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);
} 

$sql = "SELECT * FROM bidprentjes Where Naam ='Apers'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
 // output data of each row

	
 while($row = $result->fetch_assoc()) {
 echo "Naam: " . $row ['Naam']. "Voornaam: " .$row ['Voornaam']  . "Geboorte Datum".$row['geb.datum']."     Overlijden:  ".$row['overl.datum'].  "<br>";
 }
} else {
 echo "geen resulaten!";
}
 
// Sluit de MySQL verbinding.
$conn->close();

 
echo "<br>-- Einde! --";
?>

</body>
</html>

 De volgende stap is om via een formulier te laten zoeken naar een naam of eenzelfde namen.

 

Nu is dit de output. Niet echt netjes. Ik wil een tabel met Naam - Voornaam - Geboortedatum - Overlijdensdatum - link naar het bestand.

 

igvfer_0-1616422344013.png

En dan uiteraard de ganse layout van de pagina netjes maken.



  Ignace (igvfer) | Krak
  Niets is mooi of lelijk, het is enkel wij die het mooi of lelijk vinden.
  Vergeet niet om likes te geven en/of als oplossing te markeren.
0 Likes
Beantwoorden
Fulatins
Freshman Meerweter
Berichten: 59
Goed bezig! Dat begint te tellen! It's your first party! Say what?!

Hi @igvfer,

 

https://www.tutorialrepublic.com/php-tutorial/php-mysql-ajax-live-search.php 

 

Grtz,

ASROCK Z390 Phantom G9 / i7-9700F 3000
G.Skill 32GB 3200MHz DDR4 Trident Z Neo
CooMas MasterLiquid ML360R RGB
0 Likes
Beantwoorden
janne_man
Professional Meesterweter
Berichten: 3374
Netweters’ orakel! PhD in problem solving! Jij bent een ware apostel. Full speed writing!

@igvfer 

Zonder iets te kennen van PHP, zou ik aanbevelen om in html een tabel te maken met vier of vijf kolommen. Bij vier is zet je de naam als zichtbaar deel van de link.

 

Als je hier tot het einde scrolt, is er een voorbeeld om in kolommen te zetten.


   janne_man | Krak
    In het land der blinden is eenoog koning.
      Vergeet niet om likes te geven en/of als oplossing te markeren.

0 Likes
Beantwoorden
igvfer
Professional Superweter
Berichten: 5991
Wat een systeem! Happy New Year! Jij bent een pro! Meer goede raad dan tante Kaat

Met dank voor alle suggesties. Ik ben erin geslaagd om de database uit te lezen naar wens en op de site weer te geven zoals ik het wilde. Inclusief de link naar een bestaand bestand.

Het resultaat ziet er dan zo uit:

igvfer_0-1616509940796.png

 

Enkel nog wat aan de beveiliging werken.



  Ignace (igvfer) | Krak
  Niets is mooi of lelijk, het is enkel wij die het mooi of lelijk vinden.
  Vergeet niet om likes te geven en/of als oplossing te markeren.
Beantwoorden
igvfer
Professional Superweter
Berichten: 5991
Wat een systeem! Happy New Year! Jij bent een pro! Meer goede raad dan tante Kaat

Ondertussen nog een stapje verder. Kolommen worden nu ook netjes gesorteerd op Naam en vervolgens op voornaam. Best pittig om tegelijk HTML, PHP en Mysql onder de knie te krijgen. Maar nog veel te leren. Maar ook geleerd dat wat je op internet vindt niet altijd correct is of zelfs verouderd is. Maar combineren van verschillende bronnen lukt uiteindelijk wel. En goed leren kijken of de <>";' tekens wel correct staan. Zeer belangrijk.



  Ignace (igvfer) | Krak
  Niets is mooi of lelijk, het is enkel wij die het mooi of lelijk vinden.
  Vergeet niet om likes te geven en/of als oplossing te markeren.
0 Likes
Beantwoorden
janne_man
Professional Meesterweter
Berichten: 3374
Netweters’ orakel! PhD in problem solving! Jij bent een ware apostel. Full speed writing!

Ik heb me nu juist effe beziggehouden met Javascript en HTML 5. Ik ervoer dezelfde problemen. Het verouderde is gemakkelijker te vinden dan het huidige. Er kan echt niet gezegd worden dat al die talen dode talen zijn.


   janne_man | Krak
    In het land der blinden is eenoog koning.
      Vergeet niet om likes te geven en/of als oplossing te markeren.

0 Likes
Beantwoorden
igvfer
Professional Superweter
Berichten: 5991
Wat een systeem! Happy New Year! Jij bent een pro! Meer goede raad dan tante Kaat

@janne_man  Ik heb mij vandaag al zot gezocht hoe ik kan bekomen dat in het zoekveld EN alleen op de letters A tot Z kan gezocht worden EN dat je tevens minimaal 1 letter moet ingeven.

Dit werkt voor de letters:

 

<form class="form-inline" method="post" action="uitlezen4.php">
    <input type="text" name="Naam" class="form-control" pattern="[A-Za-z]" title="Enkel hoofd- en/of kleine letters" placeholder="Zoeken op naam..">
    <button type="submit" name="save" class="btn btn-primary">Zoeken</button>
  </form>

Maar dit pattern wil ik uitbreiden dat er minimaal 1 letter moet ingevoegd worden. Al diverse syntaxen gebruikt maar geen enkel werkt. Nu nog geen probleem want er zitten nog maar 7500 items in de database maar dat worden er in de toekomst nog veel meer.



  Ignace (igvfer) | Krak
  Niets is mooi of lelijk, het is enkel wij die het mooi of lelijk vinden.
  Vergeet niet om likes te geven en/of als oplossing te markeren.
0 Likes
Beantwoorden
janne_man
Professional Meesterweter
Berichten: 3374
Netweters’ orakel! PhD in problem solving! Jij bent een ware apostel. Full speed writing!

@igvfer 

Ik veronderstel dat je een onclick hebt. Voer een sciptje uit waarbij je test of de lengte groter is dan nul dan doe je uw php, anders foutmelding en terug wachten tot een nieuwe klik.

 

Edit:

Het was sport in het nieuws en voor mij is dat geen nieuws.

Ik denk aan zoiets:

<script>
function controle(){
if (invoer.length > 0) {phpfuctie()}
else {eventueel foutmelding;}
} // einde van de functie control
// de else mag weggelaten worden als je geen melding wenst te geven.

</script>

 

Als je al een blok hebt met met een script, kan je dat daarin toevoegen en dan behoud je maar één begin- en eindtag voor script.

 


   janne_man | Krak
    In het land der blinden is eenoog koning.
      Vergeet niet om likes te geven en/of als oplossing te markeren.

0 Likes
Beantwoorden