Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:06 Der er 40 kommentarer og
1 løsning

ang. foreach eller while med php og mysql.

har brug for noget til at hive felter ud af mysql med php.

altså som phpmyadmin gør.

Hvis der er 18 felter, så laver den 18 felter med data'erne i.

Nogle der ved hvordan jeg gør det?
Avatar billede jaw Nybegynder
13. juli 2004 - 17:08 #1
Det her skulle vist kunne:

<?
$q = mysql_query("SELECT * FROM tabel") or die(mysql_error());

while($row = mysql_fetch_array($q)) {
  echo $row['felt'];
}

?>
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:09 #2
ja det plejer jeg at bruge, men der skal man vide hvad felterne hedder.

skal bruge noget der selv kører alle felterne igennem, og tjekker typen på felterne, og så skriver dem ud, med data i.
Avatar billede jaw Nybegynder
13. juli 2004 - 17:12 #3
Den her, som jeg lige lavede til et andet spørgsmål, finder ud af hvor mange felter der er og smider dem i tekstfelter:

$q = mysql_query("SELECT * FROM tabel WHERE id = '1'");

$antal = mysql_num_fields($q);

echo"<form action='update.php' method='post'>";
while($row = mysql_fetch_array($q)){
  for($i = 0; $i < $antal; $i++) {
    echo"<input type='text' name='felt".$i."' value='".$row{$i}."'>";
  }
}

dog finder den ikke typen af feltet... Men det gør:

$query = ("DESC tabelnavn");
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:14 #4
hmm det må kunne kombineres... bare noget skidt at skulle lave et kald til mysql hver gang den skal tjekke et felt. :(

men finder ud af noget, og tester det lige, så vender jeg tilbage.
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:17 #5
smid lige et svar. ;)
Avatar billede jaw Nybegynder
13. juli 2004 - 17:18 #6
Yes sir ! :) Jeg kigger også lige en smule videre... Men du vil have det til at ligne phpmyadmin faktisk? Så feltnavnet øverst og værdierne nedenunder?
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:18 #7
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:19 #8
nej
Avatar billede jaw Nybegynder
13. juli 2004 - 17:20 #9
okey, den var ikke smuk... Ser næsten ud som om du får afsluttet php-tagget på en måde... Kan du ikke lige paste det?

Og så bliver det her et svar når jeg nu glemte at skifte til svar i den forrige :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:21 #10
lad os sige du har en gæstebog, og du skal kunne redigere i den.

$name: <input $type value="$dataer">

det er til et admin interface. hvor man skal kunne oprette poster, og redigere i de poster der allerede er.
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:21 #11
mig der dummede mig, er vant til <? og ?> skal bruge <?php og ?> *G*
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:22 #12
Er du med på hvor jeg vil hen?
Avatar billede jaw Nybegynder
13. juli 2004 - 17:23 #13
Ja, det tror jeg nok... Men så er det du har fået vist også det du leder efter, bortset fra, at den ikke lige skriver feltets navn...
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:23 #14
Det er sådan set dovenskab... for at slippe for at skulle lave alt html'en manuelt. at den så tjekker for data'er og felt type, og så genererer en form ud fra det.
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:24 #15
okey kigger på det.
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:26 #16
Yeps, den smider 18 felter ud, med data'er i. så skal jeg bare finde typen, og kombinere det, noget du vil hjælpe med?
Avatar billede jaw Nybegynder
13. juli 2004 - 17:27 #17
Jeg prøver, men hvorfor vil du absolut vide typen? Et <input> felt kan jo ikke skelne alligevel...
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:28 #18
nej, men skal vide om det er input eller text felt.
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:29 #19
$s = mysql_query("DESC $mysql_db_table");

while($row_desc = mysql_fetch_array($s)) {
for($i = 0; $i < $antal; $i++) {
  echo $row{$i} . "<br>\n";
}
}

virker ikke.
Avatar billede jaw Nybegynder
13. juli 2004 - 17:29 #20
nej, det vil ikke virke... giv mig lige et par minutter, bliver lige nødt til at slå et par funktioner sammen og afprøve det...
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:31 #21
ahhh tror jeg har løst det. ;)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:31 #22
samme her. *G*
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:35 #23
Så er den løst. ;)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:35 #24
$q = mysql_query("SELECT * FROM $mysql_db_table WHERE id = '1'");

$antal = mysql_num_fields($q);

echo"<form action='update.php' method='post'>";
while($row = mysql_fetch_array($q) && $s = mysql_query("DESC $mysql_db_table")){
  for($i = 0; $i < $antal; $i++) {
  echo"<b>" . mysql_field_name($q, $i) . ":</b> <input type='" . mysql_field_type($q, $i) . "' name='" . mysql_field_name($q, $i) . "' value='".$row{$i}."'><br>\n";
}
}
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:36 #25
Så skal den bare rettes til, så den skifter blob og text ud med tekst felter. ;)
Avatar billede jaw Nybegynder
13. juli 2004 - 17:37 #26
Ja, det ser jo fint ud... Også noget i den stil jeg var ved at være ude i :)
Avatar billede jaw Nybegynder
13. juli 2004 - 17:39 #27
...men forstår ikke lige hvad du mener bytte felterne ud med tekst-felter... De er jo tekst-felter nu?
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:40 #28
ja. og dem der så står som blob i databasen skal jo laves om til <textarea> felter. ;)
Avatar billede jaw Nybegynder
13. juli 2004 - 17:43 #29
ahh, det er det du vil...

det kan du vel bare:
if(mysql_field_type($q, $i) == "blob") {
  echo "<textarea>". $row{$i} ."</textarea>";
} else {
  echo "<input type="text" blahblah>";
}

?
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:46 #30
http://www.alabit.dk/scanvikar/v1/admin/

sådan her kommer det til at se ud, så bare hvor den er rettet til, osv. hmmm, hvorfor vil den ikke skrive data'erne ind!?
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:47 #31
sådan hehe.
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:47 #32
Godt så kan jeg selv rette den til.

Nu til næste problem hvis du er frisk?? kan godt afsætte flere point, hvis det er?
Avatar billede jaw Nybegynder
13. juli 2004 - 17:47 #33
Den skriver da fint? :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:49 #34
ja nu. mig der havde lavet en fejl. :P havde smidt en :

&& $s = mysql_query("DESC $mysql_db_table")

i min while løkke, den er fjernet. *G*
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:50 #35
jeg skal også bruge et script, der kan tage imod den formular, og smide dem ind i databasen. og enten indsætte dem som nye, eller erstatte dem.
Avatar billede jaw Nybegynder
13. juli 2004 - 17:53 #36
Det nemmeste er at lave en UPDATE

mysql_query("UPDATE `tabel` SET `felt` = '$variabel' WHERE `id` = '$id' LIMIT 1");
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:53 #37
hmmm jeg må kunne køre alle request felterne igennem, og hive dataerne ud der, og smide dem ind.. men hvordan fanden, får jeg lavet det, så den ikke laver et database kald for hvert request felt den laver.??
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 17:54 #38
ja men at skulle lave 18 updates, pr. post der skal rettes.
Avatar billede jaw Nybegynder
13. juli 2004 - 17:57 #39
Det kan du også:

mysql_query("UPDATE `tabel` SET `felt1` = '$variabel1', `felt2` = '$variabel2' WHERE `id` = '$id'");
Avatar billede jaw Nybegynder
13. juli 2004 - 17:58 #40
...og tak for point :)
Avatar billede blackscorpion Nybegynder
13. juli 2004 - 18:03 #41
hmmm kan jeg ikke lave en

$sql = "UPDATE 'tabel' SET ";

for($i = 0; $i<18; $i++) {
$sql .= "felt = 'request['$i']";
}

??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester