IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

faire passer mon lien d'un tableau dynamique dans $_GET


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut faire passer mon lien d'un tableau dynamique dans $_GET
    Bonjour ou bonsoir a tous!

    Je fais appel encore une fois a vous puisque je ne comprends pas pourquoi mon lien dans un tableau dynamique n'arrive pas au $_GET puisque le script s'arrête la!
    quand je fais un echo juste apres, il n'y a rien!

    en fait, j'essaie de compléter un script un peu complexe qui devrait fonctionner mais la, pour une raison un peu bête, j'imagine!!
    je n'arrive pas a faire passer mon $_GET

    il s'agit de supprimer un enregistrement a partir d'un tableau dynamique qui contient un lien et de le récupérer avec $_GET et ensuite
    supprimer l'enregistrement de la table et ensuite un enregistrement d'une autre table, ensuite un UPDATE dans une autre table et finalement un INSERT dans une autre table!!
    Plutot marrant n'est-ce pas??

    alors j'ai essaye avec 3 facons d'écrire mon lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    //echo'<td align="center"><a href="transaction_annulation_dep.php?RefDepart="'.$_GET['RefDepart'].'>Annuler</a></td>';
    		//echo '<td align="center"><a href="transaction_annulation_dep.php?RefDepart='.$RefDepart.'">Annuler</a></td>';
    		echo '<td align="center"><a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart="'.$info['id'].'>Annuler</a></td>';
    ?>
    et pour le récupérer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php
    if (isset($_GET['RefDepart']) && !empty($_GET['RefDepart'])) {
     
    		$Heure_Depart = $heure_depart;
    		$Date_Depart= $date_depart;
    		$Date_Depart = new DateTime($Date_Depart . ''. $Heure_Depart);
    		$Date_limite = new DateTime('now+18 hour');
     
    	if ($Date_limite ->format('Y-m-d H:i')<= $Date_Depart ->format('Y-m-d H:i')) {
     
    		$deleteSQL = sprintf("DELETE FROM OnBoard WHERE id=%s",
            GetSQLValueString($id, "int"));
     
    			mysql_query($deleteSQL)or die(mysql_error());
     
    		$deleteSQL = sprintf("DELETE FROM OnRoad WHERE id=%s",
    		GetSQLValueString($enroute_id, "int"));
     
    			mysql_query($deleteSQL or die(mysql_error()));
     
    		$sql = "UPDATE departure SET places_disponibles = '" .$places_disponibles. "' + '".$departs_utilises."' 
    		WHERE id = " .$depart_id;
     
    			mysql_query($sql)or die(mysql_error()) ;
     
    		$sql = ("INSERT INTO compte_client (passager_id, depart_id, departs_annules, date)
    		VALUES ('" .$passager_id. "', '".$depart_id."', '".$departs_annules."','".$date."')");
     
    			mysql_query($sql)or die(mysql_error()) ;
     
    		if (!mysql_query($sql)OR ($deleteSQL) )  {
     
    			die('Erreur - :La requête n\'a pas fonctionné' . mysql_error());
    		}
     
    			header( "Location: confirmation_annulation.php" );
     
     
     
    	}else{    
     
    		$deleteSQL = sprintf("DELETE FROM OnBoard WHERE depart_id=%s",
            GetSQLValueString($id, "int"));
     
    			mysql_query($deleteSQL)or die(mysql_error()) ;
     
    		$deleteSQL = sprintf("DELETE FROM OnRoad WHERE id=%s",
            GetSQLValueString($enroute_id, "int"));
     
    			mysql_query($deleteSQL)or die(mysql_error()) ;
     
    		$sql = "UPDATE departure SET places_disponibles = '" .$places_disponibles. "' + '".$departs_utilises."' 
    		WHERE id = " .$depart_id; 
     
    			mysql_query($sql)or die(mysql_error()) ;
    	}
    		if (!mysql_query($sql)OR ($deleteSQL))  {
     
    			die('Erreur - :La requête n\'a pas fonctionné' . mysql_error());	
    		}
     
    			header( "Location: confirmation_annulation.php" );
    }
     
    ?>

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    AnnuleDepart=ok&amp;RefDepart=
    Pourquoi mettre $amp; alors que c'est & pour ajouter d'autres paramètres ?

    Pourquoi ne fais tu pas un print_r($_GET) pour visualiser et contrôler ce que tu reçois en GET, ce qui permet souvent de comprendre ce qui ne va pas ?

    Pourquoi aussi utiliser un simple lien <a> pour faire une opération comme une suppression ?
    Ceci n'est pas conseillé, il vaut mieux le faire en POST via un formulaire.
    N'importe qui pourra tenter de te supprimer des données, même un moteur de recherche.

  3. #3
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    Salut RunCodePhp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pourquoi mettre "$amp" alors que c\'est '&' pour ajouter d'autres paramètres ?
    j'écrie &amp
    j'ai lu quelque part qu'il valait mieux écrire &amp que seulement ' &' pour limiter les injections SQL

    Pourquoi ne fais tu pas un print_r($_GET) pour visualiser et contrôler ce que tu reçois en GET, ce qui permet souvent de comprendre ce qui ne va pas ?
    Y a rien avec print_r($_GET) ;

    Pourquoi aussi utiliser un simple lien <a> pour faire une opération comme une suppression ?
    Ceci n'est pas conseillé, il vaut mieux le faire en POST via un formulaire.
    N'importe qui pourra tenter de te supprimer des données, même un moteur de recherche.
    Et oui! j'y ai pensé a $_POST que je préfererais d'ailleurs a $_GET

    J'ai un tableau dynamique avec un FOREACH

    donc, si je comprends bien, il s'agirait d'entourer mon tableau d'une balise FORM et le submit dans un bouton Annuler dans la colonne; mais alors il faudrait appeler seulement une partie de mon script.

    Peut-etre mettre cette partie du script a appeler sur une autre page et d'appeller la page avec 'ACTION' et ensuite de la placer en INCLUDE?

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    j'écrie &amp
    j'ai lu quelque part qu'il valait mieux écrire &amp que seulement ' &' pour limiter les injections SQL
    Ceci peut être un long débat, mais faut d'abord voir si coté php.ini c'est en phase/synchro, car cela va de paire (tonc code et le php.ini), sinon ça peu pas marcher.
    Voir les directives : arg_separator.output et arg_separator.input

    Mais surtout, faut peser le pour et le contre (avantage/inconvénient).

    Pour faire court, coté avantage :
    Le fait d'utiliser le passage des paramètres de manière différente de ce qui se fait en général peu effectivement dérouter un pirate, donc améliorer la sécurité.
    Mais les séquences &amp au lieu des & pourront très simplement être connu, suffit de survoler les liens où cliquer sur quelque uns pour le savoir.
    L'avantage devient ici très minime finalement.

    Mais l'inconvénient majeur que je vois, c'est que si un jour tu exploite des codes, genre Open source, on peu facilement admettre que ce sera fait pour toucher un maximum de codeurs, donc des & ou prévu pour.
    Et bien pour pouvoir l'exploiter, il te faudra l'éplucher pour le modifier, l'adapter, soit remplacer le & par ta séquence &amp.
    Imagine que le code soit volumineux et en plus complexe, comment tu fais ?

    A toi de voir si cela est judicieux.


    Y a rien avec print_r($_GET) ;
    As tu essayé avec des & (tout court) dans l'url ?
    As tu essayé de mettre qu'1 seul paramètre ? (ce qui évitera les & ou &amp)

    donc, si je comprends bien, il s'agirait d'entourer mon tableau d'une balise FORM et le submit dans un bouton Annuler dans la colonne; mais alors il faudrait appeler seulement une partie de mon script.
    C'était juste un conseil.
    Donc à toi de voir si tu adhère ou pas, voir aussi si ça ne va pas tout fracasser ton code, ce qui peu amener à le revoir après.
    En somme, tu as prévu de le faire avec un lien, et bien fais le comme ça dans un 1er temps, ce qui permettras de résoudre ton problème actuel.
    Le formulaire c'est finalement quasi pareil, ça sera POST au lieu de GET normalement.

    Peut-etre mettre cette partie du script a appeler sur une autre page et d'appeller la page avec 'ACTION' et ensuite de la placer en INCLUDE?
    Là je ne vois pas, j'en sais rien.
    Mais évite de rentrer dans des complication, genre include, commence par le début.
    Tu as un lien, et celui doit envoyer des données en paramètre, donc le serveur doit recevoir ces données.
    Résout déjà ça, car tu as un problème vu que tu ne reçois rien.
    Le reste, ça c'est ta cuisine.

  5. #5
    Membre expérimenté Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Par défaut
    Euuuuuuu bonjour à tous,


    le truc est dans ce bout de code (j'imagine )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo '<td align="center"><a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart="'.$info['id'].'>Annuler</a></td>';
    ?>
    Tu vois le " juste avant le '.$info['id']?

    C'est là le truc, à cause de ce " mal placé, tout tes liens seront sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart="12>Annuler</a>
    <a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart="135>Annuler</a>
    <a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart="1209>Annuler</a>
    <a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart="1933>Annuler</a>
    <a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart="2012>Annuler</a>
    la référence ne fera pas donc partie des url à visiter, et ton $_GET['RefDepart'] sera empty

    En conclusion (désolé pour ce long discourt ), ton code doit devenir ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo '<td align="center"><a href="transaction_annulation_dep.php?AnnuleDepart=ok&amp;RefDepart='.$info['id'].'">Annuler</a></td>';
    ?>

  6. #6
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    en plein dans le mille sayari.dev

    merci pour le long discours et ta précision sur le script!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer des liens sur un tableau dynamique
    Par SonnyFab dans le forum ASP.NET
    Réponses: 19
    Dernier message: 09/09/2010, 14h05
  2. D'où faire partir mon lien ?
    Par neo18045 dans le forum Langage
    Réponses: 6
    Dernier message: 27/05/2010, 09h59
  3. Réponses: 4
    Dernier message: 15/04/2010, 23h35
  4. Impossible de faire passer mon DataContext ! Une idée ?
    Par Cvbdev dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 07/02/2010, 23h30
  5. Réponses: 9
    Dernier message: 22/06/2006, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo