[RESOLU] Probl-ème de modification table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Probl-ème de modification table

Re: Probl-ème de modification table

par Zaqen » 06 août 2019, 12:12

Merci beaucoup Ryle !
Topissime.

Re: Probl-ème de modification table

par Ryle » 26 juin 2019, 17:21

Hello !

La variable $HTTP_GET_VARS est dépréciée et a été remplacée par la variable globale $_GET. Par ailleurs tu n'as pas besoin de la boucle :
while (list($var, $value) = each($HTTP_GET_VARS))
    {
      $tab_asso["$var"] = $value;
    }
pour créer ton tableau associatif clé/valeur à partir des informations envoyées dans l'URL, $_GET est déjà un tableau associatif de ce type. Si tu veux absolument utiliser ta variable, il suffit juste de faire :
$tab_asso["$var"] = $_GET;
Concernant les messages d'erreur que tu rencontres :

* Warning: Variable passed to each() is not an array or object in /var/www/WebMaquettes/Test-projet//modif.php on line 17
A la ligne 17 tu fais appel à l'index "modifier" de ton tableau $tab_asso. L'avertissement qui apparaît indique que cet index n'existe pas (il n'a pas été passé dans l'url). Tu ne peux donc pas effectuer de traitement sur celui-ci.
Pour éviter d'avoir ce message, il faut t'assurer que l'index que tu utilises est bien présent dans ton tableau. Par exemple :
if (isSet($tab_asso['modifier'])) { // on contrôle si la variable et l'index existent
   switch ($tab_asso['modifier'])
   ...
}
Pour les autres avertissements :
* Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/WebMaquettes/Test-projet/modif.php on line 36
* Warning: mysql_result() expects parameter 1 to be resource, boolean given in /var/www/WebMaquettes/Test-projet/modif.php on line 38
* Warning: mysql_result() expects parameter 1 to be resource, boolean given in /var/www/WebMaquettes/Test-projet/modif.php on line 39 .........

Ils sont liés au fait que tu ne contrôle pas le résultat de la requête. Il s'attend à ce que ta variable $result contienne une ressource (c'est a dire une liste de résultat retournés par ta base de données) alors que cette variable contient un booléen (probablement FALSE qui est la valeur retournée quand une requête ne s'est pas exécutée correctement).

Tu peux là encore tester le contenu de $result et n'exécuter le code suivant que si celui-ci est différent de false :
$result=mysql_query("select * from CANDIDAT where id=$id",$db_link);
if ($result!=false) {
  $number = mysql_num_rows($result);
  ...
}
Tu as également un problème de syntaxe dans ton switch où tu as mis des ";" (point-virgule) au lieu de ":" (deux points) après les instructions case et default
case 2 : // et non case 2;
...
default : // et non default;
Sans cela, php considère que l'instruction est terminée au point-virgule, alors que ce que l'on veut de lui c'est qu'il traite le bloc de code jusqu'au break ;)

Re: Probl-ème de modification table

par Zaqen » 26 juin 2019, 14:24

Bonjour,

Merci de ta réponse, mais je ne comprends pas ce que je dois exactement faire.

Re: Probl-ème de modification table

par Spols » 26 juin 2019, 13:34

pour la première erreur, cela vient du fait que si il n'y a pas de variable dans ton url $HTTP_GET_VARS est vide donc pas possible de faire un parcours de ce tableau qui n'en est pas un

pour les 2 autres erreurs c'est ta requète qui ne marche pas. test là dans phpmyadmin mais si tu n'a pas de donnée en _GET, ta requète ne sera pas complète.
pense aussi à récupèrer les erreur mysql pour les afficher, ca peut aider.

Probl-ème de modification table

par Zaqen » 26 juin 2019, 10:05

Bonjour,
Je reprend certains besoins d'une application access97 que je voudrais migrer vers php
J'ai réussi à créer un tableau avec tous les enregistrements sur une ligne au total j'en ai 1500 environ,
au bout de chaque ligne j'ai un bouton modifier / effacer.
quand je fais modifier, j'appelle une page modif.php qui m'affiche les champs du tableau précédent :

Num Mandataire Num Candidat
Nom Candidat Prénom du Candidat
Adresse Adresse (complément)
Code postal Ville
Téléphone E-mail

avec 3 boutons : [modifier] [tout effacer][Annuler]


Je rencontre un problème d'édition (récupération de données) pour les modifier et que les champs se remplissent :

l'erreur est la suivante :

Warning: Variable passed to each() is not an array or object in /var/www/WebMaquettes/Test-projet//modif.php on line 17 Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/WebMaquettes/Test-projet/modif.php on line 36 Warning: mysql_result() expects parameter 1 to be resource, boolean given in /var/www/WebMaquettes/Test-projet/modif.php on line 38 Warning: mysql_result() expects parameter 1 to be resource, boolean given in /var/www/WebMaquettes/Test-projet/modif.php on line 39 .........

voici le code du php :
<?php
include("config.inc.php");
header( 'content-type: text/html; charset=utf-8' );
?>
<html>
<title>Modification</title>
<body>
<?php


  while (list($var, $value) = each($HTTP_GET_VARS))
    {
      $tab_asso["$var"] = $value;
     
      }

switch ($tab_asso['modifier']){

case 2;

$requete=mysql_query(" update CANDIDAT set NumMandataire='$nummandataire' NumCandidat='$numcandidat' NomCandidat='$nomcandidat',PrenomCandidat='$prenomcandidat',Adress1Candidat='$adresse1candidat',Adresse2Candidat='$adresse2candidat',CPCandidat='$cpostal',VilleCandidat='$ville',TelCandidat='$tel',EmailCandidat='$email' where id=$id ",$db_link);
if($requete === false ) {
    echo 'Erreur SQL : '.mysql_error();
}
echo "<h1 align=center>Mise à jour effectuée<br><br><a href='carnet.php'>Retour</a>";
break;

default;
$result=mysql_query("select * from CANDIDAT where id=$id",$db_link);
$number = mysql_num_rows($result);

        $id=mysql_result($result,$i,"NumMandataire");
	$nummandataire=mysql_result($result,$i,"NumMandataire");
        $numcandidat=mysql_result($result,$i,"NumCandidat");
        $civil=mysql_result($result,$i,'CivilCandidat');
        $nomcandidat=mysql_result($result,$i,"NomCandidat");
	$prenomcandidat=mysql_result($result,$i,"PrenomCandidat"); 
        $adresse1candidat=mysql_result($result,$i,"Adresse1Candidat");
	$adresse2candidat=mysql_result($result,$i,"Adresse2Candidat");
	$cpostal=mysql_result($result,$i,"CPCandidat");
	$ville=mysql_result($result,$i,"VilleCandidat");
	$tel=mysql_result($result,$i,"TelCandidat");
	$email=mysql_result($result,$i,"EmailCandidat");

	
echo "<blockquote><table border=0><form method='get' action='modif.php'><input type='hidden' name=modifier value=2><input type='hidden' name=id value='$id'>
       <td>Num Mandataire</td><td><input type='text' name=NumMandataire value='$nummandataire' size=30 maxlenght=50></td>
        <td>Num Candidat</td><td><input type='text' name=NumCandidat value='$numcandidat' size=30 maxlenght=50></td><tr>   
	<td>Nom Candidat</td><td><input type='text' name=NomCandidat value='$nomcandidat' size=30 maxlenght=50></td>
      	<td align=right>Prénom du Candidat</td><td><input type='text' name=PrenomCandidat value='$prenomcandidat' size=30 maxlenght=50></td><tr>
	<td>Adresse</td><td><input type='text' name=Adresse1Candidat value='$adresse1candidat' size=30 maxlenght=60></td>
	<td align=right>Adresse (complément)</td><td><input type='text' name=Adresse2Candidat value='$adresse2candidat' size=30 maxlenght=60></td><tr>
	<td>Code postal</td><td><input type='text' name=CPCandidat value='$cpostal' size=30 maxlenght=5></td>
	<td align=right>Ville</td><td><input type='text' name=VilleCandidat value='$ville' size=30 maxlenght=30></td><tr>
	<td>Téléphone</td><td><input type='text' name=TelCandidat value='$tel' size=30 maxlenght=15></td>
	<td>E-mail</td><td><input type='text' name=EmailCandidat value='$email' size=30 maxlenght=30></td><tr>
      </table></blockquote>";
echo "<table align=center><tr><td><input type='submit' value='Modifier'></td><td><input type='reset' value='Tout effacer'></td></form><td><form method=get action='carnet.php'><input type=submit value='Annuler'></td></form></table>";
break; }

$result=mysql_close($db_link);
?>
</body>
</html>

Si vous avez une idée s'il vous plait pour me dépatouiller