[RESOLU] modification, mise à jour UPDATE

Paul87
Invité n'ayant pas de compte PHPfrance

03 mai 2013, 11:03

Bonjour,
je n'y comprends rien..
je récupère bien id_a dans l'url et ça s'affiche bien
$id_a = $_GET["id_a"];
echo "le num de l'id est : $id_a <br />";
mais la requête sql UPDATE ne marche pas...
cela ne peut-il pas venir de ma page.php précédente..? (cette page liste tous les enregistrements de la table 'datas'. avec une action soit supprimer, soit valider
si c'est supprimer qui est choisi on part sur une page 'supprimer.php' avec DELETE. et si c'est valider qui est choisi, on part sur une page 'valide.php' avec UPDATE qui devrait changer la valeur 'N' en 'O' dans le champ 'valid' pour l'id_a concernée.
ci dessous le code de ma page qui liste les enregistrements...ça vient peut-être de là..
<html>
	<head>
	<title>ADMIN </title>
<form method="post" action="valide.php">
	
	</head>
	<body>

<?php

 //code connexion MySQL on line
if(!mysql_connect("******","*********","***************")) 


?>
<br><br>
<?php

Mysql_select_db('*************'); 
	
	$strSQL = "SELECT * FROM datas";

	  
	 $resultat=mysql_query($strSQL);
$output = '<table>';
while($tab=mysql_fetch_assoc($resultat))

{
     $output .= '<tr>';
	 $output .= '<td>'.$tab['id_a'].'</td>';
                 $output .= '<td>'.$tab['type'].'</td>';
                 $output .= '<td>'.$tab['cat'].'</td>';
                 $output .= '<td>'.$tab['prof'].'</td>';
	 $output .= '<td>'.$tab['reg'].'</td>';
	 $output .= '<td>'.$tab['dep'].'</td>';
	 $output .= '<td>'.$tab['cat'].'</td>';
	 $output .= '<td>'.$tab['tit'].'</td>';
	 $output .= '<td>'.$tab['detail'].'</td>';
	 $output .= '<td>'.$tab['pseudo'].'</td>';

                 $output .= '<td><a href="supprime.php?id_a='.urlencode($tab['id_a']).'">SUPPRIMER ?</a></td>';
	 $output .= '<td><a href="valide.php?id_a='.urlencode($tab['id_a']).'">VALIDER ?</a></td>';

     $output .= '</tr>';
 
} 
$output .= '</table>';
echo $output;   
	  
	  

mysql_close();
	
?>

</form>
</html>
je suis perdu ..help !! merci +++

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 mai 2013, 11:28

a tu testé mon code ?
est ce qu'il y a quelque chose qui s'affiche ?

est ce que tu a ajouté un var_dump($_GET); en première ligne pour être certain de ce qu'il y a dans l'url ?
est ce que l'id est toujours numérique ?

si oui vire l'url_encode il ne sert à rien.


ça ne marche pas c'est pas une info suffisante, il nous faut détails, as tu quelque chose dans le log serveur ?
$
est ce que tu affiche la requête pour la tester ?
qu'est ce qui s'affiche dans ton navigateur quand tu clique sur le lien valider ?

@+
Il en faut peu pour être heureux ......

Paul87
Invité n'ayant pas de compte PHPfrance

03 mai 2013, 13:50

Grand merci à toi pour ton soutien

dans barrenavig, il s'affiche : valide.php?id_a=32

Avec
var_dump($_GET);
j'ai : string(2) "32" l'id_a est toujours en numérique.

Pour virer l'urlencode comment fait'on pour avoir une sélection qui correspond à l'enregistrement (id_a) voulu dans le tableau:oops: (rappel: suis novice+++ :) )

j'ai bien testé ton code, et à l'ouverture, j'ai :

Erreur SQL avec la requête : UPDATE datas SET valid = 'O' WHERE id_a = 32
No database selected

alors que si je teste cette requête directement dans phpmyadmin ça fonctionne...

suis paumé..!!

Mammouth du PHP | 619 Messages

03 mai 2013, 14:30

Bonjour,

peux tu reposte ton code avec la modification de moogli stp oublie pas les balises php

car l'erreur que tu cite veux dire que tu sélectionne pas ta base de donnee

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 mai 2013, 16:17

Erreur SQL avec la requête : UPDATE datas SET valid = 'O' WHERE id_a = 32
No database selected
pas de mysql_selected_db avant (et pas de mysql_connect non plus si tu n'a que copier que mon code).

il te faut ajouter ces lignes avant tous mysql_query

pour rappel un tuto sur la récupération des données d'une table ;) http://www.lephpfacile.com/cours/13-aff ... votre-base



@+
Il en faut peu pour être heureux ......

paul87
Invité n'ayant pas de compte PHPfrance

03 mai 2013, 21:19

Bon après remise au propre de mon vilain brouillon
et en suivant à la lettre vos conseils: CA MARCHE
<?php
//code connexion MySQL on line
if(!mysql_connect("********","*********","*************")) 

{ 
Echo'Connection Impossible'; 
exit(); 
} 
else 
{     
Echo'Connexion réussie';
}
// sélection de la database
Mysql_select_db('**********'); 

if(!empty($_GET['id_a'])) {
  $strSQL = 'UPDATE datas SET valid = \'O\' WHERE id_a = '.mysql_real_escape_string($_GET['id_a']);
 
       $retour = mysql_query($strSQL);

  if($retour === false)
  {

        echo 'Erreur SQL avec la requête : ',$strSQL .'<br />',mysql_error(),'<br />';
  }
  
  else
  {
    echo("Enregistrement validé V !!") ;
  
  }
}else {
echo 'pas possible y a pas l\'id dans l\'url !';
}
 
 
	// Close the database connection
	mysql_close();
	
?>
et ça marche aussi nickel pour la requête supprime
je crois que pour évoluer, il va faloir que travaille la rigueur, très bonne école s'il en est!
plus une lecture assidue des tutoriels.
En tous cas MERCI pour vos conseils et vos patiences.
Très sympa
Paul87

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 mai 2013, 22:48

De rien ;)


Et oui un minimum de rigueur et d'organisation sont nécessaire pour ne pas trop gallerer ;)

Tu peux regarder des courts sur la modélisation (UML, ou merise) pour ce qui est de la modélisation de l'application.
Cela t'apportera un socle stable pour développer quelque chose.

C'est plus long de faire l'étude (et même de faire un algorithme sur le papier avant de développer la chose) mais au final tu perd moins de temps a la création et surtout moins de temps a la maintenance car tu ne passe pas 3 ans a chercher comment fonctionne un bout de code ;)


@+
Il en faut peu pour être heureux ......

Paul87
Invité n'ayant pas de compte PHPfrance

04 mai 2013, 10:33

Bonjour,
Si je pouvais encore me permettre une demande.
Les 2 pages .php ´valide' et 'supprime' sont destinées à l'administration du site qui valide ou supprime les sujets.
J'ai besoin de créer une page pour l'utilisateur, dans laquelle les sujets sont présentés sous forme de tableau horizontal, avec lignes, et colonnes et entête rubrique (par exemple: catégorie, sujet, pseudo, date publi)
Je souhaiterai que l'on puisse cliquer pour chaque ligne dans la case ´sujet´ pour afficher une page qui détaille l'enregistrement in extenso.
Comme un site de petites annonces.( dans mon cas il s'agit de publications et articles spécialisés médicaux)
Ou puis je trouver un tutoriel pour faire ça?
Encore merci..!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 mai 2013, 10:42

Cela ressemble a un forum sur le principe.

Il faut juste ajouter un lien vers une page détails avec l'id dans l'url comme tu le fait pour la validation ;)

Tu trouvera un exemple de forum sur http://www.lephpfacile.com
@+
Il en faut peu pour être heureux ......

Paul87
Invité n'ayant pas de compte PHPfrance

05 mai 2013, 08:12

oui, ça ressemble à un forum.
mai ce que le voudrai c'est que ça soit le libellé du sujet qui soit actif
et que la ligne complète puisse changer de couleurau passage de la souris.
exactement comme le fonctionnement de php-debutant/
je n'arrive pas à trasnformer le contenu de
 $output .= '<td>'.$tab['Sujet].'</td>';
en lien.
Merci encore

Paul87
Invité n'ayant pas de compte PHPfrance

05 mai 2013, 09:53

en fait, ce que je n'arrive pas à faire, c'est dans le code ci dessous faire en sorte que ce soit le texte de 'detail' qui soit le lien actif vers une nouvelle page infos.php (en conservant le passage de id_a)
je n'y arrive pas...conseil?
	
$output = '<table>';
while($tab=mysql_fetch_assoc($resultat))

{
     $output .= '<tr bgcolor="#009966">';
	 $output .= '<td>'.$tab['id_a'].'</td>';
                 $output .= '<td>'.$tab['type'].'</td>';
                 $output .= '<td>'.$tab['cat'].'</td>';
                 $output .= '<td>'.$tab['prof'].'</td>';
	 $output .= '<td>'.$tab['reg'].'</td>';
	 $output .= '<td>'.$tab['dep'].'</td>';
	 $output .= '<td>'.$tab['cat'].'</td>';
	 $output .= '<td>'.$tab['tit'].'</td>';
	 $output .= '<td>'.$tab['detail'].'</td>' ;
	 $output .= '<td>'.$tab['pseudo'].'</td>';

                 $output .= '<td><a href="infos.php?id_a='.urlencode($tab['id_a']).'">$detail </a></td>';} 

{

     $output .= '</tr>';
} 
$output .= '</table>';
echo $output;   
	  
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mai 2013, 11:10

Tu a un problème de concaténation, la variable détails n'est pas interprètée.

D'ailleurs ce ne serais pas $tab['details'] plutôt ?

Sinon ton code semble correcte.
Si le id_as est numérique vire l'urlencode.


@+
Il en faut peu pour être heureux ......

Paul87
Invité n'ayant pas de compte PHPfrance

05 mai 2013, 11:32

Ça veut dire quoi variable ´detail' pas interprétée ?
Oui. Mon id-a est toujours en numérique mais
Je ne sais pas bien comment faire pour virer urlencode
Encore merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mai 2013, 12:17

http://www.lephpfacile.com/cours/3-affi ... -variables tu y trouvera l'explication de ma remarque sur la variable details.


@+
Il en faut peu pour être heureux ......

Paul87
Invité n'ayant pas de compte PHPfrance

06 mai 2013, 00:53

ben oui. :oops:
avec un peu de lecture détaillée, on y arrive
$output .= '<td><a href="detail.php?id_a='.urlencode($tab['id_a']).'">'.$tab['detail'].'</a></td>';
Et ça marche..!!
merci