• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PF2G

[Resolvido] Problema com Select

31 posts in this topic

Boas,

Eu estou a fazer a listagem dos automoveis do utilizador, e na edição faço uma box popup, mas nao consigo por a info nas input text:

listagem dos automoveis (matricula e apolice)

<?php
  $cod_car;
  $select_id="SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'";
  $query_id=mysql_query($select_id, $connect) or die(mysql_error());
  $id=mysql_fetch_assoc($query_id);

  $select_car="SELECT * FROM cars WHERE id_owner='".$id['id_user']."'";
  $query_car=mysql_query($select_car, $connect) or die(mysql_error());
  $car=mysql_fetch_assoc($query_car);
 ?>

 <table class="car_info">
 <?php	   
  if($row_car=mysql_num_rows($query_car)!=0){
  do{
 ?>
  <tr>
   <td align="left">
    Matrícula:
   </td>

   <td width="10px"></td>

   <td align="right">
    <label> <?php echo $car['matricula_car']; ?> </label>
   </td>
   <td>
    <a href="#login-box" class="login-window">
	 <input class="button_edit" name="edit_car" type="submit" value="Editar"/>
    </a>
   </td>
  </tr>

  <tr height="10px"></tr>

  <tr>
   <td align="left">
    Apólice:
   </td>

   <td width="10px"></td>

   <td align="right">
    <label> <?php echo $car['apolice_seg']; ?> </label>
   </td>

  </tr>
  <tr>

   <td align="right" colspan="3">
    <label > <?php echo $car['id_car']; ?></label>
   </td>

  </tr>

  <tr height="35px"></tr>
  <?php
   }while($car=mysql_fetch_assoc($query_car));
  }
  ?>
 </table>

box popup

<?php
                       $select_id_user="SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'";
                       $query_id_user=mysql_query($select_id_user, $connect) or die(mysql_error());
                       $id_user=mysql_fetch_assoc($query_id_user);

                       $select_car_id="SELECT * FROM cars WHERE id_owner='".$id['id_user']."'";
                       $query_car_id=mysql_query($select_car_id, $connect) or die(mysql_error());
                       $car_id=mysql_fetch_assoc($query_car_id);
                   ?>

               <!-- hidden inline form -->
                   <div id="login-box" class="login-popup">
                   <a href="#" class="close"><img src="images/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>    
                     <form method="post" class="signin" action="edit_car.php">
                           <fieldset class="textbox">
                               <label class="username">
                                   <span>Matrícula:<?php echo $car_id['id_car']; ?></span>
                                   <input type="text" id="username" name="matricula_info" value="<?php echo $car_id['matricula_car'] ?>" />
                               </label>

                               <label class="password">
                                   <span>Apólice:</span>
                                   <input type="text" id="password" name="apolice_info" value="<?php echo $car_id['apolice_seg'] ?>" />
                               </label>

                               <input class="button" type="submit" name="edit_car_info" value="Editar"/>
                           </fieldset>
                     </form>

Alguem me pode ajudar, sff?

Obrigado,

PF2G

0

Share this post


Link to post
Share on other sites

<label class="username">
<span>Matrícula:<?php echo $car_id['id_car']; ?></span>
<input type="text" id="username" name="matricula_info" value="<?php echo $car_id['matricula_car'] ?>" />
</label>

<label class="password">
<span>Apólice:</span>
<input type="text" id="password" name="apolice_info" value="<?php echo $car_id['apolice_seg'] ?>" />
</label>

PF2G nao sei se reparaste mas esqueceste-te de colocar ";" em todos os echos que fizeste...

e podias usar um while aqui

[color=#000088][font=Consolas, Monaco, LucidaConsole, LiberationMono, DejaVuSansMono, BitstreamVeraSansMono, CourierNew, monospace][size=3]$car_id[/size][/font][/color][color=#339933][font=Consolas, Monaco, LucidaConsole, LiberationMono, DejaVuSansMono, BitstreamVeraSansMono, CourierNew, monospace][size=3]=[/size][/font][/color][color=#990000]mysql_fetch_assoc[/color][color=#009900][font=Consolas, Monaco, LucidaConsole, LiberationMono, DejaVuSansMono, BitstreamVeraSansMono, CourierNew, monospace][size=3]([/size][/font][/color][color=#000088][font=Consolas, Monaco, LucidaConsole, LiberationMono, DejaVuSansMono, BitstreamVeraSansMono, CourierNew, monospace][size=3]$query_car_id[/size][/font][/color][color=#009900][font=Consolas, Monaco, LucidaConsole, LiberationMono, DejaVuSansMono, BitstreamVeraSansMono, CourierNew, monospace][size=3])[/size][/font][/color][color=#339933][font=Consolas, Monaco, LucidaConsole, LiberationMono, DejaVuSansMono, BitstreamVeraSansMono, CourierNew, monospace][size=3];[/size][/font][/color]

ve se resolve...

Edited by joaocasta
0

Share this post


Link to post
Share on other sites

onde e' que o $id esta' declarado?

$select_id_user="SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'";

$query_id_user=mysql_query($select_id_user, $connect) or die(mysql_error());

$id_user=mysql_fetch_assoc($query_id_user);

$select_car_id="SELECT * FROM cars WHERE id_owner='".$id['id_user']."'";

$query_car_id=mysql_query($select_car_id, $connect) or die(mysql_error());

$car_id=mysql_fetch_assoc($query_car_id);

0

Share this post


Link to post
Share on other sites

onde e' que o $id esta' declarado?

$select_id_user="SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'";

$query_id_user=mysql_query($select_id_user, $connect) or die(mysql_error());

$id_user=mysql_fetch_assoc($query_id_user);

$select_car_id="SELECT * FROM cars WHERE id_owner='".$id['id_user']."'";

$query_car_id=mysql_query($select_car_id, $connect) or die(mysql_error());

$car_id=mysql_fetch_assoc($query_car_id);

É $id_user, ok.

Mas continua a dar a mesma coisa, aparece a info do 2º registo em todos...

0

Share this post


Link to post
Share on other sites

Mas continua a dar a mesma coisa, aparece a info do 2º registo em todos...

como assim?

0

Share this post


Link to post
Share on other sites

<?php
  $query_id_user=mysql_query("SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'", $connect) or die(mysql_error());
  $id_user=mysql_fetch_array($query_id_user);

  $query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."'", $connect) or die(mysql_error());
  $car_id=mysql_fetch_assoc($query_car_id);

  $query_infocar=mysql_query("SELECT * FROM cars WHERE id_car='".$car_id['id_car']."'", $connect) or die(mysql_error());
  $infocar=mysql_fetch_assoc($query_car_id);
 ?>

   <!-- hidden inline form -->
 <div id="login-box" class="login-popup">
 <a href="#" class="close"><img src="images/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>
   <form method="post" class="signin" action="edit_car.php">
   <fieldset class="textbox">
    <label class="username">
	 <span>Matrícula:<?php echo $infocar['id_car']; ?></span>
	 <input type="text" id="username" name="matricula_info" value="<?php echo $infocar['matricula_car']; ?>" />
    </label>

    <label class="password">
	 <span>Apólice:</span>
	 <input type="text" id="password" name="apolice_info" value="<?php echo $infocar['apolice_seg']; ?>" />
    </label>

    <input class="button" type="submit" name="edit_car_info" value="Editar"/>
   </fieldset>
   </form>
 </div>

Tenho aqui 3 registos.

Se eu quiser editar qualquer que seja aparece-me a info do 2º registo.

0

Share this post


Link to post
Share on other sites

$query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."'", $connect) or die(mysql_error());

$car_id=mysql_fetch_assoc($query_car_id);

$query_infocar=mysql_query("SELECT * FROM cars WHERE id_car='".$car_id['id_car']."'", $connect) or die(mysql_error());

$infocar=mysql_fetch_assoc($query_car_id);

Isto vai muito provavelmente dar o mesmo resultado, acho que tens demasiadas querys e tem que ver que a a 1 query pode returnar varios valores, mas tu so' estas a apanhar o primeiro registo.

0

Share this post


Link to post
Share on other sites

Ja tentei só mexer com esta:

$query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."'", $connect) or die(mysql_error());
	  $car_id=mysql_fetch_assoc($query_car_id);

Mas não estou a ver como consigo o id_carro

0

Share this post


Link to post
Share on other sites
$query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."'", $connect) or die(mysql_error()));
$row = mysql_fetch_row($query_car_id);
$carid = $row["id_car"];

0

Share this post


Link to post
Share on other sites

Não aparece nada. E se fizer:

<?php
  $query_id_user=mysql_query("SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'", $connect) or die(mysql_error());
  $id_user=mysql_fetch_array($query_id_user);

  $query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."'", $connect) or die(mysql_error());
  $row = mysql_fetch_array($query_car_id);
  $car_id = $row["id_car"];
 ?>

Dá-me a mesma treta mas é a info do 1º registo

0

Share this post


Link to post
Share on other sites

$result = mysql_query("SELECT c.* FROM cars c,civil_users cu WHERE (nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."') AND c.id_owner = cu.nif_user");

while($row = mysql_fetch_row($result))
{
 echo "<h1>".$row["id_car"]."</h1>"; //imprime o id_car
 print_r($row); //imprime todos os campos
 echo "<br><br><br>"; //explicito!

 //codigo para mostrar os registos...
}

EDIT: corrigir erros no codigo

Edited by pikax
0

Share this post


Link to post
Share on other sites

Ei man que complicação. Dá a mesma

Complicacao???? Complicacao era o que estavas a fazer.

Era melhor usar joins, mas previ que ainda te ia confundir mais...

Se fizeste copy&paste do meu codigo e nao te apareceu nenhum erro, e' melhor activares os erros no PHP, o codigo tinha uns erros, experimenta agr:

$result = mysql_query("SELECT c.* FROM cars c,civil_users cu WHERE (nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."') AND c.id_owner = cu.nif_user");

while($row = mysql_fetch_row($result))
{
 echo "<h1>".$row["id_car"]."</h1>"; //imprime o id_car
 print_r($row); //imprime todos os campos
 echo "<br><br><br>"; //explicito!

 //codigo para mostrar os registos...
}

EDIT: corrigir erros no codigo

0

Share this post


Link to post
Share on other sites

PF2G nao sei se reparaste mas esqueceste-te de colocar ";" em todos os echos que fizeste...

Não é mandatório.

@PF2G,

Analisa bem a tua dúvida, porque ninguém te vai dar a solução pronta a usar. Até agora não tens participado muito a tentar resolvê-la, pelo que me parece (copiar e colar código não é resolver).

0

Share this post


Link to post
Share on other sites

<?php
  $query_id_user=mysql_query("SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'", $connect) or die(mysql_error());
  $id_user=mysql_fetch_array($query_id_user);

  $query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."'", $connect) or die(mysql_error());
  $car_id=mysql_fetch_assoc($query_car_id);

  $query_infocar=mysql_query("SELECT * FROM cars WHERE id_car='".$car_id['id_car']."'", $connect) or die(mysql_error());
  $infocar=mysql_fetch_assoc($query_car_id);
 ?>

<!-- hidden inline form -->
 <div id="login-box" class="login-popup">
 <a href="#" class="close"><img src="images/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>
   <form method="post" class="signin" action="edit_car.php">
   <fieldset class="textbox">
	<label class="username">
	 <span>Matrícula:<?php echo $infocar['id_car']; ?></span>
	 <input type="text" id="username" name="matricula_info" value="<?php echo $infocar['matricula_car']; ?>" />
	</label>

	<label class="password">
	 <span>Apólice:</span>
	 <input type="text" id="password" name="apolice_info" value="<?php echo $infocar['apolice_seg']; ?>" />
	</label>

	<input class="button" type="submit" name="edit_car_info" value="Editar"/>
   </fieldset>
   </form>
 </div>

Tenho aqui 3 registos.

Se eu quiser editar qualquer que seja aparece-me a info do 2º registo.

Vários problemas:

1. Não vejo código que indica o envio da identificação do carro quando clicas no "editar". Envias os dados por Ajax? Estás a enviar correctamente? Já viste no firebug?

2. também não vejo onde recebes o POST/GET da identificação do carro que envias-te no ponto 1

3. Claro, tens 3 registos mas só estás a obter 1 registo com $infocar=mysql_fetch_assoc($query_car_id);

<?php
  $query_id_user=mysql_query("SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'", $connect) or die(mysql_error());
  $id_user=mysql_fetch_array($query_id_user);

  $query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."'", $connect) or die(mysql_error());
  $row = mysql_fetch_array($query_car_id);
  $car_id = $row["id_car"];
 ?>

4. nif = username ? email = username ? Isto está correcto?

5. Adiciona LIMIT 1 na 1º query onde procuras pelo utilizador (só para o caso de teres mais utilizadores que satisfação a condição WHERE

6. é aqui que supostamente deves selecionar (falta a coluna no WHERE) o carro com base na identificação que enviaste no ponto 1

Corrigi isso tudo!

Edited by taviroquai
0

Share this post


Link to post
Share on other sites

Vários problemas:

1. Não vejo código que indica o envio da identificação do carro quando clicas no "editar". Envias os dados por Ajax? Estás a enviar correctamente? Já viste no firebug?

2. também não vejo onde recebes o POST/GET da identificação do carro que envias-te no ponto 1

3. Claro, tens 3 registos mas só estás a obter 1 registo com $infocar=mysql_fetch_assoc($query_car_id);

4. nif = username ? email = username ? Isto está correcto?

5. Adiciona LIMIT 1 na 1º query onde procuras pelo utilizador (só para o caso de teres mais utilizadores que satisfação a condição WHERE

6. é aqui que supostamente deves selecionar (falta a coluna no WHERE) o carro com base na identificação que enviaste no ponto 1

Corrigi isso tudo!

E usar o GET foi a primeira que experimentei, mas dá barraca por causa disto:

<td>
    <a href="#login-box" class="login-window">
	 <input class="button_edit" name="edit_car"  type="submit" value="Editar" />
    </a>
   </td>

Se eu acrescentar o GET não me dá nada.

E sim nif = username ? email = username está correto, por que o $_SESSION ou é o nif ou o email.

0

Share this post


Link to post
Share on other sites

Não joaocosta.

O que eu tenho de fazer e peço que alguem me ajude, pois nao estou ver maneira, é fazer o GET sem que dê problemas com o form popup.

A maneira como fiz foi

<a href="?matr=<?php echo $car['matricula'] ?>#login-box">
(...)

0

Share this post


Link to post
Share on other sites

O que eu tenho de fazer e peço que alguem me ajude, pois nao estou ver maneira, é fazer o GET sem que dê problemas com o form popup.

fiz um pesquisa pelo tópico inteiro pela palavra GET e só encontrei 5 ocorrência ... e nenhuma delas dentro de código ...

por outras palavras:

- se não sabes dizer o que pretendes ou outros não vão adivinhar !!!

0

Share this post


Link to post
Share on other sites

Ok, eu faço-te um resumo:

Eu tenho uma lista de matriculas de um utilizador e, quando faço editar, quero que apareça um form popup com os campos preenchidos de acordo com a info selecionada (matricula e apolice).

Ja tentei o GET, mas dessa maneira deixa de me aparecer o form popup.

Tens aqui o codigo:

listagem matriculas do utilizador:

<?php
  $select_id="SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'";
  $query_id=mysql_query($select_id, $connect) or die(mysql_error());
  $id=mysql_fetch_assoc($query_id);

  $select_car="SELECT * FROM cars WHERE id_owner='".$id['id_user']."'";
  $query_car=mysql_query($select_car, $connect) or die(mysql_error());
  $car=mysql_fetch_assoc($query_car);
 ?>

 <table class="car_info">
 <?php	   
  if($row_car=mysql_num_rows($query_car)!=0){
  do{
 ?>
  <tr>
   <td align="left">
    Matrícula:
   </td>

   <td width="10px"></td>

   <td align="right">
    <label> <?php echo $car['matricula_car']; ?> </label>
   </td>
   <td>
    <a href="#login-box" class="login-window">
	 <input class="button_edit" name="edit_car"  type="submit" value="Editar" onclick="#login-box"/>
    </a>
   </td>
  </tr>

  <tr height="10px"></tr>

  <tr>
   <td align="left">
    Apólice:
   </td>

   <td width="10px"></td>

   <td align="right">
    <label> <?php echo $car['apolice_seg']; ?> </label>
   </td>

  </tr>
  <tr>

   <td align="right" colspan="3">
    <label > <?php echo $car['id_car']; ?></label>
   </td>

  </tr>

  <tr height="35px"></tr>
  <?php
   }while($car=mysql_fetch_assoc($query_car));
  }
  ?>
 </table>

form popup

<?php
  $query_id_user=mysql_query("SELECT * FROM civil_users WHERE nif_user='".$_SESSION['username']."' OR email_user='".$_SESSION['username']."'", $connect) or die(mysql_error());
  $id_user=mysql_fetch_array($query_id_user);

  $query_car_id=mysql_query("SELECT * FROM cars WHERE id_owner='".$id_user['id_user']."' AND id_car='".$car['id_car']."'", $connect) or die(mysql_error());
  $row = mysql_fetch_array($query_car_id);
 ?>

   <!-- hidden inline form -->
 <div id="login-box" class="login-popup">
 <a href="#" class="close"><img src="images/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>
   <form method="post" class="signin" action="edit_car.php">
   <fieldset class="textbox">
    <label class="username">
	 <span>Matrícula: <?php echo $car_id; ?></span>
	 <input type="text" id="username" name="matricula_info" value="<?php echo $car_id['matricula_car']; ?>" />
    </label>

    <label class="password">
	 <span>Apólice:</span>
	 <input type="text" id="password" name="apolice_info" value="<?php echo $car_id['apolice_seg']; ?>" />
    </label>

    <input class="button" type="submit" name="edit_car_info" value="Editar"/>
   </fieldset>
   </form>
 </div>

jquery do popup (para o caso de ser preciso)

 <script type="text/javascript">
  $(document).ready(function() {
   $('a.login-window').click(function() {

   //Getting the variable's value from a link
 var loginBox = $(this).attr('href');
 //Fade in the Popup
 $(loginBox).fadeIn(300);

 //Set the center alignment padding + border see css style
 var popMargTop = ($(loginBox).height() + 24) / 2;
 var popMargLeft = ($(loginBox).width() + 24) / 2;

 $(loginBox).css({
  'margin-top' : -popMargTop,
  'margin-left' : -popMargLeft
 });

 // Add the mask to body
 $('body').append('<div id="mask"></div>');
 $('#mask').fadeIn(300);

 return false;
   });

   // When clicking on the button close or the mask layer the popup closed
   $('a.close, #mask').live('click', function() {
  $('#mask , .login-popup').fadeOut(300 , function() {
 $('#mask').remove(); 
   });
   return false;
   });
  });
 </script>

Esses pedaços de codigo estão no mesmo ficheiro php e o session_start(), etc...também estão...

0

Share this post


Link to post
Share on other sites

Ja tentei o GET, mas dessa maneira deixa de me aparecer o form popup.

apresenta só a linha onde fazes este GET ...

0

Share this post


Link to post
Share on other sites

<a href="?matr=<?php echo $car['matricula_car'] ?>#login-box" class="login-window">
	 <input class="button_edit" name="edit_car"  type="submit" value="Editar" onclick="#login-box"/>
    </a>

Estava a fazer aí o GET mas não aparece o form popup a mesma coisa acontece se trocar:

<a href="#login-box?matr=<?php echo $car['matricula_car'] ?>" class="login-window">
	 <input class="button_edit" name="edit_car"  type="submit" value="Editar" onclick="#login-box"/>
    </a>

0

Share this post


Link to post
Share on other sites

bem ... como novamente voltaste a não apresentar o código de interpretação da informação de um GET, vou voltar ao meu silêncio (assim como já tinha feito anteriormente) e deixar este caso à boa vontade de alguém com mais paciência

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now